Kuinka mitata kahden pisteen välinen etäisyys Arduinolla?

Elektroniikassa useimmiten ultraääniantureita käytetään etäisyyden mittaamiseen tietystä pisteestä toiseen. Koodin kirjoittaminen Arduino-levylle ja integrointi on erittäin helppoa ultraäänianturi tämän tehtävän suorittamiseksi. Mutta tässä artikkelissa aiomme omaksua toisenlaisen lähestymistavan. Aiomme käyttää kahta erillistä ultraäänianturia, jotka integroidaan kahteen erilliseen Arduinoon. Nämä kaksi moduulia sijoitetaan kahteen eri pisteeseen, joiden välinen etäisyys on mitattava. Yhdestä anturista tehdään vastaanotin ja toisesta lähetin. Tällöin voimme mitata niiden välisen etäisyyden vain paikantamalla lähettimen sijainnin käyttämällä monia ultraäänivastaanottimia. Tekniikkaa, jota käytämme täällä, kutsutaan Kolmiointi.



Etäisyyden mittaaminen Arduinolla

Tässä käytetty tekniikka on vain hyödyllinen pienimuotoisissa järjestelmissä, joissa on pieni etäisyys. Sen toteuttamiseksi suuressa mittakaavassa tarvitaan varmasti joitain muutoksia. Kaikkia tämän projektin toteuttamisen aikana kohtaamia haasteita käsitellään jäljempänä.



Kuinka käyttää Arduino- ja ultraäänianturia etäisyyden mittaamiseen?

Kun tiedämme yhteenvedon projektin taustasta, siirrytään eteenpäin ja kerätään lisätietoja projektin aloittamiseksi.



Vaihe 1: Komponenttien kerääminen (laitteisto)

Jos haluat välttää vaivaa kesken minkä tahansa projektin, paras tapa on tehdä täydellinen luettelo kaikista komponenteista, joita aiomme käyttää. Toinen vaihe, ennen piirin aloittamista, on käydä läpi lyhyt tutkimus kaikista näistä komponenteista. Alla on luettelo kaikista tarvitsemistamme komponenteista tässä projektissa.



  • Neulalangat
  • 5 V: n vaihtovirtasovitin (x2)

Vaihe 2: Komponenttien kerääminen (ohjelmisto)

  • Proteus 8 Professional (voidaan ladata osoitteesta Tässä )

Kun olet ladannut Proteus 8 Professional, suunnittele piiri siihen. Olen sisällyttänyt tähän ohjelmistosimulaatiot, jotta aloittelijoille voi olla kätevää suunnitella piiri ja tehdä asianmukaiset yhteydet laitteistoon.

Vaihe 3: HCR-05: n toiminta

Koska tiedämme nyt projektimme tärkeimmän tiivistelmän, edetään eteenpäin ja käydään läpi lyhyt tutkimus HCR-05 . Seuraavan kaavion avulla voit ymmärtää tämän anturin päätoiminnon.

Tässä anturissa on kaksi nastaa, liipaisintappi, ja ekotappi joita molempia käytetään kahden erityisen pisteen välisen etäisyyden mittaamiseen. Prosessi aloitetaan lähettämällä ultraääniaalto anturista. Tämä tehtävä suoritetaan laukaisemalla liipaisin 10us: lle. Lähetin lähettää kahdeksan ultraäänipursketta ultraääniaaltoja heti, kun tämä tehtävä on suoritettu. tämä aalto kulkee ilmassa ja heti kun se osuu esineeseen omalla tavallaan, se iskee takaisin ja vastaanottaa anturiin rakennetun vastaanottimen.



Kun vastaanotin vastaanottaa ultraääniaallon anturin heijastamisen jälkeen, se asettaa ekotappi korkeaan tilaan. Tämä tappi pysyy korkeassa tilassa sen ajan, joka on täsmälleen yhtä suuri kuin aika, jonka ultraääniaalto kuljettaa lähettimestä ja takaisin anturin vastaanottimeen.

Tehdä ultraäänianturi lähetin vain, tee vain trig-tappi lähtöniittinä ja lähetä korkea pulssi tähän tapiin 10 us: n ajan. Ultraäänipurkaus aloitetaan heti, kun tämä on tehty. Joten aina, kun aalto on lähetettävä, vain ultraäänianturin liipaisintappia on ohjattava.

Ei ole mitään keinoa tehdä ultraäänianturia a vain vastaanotin koska mikro-ohjain ei voi hallita ECO-nastan nousua, koska se liittyy anturin laukaisutappiin. Mutta voimme tehdä vain yhden asian: voimme peittää tämän ultraäänianturin lähettimen kanavateipillä, josta ei tule ulos UV-aaltoa. Tällöin lähetin ei vaikuta tämän lähettimen ECO-nastaan.

Vaihe 4: Piirin toiminta

Nyt kun olemme saaneet molemmat anturit toimimaan erikseen lähettimenä ja vastaanottimena, tässä on suuri ongelma. Vastaanotin ei tiedä aikaa, jonka ultraääniaalto kulki lähettimestä vastaanottimeen, koska se ei tiedä tarkalleen milloin tämä aalto lähetettiin.

Tämän ongelman ratkaisemiseksi meidän on lähetettävä a KORKEA signaali vastaanottimen ECO: lle heti, kun ultraääniaalto lähetetään, lähettimen anturin kautta. Tai yksinkertaisilla sanoilla voimme sanoa, että vastaanottimen ECO ja lähettimen liipaisin tulisi lähettää HIGH: lle samanaikaisesti. Joten tämän saavuttamiseksi saamme jotenkin vastaanottimen liipaisimen nousemaan heti, kun lähettimen liipaisin nousee korkealle. Tämä vastaanottimen liipaisin pysyy korkealla, kunnes ECO-tappi menee MATALA . Kun vastaanottimen ECO-nasta vastaanottaa ultraäänisignaalin, se menee MATALALLE. Tämä tarkoittaa, että lähetinanturin laukaisija sai juuri HIGH-signaalin. Heti kun ECO laskee, odotamme tunnettua viivettä ja asetamme vastaanottimen liipaisimen HIGH. Tällöin molempien anturien liipaisimet synkronoidaan ja etäisyys lasketaan tietämällä aaltomatkan aikaviive.

Vaihe 5: Komponenttien kokoaminen

Vaikka käytämme vain yhden ultraäänianturin lähetintä ja toisen vastaanottinta, on kuitenkin pakollista liittää kaikki ultraäänianturi Arduinolle. Liitä piiri noudattamalla seuraavia ohjeita:

  1. Ota kaksi ultraäänianturia. Peitä ensimmäisen anturin vastaanotin ja toisen anturin lähetin. Käytä tähän tarkoitukseen valkoista teippiä ja varmista, että nämä kaksi on peitetty kokonaan, jotta signaalia ei poistu toisen anturin lähettimestä eikä signaalia pääse ensimmäisen anturin vastaanottimeen.
  2. Liitä kaksi Arduinoa kahteen erilliseen leipälautaan ja yhdistä niiden anturit niihin. Liitä liipaisintappi Arduinon pin9: een ja ecoPin Arduinon pin10: een. Käynnistä ultraäänianturi 5 V: n Arduinolla ja yhdistä kaikki perusteet.
  3. Lataa vastaanottimen koodi vastaanottimen Arduinoon ja lähettimen koodi lähettimen Arduinoon.
  4. Avaa nyt vastaanottavan puolen sarjamonitori ja merkitse mitattava etäisyys.

Tämän projektin piirikaavio näyttää tältä:

Piirikaavio

Vaihe 6: Arduinon käytön aloittaminen

Jos et ole vielä perehtynyt Arduino IDE -ohjelmaan, älä huoli, koska vaiheittainen menettely Arduino IDE: n asettamiseksi ja käyttämiseksi mikrokontrollerikortin kanssa selitetään alla.

  1. Lataa uusin Arduino IDE -versio osoitteesta Arduino.
  2. Liitä Arduino Nano -kortti kannettavaan tietokoneeseen ja avaa ohjauspaneeli. napsauta ohjauspaneelissa Laitteisto ja ääni . Napsauta nyt Laitteet ja tulostimet. Täältä löydät portin, johon mikrokontrollerikortti on kytketty. Minun tapauksessani se on COM14 mutta se on erilainen eri tietokoneissa.

    Portin löytäminen

  3. Napsauta Työkalu-valikkoa. ja aseta lauta asentoon Arduino Nano avattavasta valikosta.

    Asennuslauta

  4. Määritä samassa Työkalu-valikossa portiksi sen portin numero, jonka havaitsit aiemmin Laitteet ja tulostimet .

    Portin asettaminen

  5. Aseta samassa Työkalu-valikossa Suoritin asentoon ATmega328P (vanha Käynnistyslatain ).

    Suoritin

  6. Lataa alla oleva koodi ja liitä se Arduino IDE -laitteeseesi. Klikkaa lataa -painiketta polttaaksesi koodin mikro-ohjainkortillesi.

    Lähetä

Lataa koodi Klikkaa tästä.

Vaihe 7: Koodin ymmärtäminen

Tässä projektissa käytetty koodi on hyvin yksinkertainen ja melko hyvin kommentoitu. Liitetyssä kansiossa on kaksi kooditiedostoa. Lähettimen koodi ja vastaanotinpuolen koodi annetaan molemmat erikseen. Lähetämme nämä koodit molempiin Arduino-levyihin. Vaikka se on itsestään selvä, sitä kuvataan lyhyesti alla.

Lähettimen puolen koodi

1. Alussa alustetaan Arduino-kortin nastat, jotka liitetään ultraäänianturiin. Sitten ilmoitetaan muuttujat, joita käytetään arvojen tallentamiseen ajan ja etäisyyden laskemiseksi koodin ajoajan aikana.

// määrittelee nastanumerot const int trigPin = 9; // Yhdistä ultraäänianturin trig-nasta Arduino const int echoPin = 10 -nappiin 9; // Liitä ultraäänianturin ekotappi Arduinon pin10: een // määrittelee muuttujat pitkäksi ajaksi; // muuttuja tallentamaan ultraääniaallon t kulkeman ajan etäisyys; // muuttuja etäisyyden säilyttämiseksi laskettu

2. mitätön asennus () on toiminto, joka toimii vain kerran käynnistyksessä, kun kortin virta kytketään päälle tai aktivointipainiketta painetaan. Täällä Arduinon molemmat nastat ilmoitetaan käytetyksi TULO ja LÄHTÖ . Siirtonopeus on asetettu tähän toimintoon. Siirtonopeus on nopeus bitteinä sekunnissa, jolla mikro-ohjain kommunikoi ultraäänianturin kanssa.

void setup () {pinMode (trigPin, OUTPUT); // Asettaa trigPin: n Output pinMode -asetukseksi (echoPin, INPUT); // Asettaa echoPinin Input Serial.begin (9600); // Aloittaa sarjaliikenteen}

3. void loop () on toiminto, joka toimii yhä uudestaan ​​silmukassa. Tässä olemme koodanneet mikro-ohjaimen siten, että se lähettää HIGH-signaalin ultraäänianturin liipaisintappiin, wits 20 mikrosekunnin ajan ja lähettää LOW-signaalin siihen.

void loop () {// Asettaa trigPin-arvon HIGH-tilaan 10 mikrosekunniksi digitalWrite (trigPin, HIGH); // lähettää HIGH-signaalin ensimmäisen anturin viiveen laukaisussaMikrosekunnit (10); // odota 10 mikrosekuntia digitalWrite (trigPin, LOW); // lähettää LOW-signaalin ensimmäisen anturiviiveen (2) liipaisimeen; // odota 0,2 sekuntia}

Koodi vastaanottimen puolelle

1. Alussa alustetaan Arduino-kortin nastat, jotka liitetään ultraäänianturiin. Sitten ilmoitetaan muuttujat, joita käytetään arvojen tallentamiseen ajan ja etäisyyden laskemiseksi koodin ajoajan aikana.

// määrittelee nastanumerot const int trigPin = 9; // Yhdistä ultraäänianturin trig-nasta Arduino const int echoPin = 10 -nappiin 9; // Liitä ultraäänianturin ekotappi Arduinon pin10: een // määrittelee muuttujat pitkäksi ajaksi; // muuttuja tallentamaan ultraääniaallon t kulkeman ajan etäisyys; // muuttuja etäisyyden säilyttämiseksi laskettu

2. mitätön asennus () on toiminto, joka toimii vain kerran käynnistyksessä, kun kortin virta kytketään päälle tai aktivointipainiketta painetaan. Tässä molemmat Arduinon nastat ilmoitetaan käytettävän INPUT- ja OUTPUT-tuloina. Siirtonopeus on asetettu tähän toimintoon. Siirtonopeus on nopeus bitteinä sekunnissa, jolla mikro-ohjain kommunikoi ultraäänianturin kanssa.

void setup () {pinMode (trigPin, OUTPUT); // Asettaa trigPin: n Output pinMode -asetukseksi (echoPin, INPUT); // Asettaa echoPinin Input Serial.begin (9600); // Aloittaa sarjaliikenteen}

3. void Trigger_US () on toiminto, jota käytetään toisen ultraäänianturin laukaisutapin väärennettyyn laukaisuun. Synkronoimme molempien anturien laukaisunastan liipaisuajan.

void Trigger_US () {// Fake trigger Yhdysvaltain anturin digitalWrite (trigPin, HIGH); // Lähetä HIGH-signaali toisen anturin viiveen mikrosekunnissa (10); // odota 10 mikrosekuntia digitalWrite (trigPin, LOW); // lähettää LOW-signaalin liipaisintapin toiselle lähettäjälle}

Neljä. mitätön Calc () on toiminto, jota käytetään laskemaan aika, jonka ultraäänisignaali kuluttaa ensimmäisestä anturista toiseen anturiin.

void Calc () // -toiminto ultraääniaallon kulkemiseen kuluvan ajan laskemiseksi {kesto = 0; // kesto asetettiin aluksi nollaan Trigger_US (); // kutsu Trigger_US-toiminto while (digitalRead (echoPin) == HIGH); // eo-pin-tila suurella viiveellä (2); // laittaa 0,2 sekunnin viive Trigger_US (); // kutsu Trigger_US-toiminnon kesto = pulseIn (echoPin, HIGH); // laskea käytetty aika}

5. Täällä void loop () Laskemme etäisyyden käyttämällä ultraäänisignaalin kulkemaa aikaa ensimmäisestä anturista toiseen anturiin.

void loop () {Pdistance = etäisyys; Laskettu (); // kutsu funktion Calc () etäisyys = kesto * 0,034; // ultraääniaallon kulkeman matkan laskeminen if (Pdistance == distance || Pdistance == distance + 1 || Pdistance == distance-1) {Serial.print ('Measured Distance:'); // tulosta sarjakuvanäytölle Serial.println (etäisyys / 2); // tulosta sarjakuvaruudulle} //Serial.print('Distance: '); //Serial.println(distance/2); viive (500); // odota 0,5 sekuntia}