산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

저수조 레벨 모니터

구성품 및 소모품

Arduino Nano R3
× 1
프리스케일 MPXV5010DP
× 1
0.96" OLED 화면
× 1
MCP4725 DAC
× 1
릴레이(일반)
× 1
커패시터 1uf, .01uf, 470pf 모든 SMD
× 1
플라스틱 투명 프로젝트 상자 110mm*85mm
× 1
타이곤 튜빙 3/32"
× 1

이 프로젝트 정보

섬프 레벨 모니터는 딸의 집이나 홈 모니터 프로젝트에 있는 Ecobee RSM-01 입력 보드와 함께 작동하도록 제작되었습니다. 단독으로 사용할 수 있도록 릴레이를 추가했습니다. 초음파 센서보다 더 안정적이고 설치하기 쉬운 제품을 원했습니다. 이를 위해 압력 센서에 대해 알아보기 시작했고 마침내 Freescale MPXV5010DP를 알게 되었습니다. 0-10kPa에 대해 0-5vdc 출력이 있으며 이는 수두의 약 1020mm가 됩니다.

국소적 표시를 원했기 때문에 디자인에 사용할 OLED 모듈을 선택했습니다. 저렴하고 밝으며 두 가지 색상의 화면이 있습니다. 인터페이스를 제공하기 위해 접점 출력용 릴레이를 추가했습니다. MPXV5010DP 센서보다 더 많은 전력으로 0-5vdc 출력을 위한 DAC(디지털-아날로그 변환기)를 추가했습니다. 이는 또한 가능한 배선 손상으로부터 센서를 보호합니다. I2C 통신을 사용하고 있기 때문에 다른 Arduino에 데이터를 공급하기 위한 소프트웨어 변경만 있으면 됩니다.

쉽게 연결할 수 있도록 맞춤형 보드를 설계하고 제작했습니다. 다양한 구성에 대해 충분한 유연성을 제공합니다.

센서는 섬프로 내려가는 구리 파이프에 타이곤 튜빙으로 연결됩니다. 이렇게 하면 모니터를 장착할 위치를 결정할 수 있으며 물 자체에서 멀리 떨어져 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 저수조 레벨 모니터
  • 저수조 레벨 모니터C/C++
    필요에 따라 구문 분석하고 이 버전의 추가 쓰레기는 원하는 대로 처리하고 정리합니다.
    #include #include  #include #include  #include #include #define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET);#if (SSD1306_LCDHEIGHT !=64)#error("높이가 잘못되었습니다. Adafruit_SSD1306_5.h4를 수정하세요. Adafruit_SSD1306#.h4!";int 릴레이핀 =5; // 릴레이 알람 출력용 int analogPin =0; //dac 출력 전압 측정int v1 =0; // MPXV5010int v2 =0의 ADC 출력; // dac 입력에 대한 스케일링은 PS 입력에서 dac 입력으로 변환합니다. inputint v3 =0; //PS 입력에서 mm 변환용 int v4 =0; // PS inputint v5 =0의 깊이 백분율에 대해; // arduinoint에서 읽은 dac의 출력 v6 =0; // PS inputfloat v7 =0에서 mV 변환을 위해; //mm에서 인치로 변환int v8 =0; // 디스플레이를 폐기하는 인치 소수점을 제거하기 위해 int offSet =40; //arduinoint maxSet =1015로 측정한 0kPa 출력; // arduinoint maxHeight =1020으로 측정한 10kPa 출력; // 일반 수위에서 뚜껑까지의 섬프 깊이(mmint 범위) =(maxHeight * 0.8) + offSet;int alarmHeight =12; // 알람 높이(인치)// MPXV5010DP 차압 sensorint analogPin2 =1;float divisor =25.4; //디스플레이를 인치로 변환하기 위해 무효 setup() { Serial.begin(9600); Serial.println("DP 센서로 DAC 테스트"); // 기본적으로 내부적으로 3.3v 라인에서 고전압을 생성합니다! (깔끔!) display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C addr 0x3D로 초기화(128x64용) // 초기화 완료 // 버퍼를 지웁니다. display.clearDisplay(); // MCP4725A0의 경우 주소는 0x60 또는 0x61입니다. dac.begin(0x60); 핀모드(릴레이핀, 출력); digitalWrite(relayPin, HIGH);} 무효 루프() { v1 =analogRead(analogPin2); 지연(1000); if (v1 <오프셋){v1 =오프셋;} //v2=((v1-40)*1.4); v2 =맵(v1, 오프셋, 최대 세트, 0, 4095); // dac 입력이 PS 입력에서 dac 입력으로 변환되는 경우 dac.setVoltage(v2,false); //v3 =map(v1, offset, maxSet, 0, 1020); // PS 입력에서 mm 변환 v3 =(v1 - offSet) / 0.8; v7 =v3/제수; //mm에서 인치로 변환 v8 =round (v7); // 디스플레이를 폐기하는 인치 소수점을 제거하기 위해 v4 =map(v1, offSet,ranging, 0, 100); // PS 입력의 깊이 비율 v5 =analogRead(analogPin); // arduino 0-1023 범위에서 읽은 dac의 출력 v6 =map(v5, 0, 1023, 0, 5000); //PS 입력에서 mV 변환용 printoled(); serial();}void printoled() { // 버퍼를 지웁니다. display.clearDisplay(); // LOW 신호로 알람 및 픽업 릴레이 표시를 반전합니다. if(v8> alarmHeight) { display.invertDisplay(true); digitalWrite(relayPin,LOW);} else { display.invertDisplay(false); digitalWrite(relayPin,HIGH);} display.setTextSize(2); display.setTextColor(흰색); display.setCursor(0,0); display.println("합계 레벨"); //display.setTextColor(검정, 흰색); // '반전' 텍스트 display.setTextSize(4); display.setTextColor(흰색); display.print(v8); display.setTextSize(2); display.println("인치"); 디스플레이.디스플레이(); 지연(500); }void serial(){ //디버깅 및 보정용 Serial.print(" PS analog input:"); Serial.print(v1); Serial.print( " 높이:"); Serial.print(v3); Serial.print(" mm "); Serial.print(v4); Serial.print(" %"); Serial.print(" 변환된 전압:"); Serial.print(v6); Serial.println(" mV");}//끝

    회로도

    중고 Eagle 6.5.0 섬프%20level.sch

    제조공정

    1. C# 변수 범위
    2. DIY 환경 및 대기 질 모니터
    3. 매트릭스 음성 구글 어시스턴트 – 매트릭스 음성 프로젝트
    4. 날씨 모니터
    5. 원격 심박수 모니터
    6. Rover
    7. Windows IoT 기반 GoPiGo v2
    8. 게이트 레벨 모델링
    9. JW머신
    10. 선반의 수평을 맞추는 방법