HC-SR04 Ultraäänianturit Arduino Uno -levyllä

Asetettu päälle

HC-SR04 Ultraäänianturit Arduino Uno -levyllä

Lukeminen HC-SR04-anturissa Arduino levyllä on suhteellisen helppoa, mutta entä jos haluat lukea useissa antureissa? Miten teet sen tehokkaalla tavalla? Tässä artikkelissa selitetään esimerkin avulla, kuinka voit lukea tehokkaasti neljässä anturissa ja kuinka voit laajentaa sen edelleen koskemaan useita antureita.

Rakenna 4x HC-SR04 ultraäänianturia Arduino Uno -levylle Rakenna 4x HC-SR04 ultraäänianturia Arduino Uno -levylle

Mikä on HC-SR04

HC-SR04 on irrotettava kortti ultraääniantureilla. Tässä kyltissä on kaksi lieriömäistä esinettä, joista toinen on merkitty kirjaimella "T", joka tarkoittaa "lähetintä", joka tarkoittaa "lähetintä", kun taas toinen on merkitty kirjaimella "R" tarkoittaa "vastaanotin". tarkoittaa "vastaanotin". Lähetin lähettää ultraääniaallon, ja vastaanotin "kuuntelee" tämän ääniaallon törmäävän esineeseen ja heijastuvan takaisin. Lähetyksen ja vastaanoton välillä kuluva aika osoittaa, kuinka kaukana kohde on anturista. Lepakot, delfiinit, valaat ja luotain laivoissa toimivat samalla periaatteella, ja tätä periaatetta kutsutaan usein "kaikupaikaksi".

HC-SR04 irrotuslevy HC-SR04 irrotuslevy

Kuuletko ultraäänen ääniaallon

Jos sinulla ei ole koirasi korvia, et voi kuulla ultraääniaaltoja. HC-SR04 käyttää ääniaaltoa, jonka taajuus on 40 kHz, kun taas ihmiskorva kuulee vain 16 kHz ja nuoremmat ihmiset voivat kuulla jopa 20-22 kHz. Paljon alle ultraääniaallon taajuuden.

Lisäksi ultraääniaalto ei ole radioaalto (kuten älypuhelimen aallot), ja se on täysin vaaraton terveydelle.

Kuinka HC-SR04 toimii

Kuten aiemmin mainittiin, HC-SR04 lähettää ultraääniääntä, joka törmää esineeseen ja palaa anturiin. Anturi laskee ajan, joka kuluu tämän signaalin lähettämisen ja vastaanottamisen välillä. Jos tiedät äänen nopeuden, voit laskea anturin ja kohteen välisen etäisyyden. Ääni ei tietenkään kulje äärettömän kauas ja koska anturin ääniaalto on suhteellisen heikko, mittausalue on myös melko rajallinen. HC-SR04 voi mitata etäisyyksiä jopa noin 400cm (4m). Anturin "katselukulma" tai "mittauskulma" ei myöskään ole ääretön. Anturi ei pysty havaitsemaan esineitä, jotka putoavat 15°:n kulman ulkopuolelle. Siksi on joskus mielenkiintoista käyttää useita antureita, jotka sijoitetaan esimerkiksi ympyrään. Tällä tavalla voit suurentaa mittauskulmaa.

Lue anturi

HC-SR04:n lukemiseksi sinun on generoitava käynnistyspulssi anturin "trigger"-nastalle. Anturin vastaus näkyy sen "kaiku"-nastassa. Molemmat nastat on kytketty Arduino digitaalisiin I/O-nastoihin.

Laukaista

Aloituspulssin luomiseksi sinun on suoritettava seuraavat vaiheet

  1. Liipaisintapin on oltava matalalla vähintään 2 µs (mikrosekuntia).
  2. Liipaisintapin on tällöin oltava korkealla 10 µs
  3. Liipaisimen tappi on alhaalla

Arduino avulla voit tehdä tämän helposti seuraavalla koodilla:

HC-SR04 "Trigger"

Kaiku

Anturin kaikunapissa näkyvä vaste on pulssi, jonka kesto on yhtä suuri kuin ultraääniaallon lähetyksen ja vastaanoton välinen aika, ilmaistaan mikrosekunteina (µs). Yksi mahdollisuus mitata tällainen pulssi Arduino on toiminto "pulseIn":

Meet "echo"

Laske etäisyys

Tietenkin kaiken tämän jälkeen tiedät vain ääniaallon matka-ajan, mutta tämä ei tarkoita, että tiedät etäisyyden. Onneksi äänen nopeus tiedetään ja etäisyys voidaan laskea tällä:

etäisyys [m] = nopeus_ääni [m/s] * aika [s]

ja äänen nopeus on 343m/s, joten

etäisyys [m] = 343 [m/s] * aika [s]

HC-SR04 antaa kuitenkin ajan µs:na ja helpommin etäisyyden laskeminen senttireinä olisi helpompaa, mutta joillain laskelmilla kaavaa voidaan säätää

etäisyys [cm] = 0,0343 [cm/µs] * aika [µs]

Ainoa jäljellä oleva ongelma on, että HC-SR04:n osoittama aika on aika, jolloin pulssi kulkee edestakaisin, ja koska vain etäisyys kohteeseen on hyödyllinen, sinun tarvitsee vain jakaa aika kahdella:

etäisyys = 0,0343 * (aika/2)

Yksinkertainen testiasetus

Nopea testiasetus HC-SR04:n toiminnan testaamiseksi voidaan toteuttaa seuraavalla kaaviolla ja koodilla:

Yksi HC-SR04-anturi Arduino Unossa Yksi HC-SR04-anturi Arduino Unossa

Eenvoudige code voor het testen van een HC-SR04 op een Arduino Uno

Multi HC-SR04

Tästä eteenpäin se on vähän vaikeampaa. Koska toiminto “pulseIn” keskeyttää koodin eikä ole riittävän tarkka, laajennettu koodi käyttää porttirekistereitä ja keskeytyksiä. Jos tämä kuulostaa oudolta, voit löytää lisätietoja tämän artikkelin kirjoittajan verkkosivustolta: http://kunoichi.be/projects/
(sivusto on saatavilla vain englanniksi)

Useita antureita

Jos haluat käyttää useita antureita, voit edetä kolmella tavalla:

  1. erillinen liipaisin per anturi; erillinen kaiku anturia kohden
  2. yhteinen laukaisin; erillinen kaiku anturia kohden
  3. erillinen liipaisin per anturi; yhteinen kaiku

erillinen liipaisin per anturi; erillinen kaiku anturia kohden

Helpoin ja vähiten tehokas tapa on yhdistää jokaisen anturin liipaisin- ja kaikunasta Arduino erilliseen nastaan.
Toisin sanoen 2 nastaa Arduino per anturi.

yhteinen laukaisin; erillinen kaiku anturia kohden

Toinen tapa on yhdistää kaikki anturien liipaisimet ja liittää ne yhteen Arduino nastaan. Kunkin anturin kaikunasta on sitten liitettävä erilliseen Arduino nastaan. Etuna ja haittana on, että kaikki anturit lähettävät vastauksensa samaan aikaan. On mahdollista, että anturit häiritsevät toisiaan, ja tarvitset myös erillisen keskeytysnastan jokaiselle anturille ( Arduino Unossa on vain 2). Voisit käyttää tavallisia nastoja, mutta silloin tarkkuus laskisi hieman.

erillinen liipaisin per anturi; yhteinen kaiku

Jos erittäin nopeaa lukemista ei tarvita, voit silti saavuttaa erittäin hyvän tarkkuuden kolmannella menetelmällä, eikä sinulla ole haittaa, että anturit häiritsevät toisiaan.
Jokainen anturin laukaisinnasta on kytketty erikseen Arduino , ja kaikki kaikunastat on kytketty yhteen Arduino -nastaan. Tätä nastaa kutsutaan keskeytysnastaksi. Koska päätät, mitä liipaisinta ohjataan, tiedät, minkä anturin vaste yhteiseen kaikunapaan on.
Tämä on tehokkain tapa käyttää useita HC-SR04-antureita yhdellä Arduino -levyllä.

Kaavio

Pieni haitta yleisen echo pin -menetelmässä on, että anturit voivat häiritä toisiaan tässä nastassa, mutta se voidaan helposti korjata käyttämällä diodeja. Järjestelmän rakenne on seuraava:

Kaavio 4x HC-SR04 anturia yhteisessä kaikunastassa Kaavio 4x HC-SR04 anturia yhteisessä kaikunastassa

Aikakaavio näyttää kuinka signaalit etenevät.

  1. Anturin 4 käynnistyspulssi (liipaisu) lähetetään.
  2. Tämä vastaa kaikutappiin.
  3. Anturin 3 käynnistyspulssi (liipaisu) lähetetään.
  4. Se reagoi samaan kaikunapaan, mutta koska käynnistyspulssia valvotaan, tiedetään, mistä anturista vastaus tulee.
  5. Anturin 2 käynnistyspulssi (liipaisu) lähetetään.
  6. ...
  7. Toista vaiheesta 1

Loput ovat kirjaimellisesti kopioi/liitä, ja ne voidaan helposti laajentaa useisiin (tai harvempiin) antureihin tällä tavalla.

Aikakaavio 4 laukaisua, 1 kaiku Aikakaavio 4 laukaisua, 1 kaiku

Antureiden lukemisen koodi on seuraava:
(Koodin selitys annetaan itse koodin kommenttikentissä)

Uitbreidbare code voor het uitlezen van meerdere sensoren

Vaikka tämä ei ole nopein menetelmä ja pitkien etäisyyksien ja monien antureiden kanssa läpimenoaika voi olla suhteellisen pitkä, tämä menetelmä tarjoaa joitain etuja

  • tarvitaan vain 1 keskeytysnasta
  • erittäin helposti laajennettavissa
  • anturit eivät häiritse toisiaan
  • optimaalinen anturien määrän käyttö verrattuna käytettävissä oleviin I/O-nastoihin

Virtalähdettä koskeva huomautus

Koska Arduino 5 V nasta voi syöttää rajoitetun virran, on suositeltavaa tarjota ylimääräinen 5 V DC virtalähde antureille. Tästä syystä "Breadbard Power Supply" on sisällytetty komponenttiluetteloon, mutta periaatteessa se voidaan korvata millä tahansa 5 V DC virtalähteellä.

Komponentit

Kaikki tässä projektissa käytetyt komponentit ovat saatavilla osoitteessa Opencircuit, ja ne on lueteltu alla:

HC-SR04 Ultraäänietäisyystunnistusmoduuli Loppu varastosta € 2,30 Leipälauta 830 pistettä - valkoinen Loppu varastosta € 3,15 Uros-uros neulesetti 65 osaa Loppu varastosta € 3,05 Breadboard virtalähde Loppu varastosta € 2,30 Arduino Uno R3 - klooni Varastossa € 11,80 1N4004 400V 1A Tasasuuntausdiodi - 50 kpl Varastossa € 2,60 Kaikki yhteensä € 32,10
lähettänyt Verkkosivusto

Kommentit

Webwinkelkeur Kiyoh Trustpilot Opencircuit