Merhaba arkadaşlar, bugünkü yazımız da arduino ile otomatik
Kırsal alanlarda yaşayanlar için su sıkıntısı çok yaygın bir sorundur. Bu nedenle, birçok kişi su deposu kullanıyor. Alt katlarda bulunan veya yer altına montelenmiş bir su tankında depolanan su, su pompası kullanılarak musluklara pompalanır. Kuruluma, otomatik su deposu pompa kontrolörü dahil edilirse, sınırlı su mevcudiyeti sorunu iyileştirilebilir ve su daha verimli bir şekilde kullanılabilir.
Su seviye anahtarı kullanımı basit ve düşük maliyet avantajlarına sahiptir. Geleneksel su seviye kontrolörü, seviye tespiti için sensör olarak yüzen toplar / şamandıra anahtarı yardımıyla suyu iki seviye arasında kontrol edebilir. Yüzen bilya / şamandıra anahtarının konumlarına göre, pompa motorunun elektrik bağlantısı açık veya kapalı olacak şekilde ayarlanmıştır. Bununla birlikte, kontrol ünitesi genellikle su tankının üstüne yerleştirilir. Bu da nem sensör anahtarının temas noktalarını aşındırabilir ve sensör anahtarının hatalı çalışmasına neden olabilir. Bu arada, yeraltına yerleştirilmiş su deposunun su seviyesini bakarak tespit etmenin bir yolu olmadığından, su deposunda çok düşük veya sıfır su seviyesi varsa pompalama motorunun yanması çok yüksek ihtimaldir.
Bu durumdan muzdarip olmamak için birçok kişi su seviyesini akıllı bir şekilde tespit etmek ve kontrol etmek için su seviye anahtarı sistemi kullanmayı tercih eder. Siz de bu şekilde bir kuruluma ihtiyaç duyuyorsanız işte size AVR mikrodenetleyici Atmega328P-PU kullanılarak gerçekleştirilen basit ama etkili bir su deposu pompa anahtarlama devresi. Devre, su tankındaki su seviyesini öngörülen sınırlar içinde tutmak için kullanılabilir. Böylece su seviyesinin çok azalarak motoru yakmasının önüne geçebilir ve aynı zamanda su deposunda su olduğundan emin olursunuz.
Otomatik Su Deposu Seviye Anahtarı Kullanımı - Donanım
Arduino ile Otomatik Su Seviye Anahtarı Kullanarak Su Deposu Yapımı Projesi Malzemeleri:
Mikrodenetleyici Birimi: Burada gösterilen devre de, işlemci olarak bir Atmega328P-PU, sistem durumunu görüntülemek için bir dizi LED, otomatik / manuel mod seçimi için bir düğme anahtarı, pompalama motorunun sürücüsü olarak bir elektromanyetik röle ve diğer birkaç harici bileşen mevcuttur. Temel tasarım fikri, su seviyesi tespiti için
fdti programlama kartı'nın iki portunu, otomatik/manuel mod anahtarı seçimi için, bir portu görsel durum göstergesi için ayarlayalım. Mikrodenetleyicinin E
2 PROM depolama seçeneğinin de burada kullanıldığına dikkat edin.
Su Seviyesi Sensörleri
Su deposu,
seviye sensörü,
şamandıralı anahtar'dan oluşur. Sapın içinde bulunan hermetik olarak kapatılmış cam kamış anahtarları, şamandıranın kuyruk parçasındaki güçlü mıknatısın yukarı / aşağı hareketi ile etkinleştirilir / devre dışı bırakılır.
Güç Kaynağı Ünitesi: Devre, 9 - 12 V aralığında dc voltaj ile çalışacaktır ve bu nedenle, tüm sisteme enerji vermek için
9v pil ve
pil başlığı kullanılabilir.
Su Seviye Anahtarı Kullanımı - Sistem Açıklaması
Belirtildiği gibi, su tankının su seviyesini okumak için biri düşük seviye (L) diğeri yüksek (H) seviye iki sensör vardır. İki sensörü de aktive edecek manyetik bir şamandıra anahtarı kullanın, böylece şamandıra (mıknatıslı) L ve H sensörlerinin önündeki hareket ile sistemi sonlandırsın. L sensörü mikrodenetleyici girişini tetiklerse, su pompası etkinleştirilir,
BEKLEME gösterge
LED'i söner ve LED üzerindeki
POMPA AÇIK yanar. H seviyesine ulaşıldığında, yani H sensörü mikrodenetleyici girişini tetiklediğinde, su pompası devre dışı bırakılır ve
POMPA AÇIK göstergesi söner,
BEKLEME göstergesi tekrar yanar. Su pompası yalnızca su L seviyesine düştüğünde yeniden etkinleştirilir. Ayrıca, otomatik modda, (isteğe bağlı) üçüncü sensör (kuru çalışma sensörü) su tankına takılırsa, sensör (G), sisteme su tankında su olmadığını bildirmek için mikrodenetleyici girişini tetikler. Sonuç olarak, sistem su pompasının elektrik motorunu korumak için su pompasını derhal devre dışı bırakır.
Su Seviyesi Sensörü
Sistem Otomatik / Manuel çalışma özelliğine sahiptir.
AUTO modunda su pompası durur, ardından maksimum su seviyesine (H) ulaşılır.
MANUEL modda, su seviyesi algılama işlemi geçersiz kılınır ve su pompası sürekli çalışmaya devam eder. Aynı anda,
MANUAL modu gösterge
LED'i bir uyarı göstergesi olarak yanar.
Devre Tanımı
Bu devredeki Atmega328P-PU (IC1) yongası, bir Arduino UNO yongasıdır, yani IC1, Arduino IDE kullanılarak hazırlanan ve işlenen küçük bir kodu tutar. Anahtar S1, Arduino kartta bulunan geleneksel sıfırlama anahtarıdır. Burada IC1'in PD2, PD4 ve PD7 portları (Arduino'nun D2, D4, D7) giriş portları olarak yapılandırılır ve PB0, PB4 ve PB5 portları (Arduino'nun D8, D12, D13) çıkış portları olarak yapılandırılır. PD2 portu AUTO / MAN modu seçim anahtarına bağlıdır. Su seviye sensörleri PD4 ve PD5 portları tarafından okunur. Bağlantı noktası PB5, su pompası motorunu sürücü transistörü (T1) yardımıyla bir elektromanyetik rölesi (RL1) ile kontrol etmek için kullanılır. Kalan çıkış portları (PB0 ve PB5) sistem durum göstergelerini (LED1 ve LED2) çalıştırmak için kullanılır. IC1 (önceden yüklenmiş Arduino UNO Bootloader ile birlikte), yaygın olarak bulunan bir programlama kartı (usb-seri dönüştürücü kartı) kullanılarak seri arayüz soketi J3 aracılığıyla programlanabilir. Su tankının üst/limit su seviye sensörü ve alt/limit su seviye sensörü, sırasıyla J1 ve J2 soketleri aracılığıyla devreye bağlanabilir. Soket J4, sisteme yerleşik voltaj regülatör yongası (IC2) tarafından önceden işlenmiş, düzenlenmiş bir 5VDC kaynağı ile güç sağlandığı DC giriş soketidir. LED4, güç kaynağı durumu (açık / kapalı) göstergesi olarak çalışır.
Yazılım Tanımı
Devre şemasından (donanım), çok az harici bileşene ihtiyaç duyulduğu görülebilir. Ayrıca, daha fazla işlev eklenecekse yazılımın değiştirilmesi kolaydır. Bu, tasarımın esnekliğini ve sorumluluğunu artıracaktır. İşte Arduino IDE'de hazırlanan mikrodenetleyicinin ana mantığı:
/*
*Smart Water Tank Pump Switcher
*An Arduino-Based Project
*Designed by T.K.Hareendran
*Tested @ TechNode PROTOLABZ
*IDE: Arduino 0022 / Board:Arduino UNO-R3 / Chip: ATmega328P-PU
*Date: November 14,2014
*Source: https://www.electroschematics.com
*/
#include
#define inputLevel1 4 //Tank Level-Low
#define inputLevel2 7 //Tank Level-High
#define modeSwitch 2 //Auto/Manual Mode Switch
// OUTPUT PINS
#define statLED 8 //System Status Indicator
#define modeLED 12 //Auto/Manual Mode Indicator
#define driveOutput 13 //Water Pump Swicth Output
#define memposL1 0 //Set constant eeprom position 0 to save Level1
int state=0;
int level = 0;
int lastlevel = 0;
void setup (){
pinMode(modeSwitch,INPUT);
pinMode(inputLevel1,INPUT);
pinMode(inputLevel2,INPUT);
digitalWrite(modeSwitch, HIGH);
digitalWrite(inputLevel1, HIGH);
digitalWrite(inputLevel2, HIGH);
pinMode(driveOutput, OUTPUT);
pinMode(statLED, OUTPUT);
pinMode(modeLED, OUTPUT);
level = EEPROM.read(memposL1);
lastlevel = level;
if ((level == 0)||(level>2)) {
level=1;
refreshmem();
}
visualdrive();
delay(1000);
pumpdrive();
}
void visualdrive() {
digitalWrite(statLED, LOW );
if (level >1) digitalWrite(statLED, HIGH );
}
void pumpdrive(){
if (level < 2) digitalWrite(driveOutput, HIGH );
if ((level == 2) & (state == 0)) {
digitalWrite(driveOutput, LOW );
}
else {
digitalWrite(driveOutput, HIGH );
}
}
void refreshmem() {
lastlevel = level;
EEPROM.write(memposL1, level);
}
void loop () {
if ( (digitalRead(modeSwitch) == LOW) & (state == 0) ) {
state=1;
digitalWrite(modeLED, state );
pumpdrive();
delay(400);
}
if ( (digitalRead(modeSwitch) == LOW) & (state == 1) ) {
state=0;
digitalWrite(modeLED, state );
pumpdrive();
delay(400);
}
if ( digitalRead(inputLevel1) == LOW ) {
level = 1;
}
if ( digitalRead(inputLevel2) == LOW ) {
level = 2;
}
if (level != lastlevel) {
visualdrive();
pumpdrive();
refreshmem();
}
}
Arduino kartındaki mikro denetleyicide, kart kapatıldığında değerleri tutan EEPROM (E
2 PROM) belleği vardır. EEPROM kütüphanesi bu byte'ları okumanıza ve yazmanıza olanak tanır. Atmega328 mikrodenetleyicisinin kapasitesi 1024 byte'dır.