- Komponentit
- Ultraäänianturimoduuli
- Automaattisen vedenpinnan säätimen toiminta
- Piirikaavio ja selitys
- Ohjelmointi
Tässä Arduino-pohjaisessa automaattisessa vedenpinnan osoittimen ja säätimen projektissa aiomme mitata vesitason ultraääniantureilla. Ultraäänimatkan mittauksen perusperiaate perustuu ECHO: han. Kun ääniaaltoja lähetetään ympäristössä, ne palaavat takaisin ECHO-lähtöpaikkaan törmätessään mihin tahansa esteeseen. Joten meidän on vain laskettava sen molempien äänien matka-aika, mikä tarkoittaa lähtevää ja palaavaa aikaa lähtöpaikkaan lyömällä mihin tahansa esteeseen. Ja jonkin verran laskutoimitusta voimme saada tuloksen, joka on etäisyys. Tätä konseptia käytetään vesisäädinprojektissamme, jossa vesimoottoripumppu käynnistyy automaattisesti, kun säiliön vesitaso laskee. Voit myös tarkistaa tämän yksinkertaisen vedenpinnan osoittimen piirin yksinkertaisemmasta versiosta tästä projektista.
Komponentit
- Arduino Uno
- Ultraäänianturin moduuli
- 16x2 LCD
- Rele 6 V
- ULN2003
- 7806
- PVT
- Kuparilanka
- 9 voltin akku tai 12 voltin adapteri
- Johtojen liittäminen
Ultraäänianturimoduuli
Ultraäänianturia HC-SR04 käytetään mittaamaan etäisyyttä 2 cm - 400 cm 3 mm: n tarkkuudella. Anturimoduuli koostuu ultraäänilähettimestä, vastaanottimesta ja ohjauspiiristä.
Ultraäänianturimoduuli toimii äänen ECHO: n luonnonilmiössä. Noin 10 us: n pulssi lähetetään moduulin laukaisemiseksi. Tämän jälkeen moduuli lähettää automaattisesti 8 sykliä 40 KHz: n ultraäänisignaalia ja tarkistaa sen kaikun. Esteen lyönnin jälkeen signaali palaa takaisin ja vastaanotin sieppaa sen. Siten esteen etäisyys anturista lasketaan yksinkertaisesti kaavalla, joka on annettu
Etäisyys = (aika x nopeus) / 2.
Tässä olemme jakaneet nopeuden ja ajan tulon kahdella, koska aika on kokonaisaika, joka kului esteen saavuttamiseen ja paluuseen. Näin ollen esteiden saavuttamiseen kuluva aika on vain puolet kokonaisajasta.
Automaattisen vedenpinnan säätimen toiminta
Tämän projektin tekeminen on hyvin yksinkertaista. Olemme käyttäneet ultraäänianturimoduulia, joka lähettää ääniaallot vesisäiliöön ja havaitsee ääniaaltojen heijastuksen, joka on ECHO. Ensinnäkin meidän on käynnistettävä ultraäänianturimoduuli lähettämään signaalia Arduinon avulla ja odotettava sitten ECHO: n vastaanottamista. Arduino lukee ECHO: n käynnistämisen ja vastaanottamisen välisen ajan. Tiedämme, että äänen nopeus on noin 340 m / s. jotta voimme laskea etäisyyden käyttämällä annettua kaavaa:
Etäisyys = (matka-aika / 2) * äänen nopeus
Jos äänen nopeus on noin 340 m sekunnissa.
Tätä menetelmää käyttämällä saadaan etäisyys anturista veden pintaan. Sen jälkeen meidän on laskettava vedenpinta.
Nyt meidän on laskettava vesisäiliön kokonaispituus. Kuten tiedämme vesisäiliön pituuden, voimme laskea vesitason vähentämällä ultraäänestä tulevan etäisyyden säiliön kokonaispituudesta. Ja saamme vedenpinnan etäisyyden. Nyt voimme muuntaa tämän vesitason prosentteina vedestä ja näyttää sen LCD-näytöllä. Täydellisen vesitasoindikaattoriprojektin toiminta on esitetty alla olevassa kaaviossa.
Piirikaavio ja selitys
Kuten alla annetussa vedenkorkeussäätimen piirissä on esitetty, ultraäänianturimoduulin ”liipaisin” ja “kaiun” nastat on kytketty suoraan arduinon nastoihin 10 ja 11. 16x2-nestekidenäyttö on kytketty arduinoon 4-bittisessä tilassa. Ohjaustapa RS, RW ja En on kytketty suoraan arduino-nastoihin 7, GND ja 6. Ja datanapa D4-D7 on kytketty 5, 4, 3 ja 2 arduinoon ja summeri on kytketty napaan 12. 6 voltin rele on kytketty myös arduinon tapiin 8 ULN2003: n kautta vesimoottoripumpun kytkemiseksi päälle tai pois päältä. Jännitesäädintä 7805 käytetään myös 5 voltin toimittamiseen releelle ja jäljellä olevalle piirille.
Tässä piirissä ultraäänianturimoduuli sijoitetaan kauhan (vesisäiliön) yläosaan esittelyä varten. Tämä anturimoduuli lukee anturimoduulin ja veden pinnan välisen etäisyyden ja näyttää etäisyyden LCD-näytöllä sanomalla "Vesitila säiliössä on:". Se tarkoittaa, että näytämme täällä veden tyhjää etäisyyttä tai tilavuutta vedenpinnan sijasta. Tämän toiminnon ansiosta voimme käyttää tätä järjestelmää missä tahansa vesisäiliössä. Kun tyhjä vesitaso saavuttaa noin 30 cm: n etäisyyden, Arduino kytkee vesipumpun päälle releellä. Ja nyt nestekidenäytössä näkyy ”MATALA vedenkorkeus”, “Moottori kytketty päälle”, ja releen tilan LED alkaa palaa
Jos tyhjä tila saavuttaa noin 12 cm: n etäisyyden, arduino sammuttaa releen ja nestekidenäytössä näkyy "Tank on täynnä" "Moottori sammutettu". Summeri piippaa myös jonkin aikaa ja releen tilan LED sammuu.
Ohjelmointi
Arduinon ohjelmoimiseksi vedenpinnan säätimeksi määritetään ensin kaikki tappi, jota aiomme käyttää projektissa ulkoisten laitteiden, kuten releen, LCD: n, summerin jne., Liittämiseen.
#define trigger 10 #define echo 11 #define motor 8 #define summeri 12
Sitten alustamme kaikki projektissa käytetyt laitteet.
lcd-alku (16,2); pinMode (liipaisin, OUTPUT); pinMode (kaiku, INPUT); pinMode (moottori, OUTPUT); pinMode (summeri, OUTPUT); lcd.print ("vesitaso"); lcd.setCursor (0,1); lcd.print ("Indikaattori"); viive (2000);
Alusta nyt ultraäänianturimoduuli ja lue ultraääni-aaltojen tai äänen lähetys- ja vastaanottoaika käyttämällä pulseIn (nasta). Suorita sitten laskelmat ja näytä tulos 16 x 2: n nestekidenäytöllä käyttämällä sopivia toimintoja.
digitalWrite (liipaisin, HIGH); viive mikrosekuntia (10); digitalWrite (liipaisin, LOW); viive mikrosekuntia (2); aika = pulssi (kaiku, KORKEA); etäisyys = aika * 340/20000; lcd.clear (); lcd.print ("Vesitila sisään"); lcd.setCursor (0,1); lcd.print ("Säiliö on:"); lcd.print (etäisyys); lcd.print ("Cm");
Sen jälkeen tarkistamme olosuhteet, onko vesisäiliö täynnä tai vedenpinta alhainen, ja ryhdymme toimiin vastaavasti.
if (etäisyys <12 && temp == 0) {digitalWrite (moottori, LOW); digitalWrite (summeri, HIGH); lcd.clear (); lcd.print ("vesisäiliö täynnä"); lcd.setCursor (0,1); lcd.print ("Moottori sammutettu"); viive (2000); digitalWrite (summeri, LOW); viive (3000); lämpötila = 1; } else if (etäisyys <12 && temp == 1) {digitalWrite (moottori, LOW); lcd.clear (); lcd.print ("vesisäiliö täynnä"); lcd.setCursor (0,1); lcd.print ("Moottori sammutettu"); viive (5000); }