이 Arduino 기반 자동 수위 표시기 및 컨트롤러 프로젝트 에서는 초음파 센서를 사용하여 수위를 측정합니다. 초음파 거리 측정의 기본 원리는 ECHO를 기반으로합니다. 음파가 환경에서 전송되면 장애물을 치면 ECHO로 원점으로 돌아갑니다. 그래서 우리는 두 소리의 이동 시간 만 계산하면 나가는 시간과 장애물에 부딪힌 후 원점으로 돌아 오는 시간을 의미합니다. 그리고 몇 가지 계산 후에 우리는 거리라는 결과를 얻을 수 있습니다. 이 개념은 탱크의 수위가 낮아지면 워터 모터 펌프가 자동으로 켜지는 워터 컨트롤러 프로젝트에 사용됩니다. 이 프로젝트의 간단한 버전을 위해이 간단한 수위 표시기 회로를 확인할 수도 있습니다.
구성품
- Arduino Uno
- 초음파 센서 모듈
- 16x2 LCD
- 릴레이 6 볼트
- ULN2003
- 7806
- PVT
- 구리 와이어
- 9V 배터리 또는 12Voltadaptor
- 전선 연결
초음파 센서 모듈
초음파 센서 HC-SR04는 3mm의 정확도로 2cm-400cm 범위의 거리를 측정하는 데 사용됩니다. 센서 모듈은 초음파 송신기, 수신기 및 제어 회로로 구성됩니다.
초음파 센서 모듈은 소리의 에코의 자연 현상에 작용합니다. 모듈을 트리거하기 위해 약 10us 동안 펄스가 전송됩니다. 그 후에 모듈은 40KHz 초음파 신호의 8주기를 자동으로 전송하고 에코를 확인합니다. 장애물에 부딪힌 후 신호는 되돌아와 수신기에 포착됩니다. 따라서 센서에서 장애물까지의 거리는 다음 공식으로 간단히 계산됩니다.
거리 = (시간 x 속도) / 2.
여기서 우리는 속도와 시간의 곱을 2로 나누었습니다. 시간은 장애물에 도달하고 돌아 오는 데 걸린 총 시간이기 때문입니다. 따라서 장애물에 도달하는 시간은 총 소요 시간의 절반에 불과합니다.
자동 수위 조절기 작동
이 프로젝트의 작업은 매우 간단합니다. 우리는 물 탱크에 음파를 보내 ECHO 인 음파의 반사를 감지하는 초음파 센서 모듈을 사용했습니다. 먼저 Arduino를 사용하여 신호를 전송하도록 초음파 센서 모듈을 트리거 한 다음 ECHO를 수신 할 때까지 기다려야합니다. Arduino는 트리거링과 수신 된 ECHO 사이의 시간을 읽습니다. 우리는 음속이 약 340m / s라는 것을 알고 있습니다. 따라서 주어진 공식을 사용하여 거리를 계산할 수 있습니다.
거리 = (이동 시간 / 2) * 음속
음속은 초당 약 340m입니다.
이 방법을 사용하여 센서에서 수면까지의 거리를 얻습니다. 그 후에 우리는 수위를 계산해야합니다.
이제 물 탱크의 총 길이를 계산해야합니다. 수조의 길이를 알기 때문에 수조의 전체 길이에서 초음파에서 나오는 거리를 빼서 수위를 계산할 수 있습니다. 그리고 우리는 수위 거리를 얻을 것입니다. 이제이 수위를 물의 비율로 변환하여 LCD에 표시 할 수 있습니다. 전체 수위 표시기 프로젝트 의 작업은 아래 블록 다이어그램에 나와 있습니다.
회로도 및 설명
아래의 수위 컨트롤러 회로 에서 볼 수 있듯이 초음파 센서 모듈의 "트리거"및 "에코"핀은 arduino의 핀 10 및 11에 직접 연결됩니다. 16x2 LCD는 4 비트 모드에서 arduino와 연결됩니다. 제어 핀 RS, RW 및 En은 arduino 핀 7, GND 및 6에 직접 연결되고 데이터 핀 D4-D7은 arduino의 5, 4, 3 및 2에 연결되고 부저는 핀 12에 연결됩니다. 6 볼트 릴레이는 또한 워터 모터 펌프를 켜거나 끄기 위해 ULN2003 을 통해 arduino의 핀 8에 연결됩니다. 전압 조정기 7805는 릴레이 및 나머지 회로에 5 볼트를 제공하는데도 사용됩니다.
이 회로에서 초음파 센서 모듈은 데모를 위해 버킷 (물 탱크)의 상단에 배치됩니다. 이 센서 모듈은 센서 모듈과 수면 사이의 거리를 읽고“Water Space in Tank is:”메시지와 함께 LCD 화면에 거리를 표시합니다. 그것은 우리가 여기에 수위 대신 물의 거리 나 부피의 빈 공간을 보여주고 있다는 것을 의미합니다. 이 기능 덕분에 우리는이 시스템을 모든 물 탱크에서 사용할 수 있습니다. 빈 수위가 약 30cm 거리에 도달하면 Arduino는 릴레이를 구동하여 워터 펌프를 켭니다. 이제 LCD에“저수위”“모터 켜짐”이 표시되고 릴레이 상태 LED가 켜집니다.
이제 빈 공간이 약 12cm 거리에 도달하면 arduino가 릴레이를 끄고 LCD에 "Tank is full" "Motor Turned OFF"가 표시됩니다. 부 저도 일정 시간 동안 울리고 릴레이 상태 LED가 꺼집니다.
프로그램 작성
수위 컨트롤러 용 Arduino를 프로그래밍하려면 먼저 릴레이, LCD, 부저 등과 같은 외부 장치를 인터페이스하기 위해 프로젝트에서 사용할 모든 핀을 정의합니다.
# 트리거 정의 10 # 에코 정의 11 # 모터 정의 8 # 부저 정의 12
그런 다음 프로젝트에 사용 된 모든 장치를 초기화합니다.
lcd.begin (16,2); pinMode (trigger, OUTPUT); pinMode (echo, INPUT); pinMode (모터, OUTPUT); pinMode (부저, OUTPUT); lcd.print ("수위"); lcd.setCursor (0,1); lcd.print ("표시기"); 지연 (2000);
이제 초음파 센서 모듈을 초기화하고 pulseIn (pin)을 사용하여 초음파 또는 소리의 송수신 시간을 읽어보십시오. 그런 다음 적절한 기능을 사용하여 계산을 수행하고 결과를 16x2 LCD에 표시합니다.
digitalWrite (트리거, HIGH); delayMicroseconds (10); digitalWrite (트리거, LOW); delayMicroseconds (2); 시간 = pulseIn (에코, HIGH); 거리 = 시간 * 340 / 20000; lcd.clear (); lcd.print ("Water Space In"); lcd.setCursor (0,1); lcd.print ("Tank is:"); lcd.print (거리); lcd.print ("Cm");
그 후 물 탱크가 가득 차거나 수위가 LOW인지 확인하고 그에 따른 조치를 취합니다.
if (거리 <12 && 온도 == 0) {digitalWrite (모터, LOW); digitalWrite (부저, HIGH); lcd.clear (); lcd.print ("물 탱크 가득 참"); lcd.setCursor (0,1); lcd.print ("모터 꺼짐"); 지연 (2000); digitalWrite (부저, LOW); 지연 (3000); temp = 1; } else if (거리 <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("물 탱크 가득 참"); lcd.setCursor (0,1); lcd.print ("모터 꺼짐"); 지연 (5000); }