- Tarvittavat materiaalit:
- Piirikaavio:
- Kuinka HC-SR04-moduuli todella toimii:
- Kahden ultraäänianturin välisen etäisyyden mittaaminen (HC-SR04):
- Lähetinanturin ohjelma:
- Ohjelma vastaanottimen anturille:
- Työskentely:
- Improvisoitu idea - tunnistimen kalibrointi tunnettua etäisyyttä käyttäen:
Ultraäänianturia (HC-SR04) käytetään yleisesti kohteen etäisyyden löytämiseen tietystä pisteestä. Se on ollut melko helppo tehdä Arduinolla, ja koodi on myös melko yksinkertainen. Mutta tässä artikkelissa aiomme kokeilla jotain erilaista näiden suosittujen HC-SR04-antureiden kanssa. Yritämme laskea kahden ultraäänianturin välinen etäisyys, toisin sanoen saamme yhden anturin toimimaan lähettimenä ja toisen anturin toimimaan vastaanottimena. Tällöin voimme seurata yhden lähettimen sijaintia monilla ultraäänivastaanottimilla. Tätä seurantaa kutsutaan kolmiomittaukseksi ja sitä voidaan käyttää robottien automaattiseen telakointiin matkatavaroiden seuraajiin ja muihin vastaaviin sovelluksiin. Kahden USA-anturin välisen etäisyyden löytäminen saattaa kuulostaa melko yksinkertaiselta tehtävältä, mutta minulla oli vain vähän haasteita, joista keskustellaan tässä projektissa.
Tässä artikkelissa käsitelty tekniikka ei ole melko tarkka eikä se välttämättä ole hyödyllinen missään todellisessa järjestelmässä ilman muutoksia. Tämän dokumentaation aikana en löytänyt ketään saamasta tuloksia niin lähellä kuin minun, joten olen juuri jakanut näkemykseni siitä, miten sain sen toimimaan, jotta tätä yrittävien ihmisten ei tarvitse keksiä pyörää uudelleen.
Tarvittavat materiaalit:
- Arduino (2Nos) - Mikä tahansa malli
- HCSR04-moduuli (2Nos)
Piirikaavio:
Vaikka aiomme saada yhden yhdysvaltalaisen (ultraääni) anturin toimimaan lähettimenä ja toisen vastaanottimena, on pakollinen, että kaikki anturien neljä nastaa liitetään Arduinoon. Miksi meidän pitäisi? Enemmän siitä keskustellaan myöhemmin, mutta toistaiseksi piirikaavio on seuraava
Kuten näette, sekä lähettimen että vastaanottimen kytkentäkaavio ovat molemmat identtiset. Tarkista myös: Arduino-ultraäänianturin liitäntä
Kuinka HC-SR04-moduuli todella toimii:
Ennen kuin jatkat, anna meidän ymmärtää, miten HC-SR04-anturi toimii. Alla oleva ajoituskaavio auttaa meitä ymmärtämään työskentelyä.
Anturissa on kaksi nastaa Trigger ja Echo, joita käytetään etäisyyden mittaamiseen ajoituskaavion mukaisesti. Ensin mittauksen aloittamiseksi meidän tulisi lähettää ultraääni aalto lähettimestä, tämä voidaan tehdä asettamalla liipaisintappi korkeaksi 10uS: lle. Heti kun tämä on tehty, lähettimen tappi lähettää 8 äänipursketta Yhdysvaltain aaltoja. Tämä Yhdysvaltain aalto osuu kohteeseen, joka palautuu takaisin ja vastaanotin vastaanottaa sen.
Tällöin ajoituskaavio osoittaa, että kun vastaanotin vastaanottaa aallon, se saa Echo-nastan nousemaan korkeaksi ajaksi, joka on yhtä suuri kuin aika, jonka aalto kulkee Yhdysvaltain anturista ja saavuttaa takaisin anturiin. Tämä ajoituskaavio ei näytä olevan totta.
Peitin anturin Tx (lähetin) osan ja tarkistin, onko Echo-pulssi korkea, ja kyllä se menee korkealle. Tämä tarkoittaa, että kaiun pulssi ei odota Yhdysvaltojen (ultraääni) aallon vastaanottamista. Kun se lähettää Yhdysvaltain aallon, se menee korkealle ja pysyy korkealla, kunnes aalto palaa takaisin. Joten oikean ajoituskaavion tulisi olla jotain alla olevaa (anteeksi huonosta kirjoitustaidostani)
HC-SR04: n saaminen toimimaan vain lähettimenä:
On melko suoraviivaista saada HC-SR04 toimimaan vain lähettimenä. Kuten ajoituskaaviosta käy ilmi, sinun on ilmoitettava liipaisimen tappi lähtötappina ja saatettava se pysymään korkealla 10 mikrosekunnin ajan. Tämä käynnistää ultraäänipurskeen. Joten aina, kun haluamme lähettää aallon, meidän on vain ohjattava lähettimen anturin liipaisintappia, jolle koodi annetaan alla.
HC-SR04: n toimiminen vain vastaanottimena:
Kuten ajoituskaaviosta käy ilmi, emme voi hallita kaiun tapin nousua, koska se liittyy liipaisintappiin. Joten emme voi mitenkään saada HC-SR04: ää toimimaan vain vastaanottimena. Mutta voimme käyttää hakata, peittämällä vain anturin lähetinosa teipillä (kuten alla olevassa kuvassa on esitetty) tai korkilla, Yhdysvaltain aalto ei pääse lähettimen kotelon ulkopuolelle, eikä tämä yhdysvaltalainen aalto vaikuta kaiku-nastaan.
Nyt, jotta kaiun tappi menee korkealle, meidän on vain vedettävä tämä nuken liipaisin tappi korkealle 10 mikrosekunnin ajan. Kun tämä vastaanotinanturi saa lähettimen anturin lähettämän Yhdysvaltojen aallon, kaiutappi laskee matalaksi.
Kahden ultraäänianturin välisen etäisyyden mittaaminen (HC-SR04):
Toistaiseksi olemme ymmärtäneet, kuinka saada yksi anturi toimimaan lähettimenä ja toinen anturi toimimaan vastaanottimena. Nyt meidän on lähetettävä ultraääniaalto lähettimen anturista ja vastaanotettava se vastaanottimen anturin kanssa ja tarkistettava, kuinka kauan aalto kuluu lähettimestä vastaanottimeen. Mutta valitettavasti!, Meillä on ongelma täällä, ja tämä ei toimi.
Lähetinmoduuli ja vastaanotinmoduuli ovat kaukana toisistaan, ja kun vastaanotinmoduuli vastaanottaa Yhdysvaltain aallon lähetinmoduulilta, se ei tiedä, milloin lähetin lähetti kyseisen aallon. Tietämättä aloitusaikaa emme voi laskea käytettyä aikaa ja siten matkaa. Tämän ongelman ratkaisemiseksi vastaanotinmoduulin kaiun pulssi on saatettava nousemaan tarkalleen, kun lähetinmoduuli on lähettänyt Yhdysvaltain aallon. Toisin sanoen lähetinmoduulin ja vastaanotinmoduulin pitäisi laukaista samanaikaisesti. Tämä voidaan saavuttaa seuraavalla menetelmällä.
Yllä olevassa kaaviossa Tx edustaa lähetinanturia ja Rx edustaa vastaanotinanturia. Kuten on esitetty, lähetinanturi saatetaan lähettämään Yhdysvaltain aaltoja tietyllä jaksoittaisella viiveellä, tämä on kaikki mitä hänen on tehtävä.
Vastaanotintunnistimessa meidän on jotenkin saatettava liipaisintappi menemään korkealle tarkalleen aikana, kun lähetintappi menee korkealle. Joten teemme aluksi satunnaisesti Vastaanottimen laukaisimen menemään korkealle, mikä pysyy korkealla, kunnes kaiun tappi laskee. Tämä kaiutappi laskee matalaksi vasta, kun se vastaanottaa lähettimeltä Yhdysvaltain aallon. Joten heti kun se laskee, voimme olettaa, että lähetinanturi laukaistiin juuri. Tämän oletuksen avulla voimme heti odottaa tunnettua viivettä ja laukaista vastaanottimen laukaisun heti, kun kaiun arvo laskee. Tämä synkronoi osittain sekä lähettimen että vastaanottimen liipaisimen, joten voit lukea välittömän kaikupulssin keston pulseIn (): n avulla ja laskea etäisyyden.
Lähetinanturin ohjelma:
Lähetinmoduulin täydellinen ohjelma löytyy sivun alaosasta. Se ei tee muuta kuin laukaisee lähettimen anturin säännöllisin väliajoin.
digitalWrite (trigPin, HIGH); viive mikrosekuntia (10); digitalWrite (trigPin, LOW);
Anturin käynnistämiseksi meidän on tehtävä liipaisintappi pysymään korkealla 10uS: n ajan. Koodi tehdä sama näkyy yllä
Ohjelma vastaanottimen anturille:
Vastaanottimen anturissa peitämme anturin lähettimen silmän, jotta se olisi nukke, kuten aiemmin keskusteltiin. Nyt voimme käyttää yllä mainittua tekniikkaa kahden anturin välisen etäisyyden mittaamiseen. Koko ohjelma on tämän sivun alaosassa. Muutama tärkeä rivi selitetään alla
Trigger_US (); while (digitalRead (echoPin) == KORKEA); viive mikrosekuntia (10); Trigger_US (); kesto = pulssi (echoPin, HIGH);
Aluksi laukaistaan Yhdysvaltain anturi toiminnolla Trigger_US () ja odotetaan sitten, kunnes kaiutappi pysyy korkealla jonkin aikaa silmukan avulla. Kun se laskee, odotamme ennalta määrättyä kestoa, tämän keston tulisi olla välillä 10-30 mikrosekuntia, joka voidaan määrittää kokeilemalla ja erehdyksellä (Tai voit käyttää alla olevaa improvisoitua ideaa). Tämän viiveen jälkeen laukaise Yhdysvallat uudelleen samalla toiminnolla ja laske sitten pulseIn () - funktio aallon kesto.
Nyt voimme käyttää samoja vanhoja kaavoja etäisyyden laskemiseksi alla
etäisyys = kesto * 0,034;
Työskentely:
Tee liitännät ohjelmassa kuvatulla tavalla. Peitä vastaanottimen anturin Tx-osa kuvan osoittamalla tavalla. Lataa sitten lähetin- ja vastaanotinkoodi, jotka on annettu alla, lähettimelle ja vastaanottimelle Arduino. Avaa vastaanotinmoduulin sarjamoduuli ja huomaa kahden näytettävän moduulin välinen etäisyys alla olevan videon mukaisesti.
Huomaa: Tämä menetelmä on vain ideologia, eikä se välttämättä ole tarkka tai tyydyttävä. Voit kuitenkin kokeilla alla olevaa improvisoitua ideaa saadaksesi parempia tuloksia.
Improvisoitu idea - tunnistimen kalibrointi tunnettua etäisyyttä käyttäen:
Toistaiseksi omituisesti selitetty menetelmä näyttää tyydyttävältä, mutta se riitti projektiini. Haluaisin kuitenkin kertoa myös tämän menetelmän haitoista ja tavasta voittaa ne. Yksi tämän menetelmän merkittävä haittapuoli on, että oletamme, että vastaanottimen kaiun tappi putoaa matalalle heti sen jälkeen, kun lähetinanturi on lähettänyt Yhdysvaltain aallon, mikä ei ole totta, koska aalto vie jonkin aikaa kulkemaan lähettimestä vastaanottimeen. Siksi lähettimen laukaisu ja vastaanottimen liipaisu eivät ole täydellisessä synkronoinnissa.
Tämän voittamiseksi voimme kalibroida anturin käyttämällä aluksi tuntematkaa. Jos etäisyys on tiedossa, tiedämme ajan, jonka Yhdysvaltain aalto saavuttaa vastaanottimen lähettimestä. Pidetään tämä aika Del (D): nä alla olevan kuvan mukaisesti.
Nyt tiedämme tarkalleen, kuinka kauan meidän pitäisi tehdä vastaanottimen liipaisintappi korkealle saadaksesi synkronoinnin lähettimen liipaisimen kanssa. Tämä kesto voidaan laskea tunnetulla viiveellä (t) - Del (D). En voinut testata tätä ajatusta aikarajoitusten takia, joten en ole varma kuinka tarkasti se toimisi. Joten jos satut kokeilemaan sitä, ilmoita minulle tulokset kommenttiosion kautta.