Ultrasonik Kablosuz Su Seviye Göstergesi - Güneş Enerjili

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Ultrasonik su seviyesi kontrolörü, bir tanktaki su seviyelerini fiziksel temas olmadan tespit edebilen ve verileri kablosuz bir GSM modunda uzaktaki bir LED göstergesine gönderebilen bir cihazdır.

Bu yazıda, Arduino'ların 2.4 GHz kablosuz frekansta gönderip alacağı Arduino kullanarak ultrasonik tabanlı güneş enerjili kablosuz su seviyesi göstergesi oluşturacağız. Tanktaki su seviyesini geleneksel elektrot yöntemi yerine ultrasonik kullanarak tespit edeceğiz.



Genel Bakış

Bir eviniz varsa veya hatta kiralık bir evde yaşıyorsanız, su seviyesi göstergesi mutlaka sahip olunması gereken bir araçtır. Bir su seviyesi göstergesi enerji sayacınızın okuması kadar önemli olan eviniz için önemli bir veriyi gösterir, yani ne kadar su kaldı? Böylece su tüketimini takip edebiliriz ve ne kadar su kaldığını kontrol etmek için su tankına erişmek için yukarı çıkmamıza gerek kalmaz ve artık musluktan su aniden durmaz.

2018'de yaşıyoruz (bu makalenin yazıldığı sırada) ya da daha sonra, dünyanın herhangi bir yeriyle anında iletişim kurabiliyoruz, uzaya elektrikli bir yarış arabası fırlattık, uyduları ve gezileri mars'a fırlattık, hatta insanı karaya çıkardık. aydaki varlıklar, su depolarımızda ne kadar su kaldığını tespit etmek için hala uygun bir ticari ürün yok mu?



Okulda bilim fuarı için 5. sınıf öğrencileri tarafından yapılan su seviyesi göstergelerini bulabiliriz. Bu kadar basit projeler günlük hayatımıza nasıl girmedi? Cevap, su deposu seviye göstergeleri, 5. sınıf öğrencilerinin evimiz için yapabileceği basit projeler değildir. Çok var pratik hususlar biz bir tane tasarlamadan önce.

• Daha sonra su sızdırabilecek elektrotlar için kimse su tankının gövdesine delik açmak istemez.
• Kimse su tankının yakınında 230/120 VAC kablo çekmek istemez.
• Kimse her ay pil değiştirmek istemez.
• Ev inşa edilirken önceden planlanmadığı için hiç kimse su seviyesi göstergesi için bir odaya asılan ek uzun kablolar döşemek istemez.
• Elektrodun metal korozyonu ile karışan suyu kimse kullanmak istemez.
• Tankı (içini) temizlerken kimse su seviyesi göstergesi kurulumunu kaldırmak istemez.

Yukarıda belirtilen nedenlerden bazıları saçma görünebilir, ancak bu eksilere sahip ticari olarak mevcut ürünlerle daha az tatmin edici bulacaksınız. Bu nedenle, bu ürünlerin penetrasyonu ortalama hanehalkları arasında çok daha azdır *.
* Hindistan pazarında.

Bu kilit noktaları düşündükten sonra, bahsedilen eksileri ortadan kaldıracak pratik bir su seviyesi göstergesi tasarladık.

Tasarımımız:

• Su seviyesini ölçmek için ultrasonik sensör kullanır, böylece korozyon sorunu olmaz.
• Su seviyesinin gerçek zamanlı olarak 2,4 GHz'de kablosuz göstergesi.
• 2 katlı yüksek binalar için yeterli olan iyi kablosuz sinyal gücü.
• Artık AC şebekesi veya pili değiştirmeden güneş enerjili.
• Tankı doldururken tank dolu / taşma alarmı.

Devre ayrıntılarını inceleyelim:

Verici:

kablosuz verici devresi Depo üzerine yerleştirilen kart, her 5 saniyede bir 7/24 su seviyesi bilgisi gönderecektir. Verici, verici ve alıcıyı kablosuz olarak 2,4 GHz'de bağlayacak Arduino nano, ultrasonik sensör HC-SR04, nRF24L01 modülünden oluşur.

Akım çıkışı 300mA olan 9 V ila 12 V'luk bir Güneş paneli, verici devresine güç sağlayacaktır. Bir pil yönetimi devre kartı Li-ion pili şarj eder, böylece güneş ışığı olmadığında bile su seviyesini izleyebiliriz.

Ultrasonik sensörün su tankına nasıl yerleştirileceğini keşfedelim:

Lütfen devreyi birleştirmek ve yağmurdan ve doğrudan güneş ışığından korumak için yaratıcılığınızı kullanmanız gerektiğini unutmayın.

Ultrasonik sensörü yerleştirmek için tank kapağının üzerinde küçük bir delik açın ve bulabileceğiniz bir tür yapıştırıcıyla kapatın.

ultrasonik sensörün bir su tankına yerleştirilmesi

Şimdi tankın alttan kapağa tam yüksekliğini ölçün, metre cinsinden yazın. Şimdi yukarıdaki resimde gösterildiği gibi tankın su tutma kapasitesinin yüksekliğini ölçün ve metre cinsinden yazın.
Bu iki değeri koda girmeniz gerekir.

Vericinin şematik diyagramı:

su seviyesi kontrolü için ultrasonik verici bağlantıları

NOT: nRF24L01, Vcc Arduino'nun 5V çıkışına bağlanmadığından 3.3V kullanır.

Verici için güç kaynağı:

ultrasonik su seviyesi kontrolörü güç kaynağı tasarımı

Güneş panelinizin çıkış gücünün, yani çıkışın (volt x akım) 3 watt'tan büyük olduğundan emin olun. Güneş paneli 9V ila 12V olmalıdır.

Piyasada kolaylıkla bulabileceğiniz 12V ve 300mA panel tavsiye edilmektedir. Pil 3.7V 1000 mAh civarında olmalıdır.

5V 18650 Li-ion şarj modülü:

Aşağıdaki resimde bir standart gösterilmektedir 18650 şarj devresi

Giriş USB (kullanılmıyor) veya LM7805 IC'den harici 5V olabilir. Yukarıda gösterildiği gibi doğru modülü aldığınızdan emin olun, TP4056 Düşük pil kesme ve kısa devre korumasına sahip koruma.

Bunun çıkışı, XL6009’un girişine beslenmeli ve bu giriş daha yüksek voltaja yükseltilmeli, XL6009’un küçük bir tornavida çıkışı kullanılarak Arduino için 9V’a ayarlanmalıdır.

XL6009 DC'den DC'ye güçlendirme dönüştürücü resmi:

Bu, vericinin donanımını sonlandırır.

Verici Kodu:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
const byte address[6] = '00001'
const int trigger = 3
const int echo = 2
const char text_0[] = 'STOP'
const char text_1[] = 'FULL'
const char text_2[] = '3/4'
const char text_3[] = 'HALF'
const char text_4[] = 'LOW'
float full = 0
float three_fourth = 0
float half = 0
float quarter = 0
long Time
float distanceCM = 0
float distanceM = 0
float resultCM = 0
float resultM = 0
float actual_distance = 0
float compensation_distance = 0
// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //
void setup()
{
Serial.begin(9600)
pinMode(trigger, OUTPUT)
pinMode(echo, INPUT)
digitalWrite(trigger, LOW)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
full = water_hold_capacity
three_fourth = water_hold_capacity * 0.75
half = water_hold_capacity * 0.50
quarter = water_hold_capacity * 0.25
}
void loop()
{
delay(5000)
digitalWrite(trigger, HIGH)
delayMicroseconds(10)
digitalWrite(trigger, LOW)
Time = pulseIn(echo, HIGH)
distanceCM = Time * 0.034
resultCM = distanceCM / 2
resultM = resultCM / 100
Serial.print('Normal Distance: ')
Serial.print(resultM)
Serial.println(' M')
compensation_distance = full_height - water_hold_capacity
actual_distance = resultM - compensation_distance
actual_distance = water_hold_capacity - actual_distance
if (actual_distance <0)
{
Serial.print('Water Level:')
Serial.println(' 0.00 M (UP)')
}
else
{
Serial.print('Water Level: ')
Serial.print(actual_distance)
Serial.println(' M (UP)')
}
Serial.println('============================')
if (actual_distance >= full)
{
radio.write(&text_0, sizeof(text_0))
}
if (actual_distance > three_fourth && actual_distance <= full)
{
radio.write(&text_1, sizeof(text_1))
}
if (actual_distance > half && actual_distance <= three_fourth)
{
radio.write(&text_2, sizeof(text_2))
}
if (actual_distance > quarter && actual_distance <= half)
{
radio.write(&text_3, sizeof(text_3))
}
if (actual_distance <= quarter)
{
radio.write(&text_4, sizeof(text_4))
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

Ölçtüğünüz kodda aşağıdaki değerleri değiştirin:

// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //

Bu, vericiyi sonlandırır.

Alıcı:

ultrasonik su seviyesi alıcı kontrolörü şematik

Alıcı 5 seviye gösterebilir. Tank doldurulurken tank mutlak maksimum su tutma kapasitesine ulaştığında alarm. % 100 ila% 75 - Dört LED'in tümü yanar,% 75 ila% 50 üç LED yanar,% 50 ila% 25 iki LED yanar,% 25 ve daha azı bir LED yanar.
Alıcı, 9V pilden veya akıllı telefon şarj cihazından USB'ye mini-B kablosu.

Alıcı Kodu:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
int i = 0
const byte address[6] = '00001'
const int buzzer = 6
const int LED_full = 5
const int LED_three_fourth = 4
const int LED_half = 3
const int LED_quarter = 2
char text[32] = ''
void setup()
{
pinMode(buzzer, OUTPUT)
pinMode(LED_full, OUTPUT)
pinMode(LED_three_fourth, OUTPUT)
pinMode(LED_half, OUTPUT)
pinMode(LED_quarter, OUTPUT)
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
digitalWrite(LED_full, HIGH)
delay(300)
digitalWrite(LED_three_fourth, HIGH)
delay(300)
digitalWrite(LED_half, HIGH)
delay(300)
digitalWrite(LED_quarter, HIGH)
delay(300)
digitalWrite(LED_full, LOW)
delay(300)
digitalWrite(LED_three_fourth, LOW)
delay(300)
digitalWrite(LED_half, LOW)
delay(300)
digitalWrite(LED_quarter, LOW)
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
if (radio.available())
{
radio.read(&text, sizeof(text))
Serial.println(text)
if (text[0] == 'S' && text[1] == 'T' && text[2] == 'O' && text[3] == 'P')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
for (i = 0 i <50 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
if (text[0] == 'F' && text[1] == 'U' && text[2] == 'L' && text[3] == 'L')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == '3' && text[1] == '/' && text[2] == '4')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'H' && text [1] == 'A' && text[2] == 'L' && text[3] == 'F')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'L' && text[1] == 'O' && text[2] == 'W')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, LOW)
digitalWrite(LED_quarter, HIGH)
}
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

Bu, alıcıyı sonlandırır.

NOT: Hiçbir LED yanmıyorsa bu, alıcının vericiden sinyal alamadığı anlamına gelir. Alıcı devresini açtıktan sonra vericiden sinyal almak için 5 saniye beklemelisiniz.

Yazarın prototipleri:

Verici:

ultrasonik verici prototipi

Alıcı:

ultrasonik alıcı prototipi

Bu güneş enerjili ultrasonik kablosuz su seviyesi kontrol devresi ile ilgili herhangi bir sorunuz varsa, lütfen yorumda ifade etmekten çekinmeyin, hızlı bir cevap almayı bekleyebilirsiniz.




Önceki: Basit Yükseltme Dönüştürücü Devreleri Nasıl Yapılır Sonraki: Flyback Converter Nasıl Tasarlanır - Kapsamlı Eğitim