- Bileşenler
- Ultrasonik Sensör Modülü
- Otomatik Su Seviye Kontrol Cihazının Çalışması
- Devre Şeması ve Açıklama
- Programlama
Bu Arduino tabanlı otomatik su seviyesi göstergesi ve kontrolör projesinde su seviyesini ultrasonik sensörler kullanarak ölçeceğiz. Ultrasonik mesafe ölçümünün temel prensibi ECHO'ya dayanır. Ses dalgaları ortama iletildiğinde, herhangi bir engele çarptıktan sonra ECHO olarak başlangıç noktasına geri dönerler. Bu yüzden, her iki sesin de yolculuk süresini sadece giden zaman ve herhangi bir engele çarptıktan sonra başlangıç noktasına geri dönme zamanı anlamına gelir. Ve bir miktar hesaplamadan sonra mesafe olan bir sonuç elde edebiliriz. Bu konsept, tanktaki su seviyesi düştüğünde su motoru pompasının otomatik olarak açıldığı su kontrolör projemizde kullanılmaktadır. Bu projenin daha basit bir versiyonu için bu basit su seviyesi göstergesi devresini de kontrol edebilirsiniz.
Bileşenler
- Arduino Uno
- Ultrasonik sensör Modülü
- 16x2 LCD
- Röle 6 Volt
- ULN2003
- 7806
- PVT
- Bakır kablo
- 9 voltluk pil veya 12 Voltadaptor
- Bağlantı telleri
Ultrasonik Sensör Modülü
Ultrasonik sensör HC-SR04, 2cm-400cm aralığındaki mesafeyi 3mm hassasiyetle ölçmek için kullanılır. Sensör modülü; ultrasonik verici, alıcı ve kontrol devresinden oluşur.
Ultrasonik sensör modülü, sesin ECHO'sunun doğal fenomeni üzerinde çalışır. Modülü tetiklemek için yaklaşık 10 us için bir darbe gönderilir. Daha sonra modül otomatik olarak 8 döngü 40 KHz ultrason sinyali gönderir ve yankısını kontrol eder. Bir engele çarptıktan sonra sinyal geri döner ve alıcı tarafından yakalanır. Böylece, engelin sensörden uzaklığı aşağıdaki formülle basitçe hesaplanır:
Mesafe = (zaman x hız) / 2.
Burada hız ve zamanın çarpımını 2'ye böldük çünkü zaman engele ulaşmak ve geri dönmek için geçen toplam süredir. Böylece engele ulaşma süresi, harcanan toplam sürenin sadece yarısıdır.
Otomatik Su Seviye Kontrol Cihazının Çalışması
Bu projenin çalışması çok basit, su tankındaki ses dalgalarını gönderen ve ECHO olan ses dalgalarının yansımasını algılayan Ultrasonik sensör modülü kullandık. Öncelikle Arduino kullanarak sinyal iletmek için ultrasonik sensör modülünü tetiklemeli ve ardından ECHO'yu almayı beklemeliyiz. Arduino, tetikleme ile ECHO alınması arasındaki süreyi okur. Ses hızının 340 m / s civarında olduğunu biliyoruz. böylece verilen formülü kullanarak mesafeyi hesaplayabiliriz:
Mesafe = (seyahat süresi / 2) * ses hızı
Ses hızının saniyede yaklaşık 340 m olduğu yerde.
Bu yöntemleri kullanarak sensörden su yüzeyine olan mesafeyi alıyoruz. Bundan sonra su seviyesini hesaplamamız gerekiyor.
Şimdi su deposunun toplam uzunluğunu hesaplamamız gerekiyor. Su tankının uzunluğunu bildiğimiz için, ultrasonikten gelen sonuç mesafesini tankın toplam uzunluğundan çıkararak su seviyesini hesaplayabiliriz. Ve su seviyesi mesafesini alacağız. Şimdi bu su seviyesini su yüzdesine çevirebilir ve LCD'de görüntüleyebiliriz. Tam çalışma su seviye göstergesi proje blok diyagramın altında gösterilmiştir.
Devre Şeması ve Açıklama
Aşağıda verilen su seviye kontrol devresinde gösterildiği gibi, Ultrasonik sensör modülünün "tetik" ve "yankı" pinleri doğrudan arduino'nun 10 ve 11 numaralı pinlerine bağlanır. 4 bit modunda arduino ile 16x2 LCD bağlanır. Kontrol pini RS, RW ve En direk olarak arduino pini 7, GND ve 6'ya bağlanır. Veri pini D4-D7 ise arduino'nun 5, 4, 3 ve 2 numaralı pimlerine bağlanır ve zil 12 pimine bağlanır. 6 Volt röle Ayrıca yoluyla arduino pimi 8 bağlanır ULN2003 açmadan veya su motorlu pompa kapatmak için. Röleye ve kalan devreye 5 volt sağlamak için bir voltaj regülatörü 7805 de kullanılır.
Bu devrede Ultrasonik sensör modülü, gösterim için kovanın (su tankı) üstüne yerleştirilmiştir. Bu sensör modülü, sensör modülü ile su yüzeyi arasındaki mesafeyi okuyacak ve “Tanktaki Su Boşluğu:” mesajı ile LCD ekranda mesafeyi gösterecektir. Bu, su seviyesi yerine su için boş bir mesafe veya hacim gösterdiğimiz anlamına gelir. Bu işlevsellik nedeniyle bu sistemi herhangi bir su tankında kullanabiliriz. Boş su seviyesi yaklaşık 30 cm mesafeye ulaştığında Arduino, röle sürerek su pompasını açar. Ve şimdi LCD "DÜŞÜK Su Seviyesi" "Motor AÇIK" gösterecek ve Röle durum LED'i yanmaya başlayacaktır.
Şimdi boş alan yaklaşık 12 cm mesafeye ulaşırsa, arduino röleyi KAPATIR ve LCD "Tank dolu" "Motor KAPALI" mesajını gösterir. Buzzer ayrıca bir süre bip sesi çıkarır ve röle durum LED'i söner.
Programlama
Arduino'yu su seviye kontrolörü için programlamak için öncelikle projede kullanacağımız tüm pinleri röle, LCD, zil vb. Harici cihazlarla arayüz oluşturmada tanımlıyoruz.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
Ardından projede kullanılan tüm cihazları başlatıyoruz.
lcd.begin (16,2); pinMode (tetikleyici, ÇIKIŞ); pinMode (echo, INPUT); pinMode (motor, ÇIKIŞ); pinMode (buzzer, OUTPUT); lcd.print ("Su Seviyesi"); lcd.setCursor (0,1); lcd.print ("Gösterge"); gecikme (2000);
Şimdi ultrasonik sensör modülünü başlatın ve pulseIn (pin) kullanarak ultrasonik dalgaların veya sesin gönderme ve alma zamanını okuyun. Ardından hesaplamaları yapın ve sonucu uygun işlevleri kullanarak 16x2 LCD ekranda görüntüleyin.
digitalWrite (tetikleyici, YÜKSEK); gecikme Mikrosaniye (10); digitalWrite (tetikleyici, DÜŞÜK); gecikme Mikrosaniye (2); zaman = pulseIn (eko, YÜKSEK); mesafe = zaman * 340/20000; lcd.clear (); lcd.print ("Su Boşluğu Giriş"); lcd.setCursor (0,1); lcd.print ("Tank:"); lcd.print (mesafe); lcd.print ("Cm");
Sonrasında su deposunun dolu mu yoksa su seviyesinin DÜŞÜK mü olduğu durumları kontrol ediyor ve buna göre aksiyon alıyoruz.
eğer (mesafe <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (zil, YÜKSEK); lcd.clear (); lcd.print ("Su Deposu Dolu"); lcd.setCursor (0,1); lcd.print ("Motor KAPALI"); gecikme (2000); digitalWrite (zil, DÜŞÜK); gecikme (3000); temp = 1; } else if (mesafe <12 && temp == 1) {digitalWrite (motor, DÜŞÜK); lcd.clear (); lcd.print ("Su Deposu Dolu"); lcd.setCursor (0,1); lcd.print ("Motor KAPALI"); gecikme (5000); }