제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
섬프 레벨 모니터는 딸의 집이나 홈 모니터 프로젝트에 있는 Ecobee RSM-01 입력 보드와 함께 작동하도록 제작되었습니다. 단독으로 사용할 수 있도록 릴레이를 추가했습니다. 초음파 센서보다 더 안정적이고 설치하기 쉬운 제품을 원했습니다. 이를 위해 압력 센서에 대해 알아보기 시작했고 마침내 Freescale MPXV5010DP를 알게 되었습니다. 0-10kPa에 대해 0-5vdc 출력이 있으며 이는 수두의 약 1020mm가 됩니다.
국소적 표시를 원했기 때문에 디자인에 사용할 OLED 모듈을 선택했습니다. 저렴하고 밝으며 두 가지 색상의 화면이 있습니다. 인터페이스를 제공하기 위해 접점 출력용 릴레이를 추가했습니다. MPXV5010DP 센서보다 더 많은 전력으로 0-5vdc 출력을 위한 DAC(디지털-아날로그 변환기)를 추가했습니다. 이는 또한 가능한 배선 손상으로부터 센서를 보호합니다. I2C 통신을 사용하고 있기 때문에 다른 Arduino에 데이터를 공급하기 위한 소프트웨어 변경만 있으면 됩니다.
쉽게 연결할 수 있도록 맞춤형 보드를 설계하고 제작했습니다. 다양한 구성에 대해 충분한 유연성을 제공합니다.
센서는 섬프로 내려가는 구리 파이프에 타이곤 튜빙으로 연결됩니다. 이렇게 하면 모니터를 장착할 위치를 결정할 수 있으며 물 자체에서 멀리 떨어져 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">#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");}//끝
제조공정
이 Arduino 자습서에서는 Arduino 보드와 처리 개발 환경을 사용하여 이 멋진 레이더를 만드는 방법을 보여 드리겠습니다. 자세한 내용은 다음 동영상을 보거나 아래에 작성된 튜토리얼을 참조하세요. 개요 이 Arduino 프로젝트에 필요한 것은 물체를 감지하기 위한 초음파 센서, 센서를 회전시키기 위한 작은 취미 생활자 서보 모터 및 이를 제어하기 위한 Arduino 보드뿐입니다. 다음 동영상을 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.[/column] 이 Arduino 프로젝트에 필요한 구성요소 다음 사이트에서
수평계는 목수, 건축업자, 심지어 집에 있는 사람들이 그림을 걸기 위해 사용하는 매우 오래된 도구로 직선 또는 수직선을 결정하는 데 도움이 됩니다. 수평 방식으로 하나를 정렬할 때 목표는 레벨 중앙에 있는 소량의 액체에 있는 거품이 두 라인 사이의 중앙에 있도록 하는 것이기 때문에 이를 버블 레벨이라고도 합니다. 이렇게 하면 선이 직선인지 여부를 상당히 정확하게 알 수 있습니다. 수평계 수직선을 측정하기 위한 수준기 유형도 있으며, 이는 다소 다른 표준에 따라 작동할 수 있습니다. 위에서 언급했듯이 정신 수준은 확실히 고대입니다.