- Komponenti
- Ultraskaņas sensora modulis
- Automātiskā ūdens līmeņa kontroliera darbība
- Shēmas shēma un paskaidrojums
- Programmēšana
Šajā Arduino balstītajā automātiskajā ūdens līmeņa indikatora un kontroliera projektā mēs mērīsim ūdens līmeni, izmantojot ultraskaņas sensorus. Ultraskaņas attāluma mērīšanas pamatprincips ir balstīts uz ECHO. Kad skaņas viļņi tiek pārraidīti vidē, pēc trieciena uz jebkura šķēršļa tie atgriežas ECHO izcelsmes vietā. Tāpēc mums ir tikai jāaprēķina tā ceļojuma laiks, kad abas skaņas nozīmē izejošo laiku un atgriešanās laiku izcelsmes vietā pēc trieciena uz jebkura šķēršļa. Un pēc kāda aprēķina mēs varam iegūt rezultātu, kas ir attālums. Šis jēdziens tiek izmantots mūsu ūdens kontroliera projektā, kur ūdens motora sūknis tiek automātiski ieslēgts, kad ūdens līmenis tvertnē kļūst zems. Varat arī pārbaudīt šo vienkāršo ūdens līmeņa indikatora shēmu, lai iegūtu vienkāršāku šī projekta versiju.
Komponenti
- Arduino Uno
- Ultraskaņas sensora modulis
- 16x2 LCD
- Relejs 6 volti
- ULN2003
- 7806
- PVT
- Vara stieple
- 9 voltu akumulators vai 12 voltu adapteris
- Savienojošie vadi
Ultraskaņas sensora modulis
Ultraskaņas sensoru HC-SR04 izmanto, lai izmērītu attālumu diapazonā no 2 cm līdz 400 cm ar precizitāti 3 mm. Sensora modulis sastāv no ultraskaņas raidītāja, uztvērēja un vadības ķēdes.
Ultraskaņas sensoru modulis darbojas pie skaņas ECHO dabas parādības. Impulss tiek nosūtīts apmēram 10 us, lai iedarbinātu moduli. Pēc tam modulis automātiski nosūta 8 40 KHz ultraskaņas signāla ciklus un pārbauda tā atbalss. Signāls pēc sitiena ar šķērsli atgriežas atpakaļ un uztver uztvērējs. Tādējādi šķēršļa attālumu no sensora vienkārši aprēķina pēc formulas, kas dota kā
Attālums = (laiks x ātrums) / 2.
Šeit mēs esam dalījuši ātruma un laika reizinājumu ar 2, jo laiks ir kopējais laiks, kas vajadzīgs, lai sasniegtu šķērsli un atgrieztos atpakaļ. Tādējādi šķēršļa sasniegšanas laiks ir tikai puse no kopējā patērētā laika.
Automātiskā ūdens līmeņa kontroliera darbība
Šī projekta veikšana ir ļoti vienkārša. Mēs esam izmantojuši ultraskaņas sensoru moduli, kas nosūta skaņas viļņus ūdens tvertnē un nosaka skaņas viļņu atspoguļojumu, kas ir ECHO. Vispirms mums jāieslēdz ultraskaņas sensora modulis signāla pārraidei, izmantojot Arduino, un pēc tam jāgaida, kamēr saņemat ECHO. Arduino nolasa laiku starp ECHO aktivizēšanu un saņemšanu. Mēs zinām, ka skaņas ātrums ir aptuveni 340 m / s. lai mēs varētu aprēķināt attālumu, izmantojot norādīto formulu:
Attālums = (ceļojuma laiks / 2) * skaņas ātrums
Kur skaņas ātrums ir aptuveni 340m sekundē.
Izmantojot šīs metodes, mēs iegūstam attālumu no sensora līdz ūdens virsmai. Pēc tā mums jāaprēķina ūdens līmenis.
Tagad mums jāaprēķina ūdens tvertnes kopējais garums. Kā mēs zinām ūdens tvertnes garumu, tad mēs varam aprēķināt ūdens līmeni, no kopējā tvertnes garuma atņemot iegūto attālumu, kas nāk no ultraskaņas. Un mēs iegūsim ūdens līmeņa attālumu. Tagad mēs varam pārvērst šo ūdens līmeni procentos no ūdens un varam to parādīt LCD ekrānā. Pilna ūdens līmeņa indikatora projekta darbība ir parādīta zemāk esošajā blokshēmā.
Shēmas shēma un paskaidrojums
Kā parādīts ūdens līmeņa regulatora ķēdē, kas sniegta zemāk, ultraskaņas sensora moduļa “sprūda” un “atbalss” tapas ir tieši savienotas arduino 10. un 11. tapu. 4x2 bitu režīmā 16x2 LCD ir savienots ar arduino. Vadības tapa RS, RW un En ir tieši savienota ar arduino tapām 7, GND un 6. Un datu tapa D4-D7 ir savienota ar arduino 5, 4, 3 un 2, un skaņas signāls ir pievienots pie 12. kontakta. savienots arī arduino 8. tapā caur ULN2003, lai ieslēgtu vai izslēgtu ūdens motora sūkni. Sprieguma regulatoru 7805 izmanto arī 5 voltu nodrošināšanai relejam un atlikušajai ķēdei.
Šajā shēmā demonstrēšanai ultraskaņas sensoru modulis tiek novietots kausa (ūdens tvertnes) augšpusē. Šis sensora modulis nolasīs attālumu starp sensora moduli un ūdens virsmu, un tas parādīs attālumu LCD ekrānā ar ziņojumu “Ūdens telpa tvertnē ir:”. Tas nozīmē, ka mēs šeit parādām tukšu ūdens attāluma vai tilpuma vietu, nevis ūdens līmeni. Šīs funkcionalitātes dēļ mēs varam izmantot šo sistēmu jebkurā ūdens tvertnē. Kad tukšā ūdens līmenis sasniedz aptuveni 30 cm, Arduino ieslēdz ūdens sūkni, braucot ar releju. Tagad LCD displejā būs redzams “ZEMS ūdens līmenis”, “Motors ieslēgts”, un releja statusa LED sāks mirgot
Tagad, ja tukšā vieta sasniedz aptuveni 12 cm attālumu, arduino izslēdz releju un LCD displejā būs redzams “Tvertne ir pilna” “Motors izslēgts”. Arī skaņas signāls kādu laiku pīkst un releja statusa LED tiks izslēgts.
Programmēšana
Lai ieprogrammētu Arduino ūdens līmeņa kontrolierim, vispirms mēs definējam visu tapu, kuru projektā izmantosim ārējo ierīču, piemēram, releja, LCD, skaņas signāla utt.
#define trigger 10 #define echo 11 #define motor 8 #define buzzer 12
Tad mēs inicializējam visas projektā izmantotās ierīces.
lcd.begin (16,2); pinMode (trigeris, OUTPUT); pinMode (atbalss, INPUT); pinMode (motors, OUTPUT); pinMode (zummer, OUTPUT); lcd.print ("Ūdens līmenis"); lcd.setCursor (0,1); lcd.print ("Indikators"); kavēšanās (2000);
Tagad inicializējiet ultraskaņas sensora moduli un nolasiet ultraskaņas viļņu vai skaņas sūtīšanas un saņemšanas laiku, izmantojot pulseIn (pin). Pēc tam veiciet aprēķinus un parādiet rezultātu 16x2 LCD ekrānā, izmantojot atbilstošas funkcijas.
digitalWrite (trigeris, HIGH); kavēšanāsMikrosekundes (10); digitalWrite (trigeris, LOW); kavēšanāsMikrosekundes (2); laiks = pulseIn (atbalss, AUGSTS); attālums = laiks * 340/20000; lcd.clear (); lcd.print ("Ūdens telpa iekšā"); lcd.setCursor (0,1); lcd.print ("Tvertne ir:"); lcd.print (attālums); lcd.print ("Cm");
Pēc tam mēs pārbaudām apstākļus, vai ūdens tvertne ir pilna vai ūdens līmenis ir zems, un attiecīgi rīkojamies.
ja (attālums <12 && temp == 0) {digitalWrite (motors, LOW); digitalWrite (zummeris, HIGH); lcd.clear (); lcd.print ("Ūdens tvertne pilna"); lcd.setCursor (0,1); lcd.print ("Motors izslēgts"); kavēšanās (2000); digitalWrite (zummer, LOW); kavēšanās (3000); temp = 1; } else if (attālums <12 && temp == 1) {digitalWrite (motors, LOW); lcd.clear (); lcd.print ("Ūdens tvertne pilna"); lcd.setCursor (0,1); lcd.print ("Motors izslēgts"); kavēšanās (5000); }