Langaton ultraäänen vesitason ilmaisin - aurinkoenergialla toimiva

Kokeile Instrumenttia Ongelmien Poistamiseksi





Ultraääni-vedenkorkeuden säädin on laite, joka pystyy havaitsemaan vesitasot säiliössä ilman fyysistä kosketusta ja lähettämään tiedot kaukaiselle LED-ilmaisimelle langattomassa GSM-tilassa.

Tässä viestissä aiomme rakentaa ultraäänipohjaisen aurinkoenergialla toimivan langattoman vedenkorkeuden ilmaisimen käyttämällä Arduinoa, jossa Arduinos lähettävät ja vastaanottavat 2,4 GHz: n langattomalla taajuudella. Havaitsemme vesitason säiliössä ultraäänellä perinteisen elektrodimenetelmän sijasta.



Yleiskatsaus

Vedenpinnan osoittimella on oltava laite, jos omistat talon tai jopa asut vuokratalossa. A vedenkorkeuden ilmaisin näyttää yhden tärkeän talosi tiedot, joka on yhtä tärkeä kuin energiamittarin lukema, eli kuinka paljon vettä on jäljellä? Jotta voimme seurata vedenkulutusta ja meidän ei tarvitse kiivetä yläkertaan päästäkseen vesisäiliöön tarkistaaksemme kuinka paljon vettä on jäljellä eikä enää yhtäkkiä pysähdy hanasta.

Asumme vuonna 2018 (tämän artikkelin kirjoittamisen yhteydessä) tai myöhemmin, voimme kommunikoida mihin päin maailmaa tahansa, laukaisimme sähköisen kilpa-auton avaruuteen, laukaisimme satelliitteja ja kuljettajia marsille, pystyimme jopa laskeutumaan ihmisiin kuun olentoja, ei vieläkään ole asianmukaista kaupallista tuotetta sen havaitsemiseksi, kuinka paljon vettä on jäljellä vesisäiliöissämme?



Voimme löytää veden tason indikaattorit, joita 5. luokan oppilaat tekevät tiedemessuille koulussa. Kuinka tällaiset yksinkertaiset projektit eivät vaikuttaneet jokapäiväiseen elämäämme? Vastaus on, että vesisäiliön tason indikaattorit eivät ole yksinkertaisia ​​hankkeita, jotka viidennen luokkalainen voi tehdä kotiimme. On paljon käytännön näkökohdat ennen kuin suunnittelemme yhden.

• Kukaan ei halua porata reikää vesisäiliön runkoon elektrodeja varten, jotka saattavat vuotaa vettä myöhemmin.
• Kukaan ei halua käyttää 230/120 VAC -johtoa vesisäiliön lähellä.
• Kukaan ei halua vaihtaa paristoja joka kuukausi.
• Kukaan ei halua käyttää ylimääräisiä pitkiä johtoja, jotka ripustetaan huoneeseen vedenpinnan osoittamiseksi, koska sitä ei ole suunniteltu etukäteen taloa rakennettaessa.
• Kukaan ei halua käyttää vettä, joka on sekoitettu elektrodin metallikorroosion kanssa.
• Kukaan ei halua poistaa vedenkorkeuden osoittimen asetusta puhdistaessaan säiliötä (sisällä).

Jotkut yllä mainituista syistä saattavat näyttää typeriltä, ​​mutta löydät vähemmän tyydyttäviä kaupallisesti saatavissa olevilla tuotteilla, joilla on nämä haitat. Siksi näiden tuotteiden levinneisyys keskimääräisten kotitalouksien keskuudessa on hyvin vähäistä *.
* Intian markkinoilla.

Harkittuamme nämä avainkohdat olemme suunnitelleet käytännöllisen vedenpinnan osoittimen, jonka pitäisi poistaa mainitut haitat.

Suunnittelumme:

• Se käyttää ultraäänianturia vedenpinnan mittaamiseen, joten siinä ei ole korroosiota.
• Veden tason reaaliaikainen langaton näyttö 2,4 GHz: n taajuudella.
• Hyvä langattoman signaalin voimakkuus, riittää 2-kerroksisille rakennuksille.
• Aurinkoenergialla ei enää verkkovirtaa tai pariston vaihtoa.
• Säiliön täyttö- / ylivuotohälytys säiliötä täytettäessä.

Tutkitaan piirin yksityiskohtia:

Lähetin:

langaton lähetinpiiri joka sijoitetaan säiliöön, lähettää vesitasotiedot 5 sekunnin välein 24/7. Lähetin koostuu Arduino nanosta, ultraäänianturista HC-SR04, nRF24L01-moduulista, joka yhdistää lähettimen ja vastaanottimen langattomasti 2,4 GHz: n taajuudella.

9 - 12 V: n aurinkopaneeli, jonka virtalähtö on 300 mA, syöttää lähetinpiirin. Akun hallintapiirilevy lataa litiumioniakun, jotta voimme seurata veden tasoa myös silloin, kun auringonvaloa ei ole.

Tutkitaan, kuinka ultraäänianturi sijoitetaan vesisäiliöön:

Huomaa, että sinun on käytettävä luovuuttasi kiertämään piiri ja suojaamaan sateelta ja suoralta auringonvalolta.

Leikkaa pieni reikä säiliön kannen yläpuolelle ultraäänianturin sijoittamiseksi ja tiivistä se jollakin löytämälläsi liimalla.

asettamalla ultraäänianturi vesisäiliöön

Mittaa nyt säiliön koko korkeus pohjasta kanteen, kirjoita se metreinä. Mittaa nyt säiliön vedenpitokapasiteetin korkeus yllä olevan kuvan mukaisesti ja kirjoita muistiin metreinä.
Sinun on syötettävä nämä kaksi arvoa koodiin.

Lähettimen kaaviokuva:

ultraäänilähettimen liitännät veden tason säätämiseen

HUOMAUTUS: nRF24L01 käyttää 3.3 V: tä, koska Vcc ei muodosta yhteyttä Arduinon 5 V: n lähtöön.

Lähettimen virtalähde:

ultraääni vesitason säätimen virtalähteen suunnittelu

Varmista, että aurinkopaneelisi lähtöteho eli lähtö (voltti x virta) on yli 3 wattia. aurinkopaneeli tulisi olla 9 V - 12 V.

Suosittelemme 12 V: n ja 300 mA: n paneeleja, jotka löydät helposti markkinoilta. Akun tulee olla noin 3,7 V 1000 mAh.

5V 18650 Li-ion -latausmoduuli:

Seuraava kuva näyttää standardin 18650-laturipiiri

Tulo voi olla USB (ei käytössä) tai ulkoinen 5 V LM7805 IC: ltä. Varmista, että saat oikean moduulin, kuten yllä on esitetty TP4056 suojaus, jolla on heikko akun katkaisu ja oikosulkusuojaus.

Tämän lähtö tulisi syöttää XL6009: n tuloon, joka nousee korkeammalle jännitteelle. XL6009: n pienellä ruuvimeisselillä lähtö tulisi säätää 9 V: n Arduinolle.

Kuva XL6009: stä DC-DC-tehostinmuuntimeen:

Tämä päättää lähettimen laitteiston.

Lähettimen koodi:

// ----------- 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 ----------- //

Muuta seuraavat arvot mittaamassasi koodissa:

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

Lähetin lopetetaan.

Vastaanottaja:

ultraäänisen veden tason vastaanottimen säätimen kaavio

Vastaanotin voi näyttää 5 tasoa. Hälytys, kun säiliö saavuttaa absoluuttisen vedenpitokapasiteetin säiliötä täytettäessä. 100-75% - Kaikki neljä LED-valoa palavat, 75-50% kolme LED-valoa palavat, 50-25% kaksi LED-valoa palavat, 25% ja vähemmän yksi LED palaa.
Vastaanotinta voidaan käyttää 9 V: n paristolla tai älypuhelimen laturi USB: lle mini-B-kaapeli.

Vastaanottimen koodi:

// ----------- 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 ----------- //

Se päättää vastaanottimen.

HUOMAUTUS: jos yksikään LED ei pala, tarkoittaa, että vastaanotin ei voi saada signaalia lähettimestä. Odota 5 sekuntia, jotta vastaanotat signaalin lähettimestä, kun olet kytkenyt virran vastaanotinpiiriin.

Kirjoittajan prototyypit:

Lähetin:

ultraäänilähettimen prototyyppi

Vastaanotin:

ultraäänivastaanottimen prototyyppi

Jos sinulla on kysyttävää tästä aurinkoenergialla toimivasta langattomasta ultraäänilaitteesta, ilmaise mielipiteesi, voit odottaa saavansa nopean vastauksen.




Pari: Kuinka tehdä yksinkertaisia ​​Boost Converter -piirejä Seuraava: Kuinka suunnitella Flyback-muunnin - kattava opetusohjelma