Kazalo:

Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom: 20 korakov (s slikami)
Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom: 20 korakov (s slikami)

Video: Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom: 20 korakov (s slikami)

Video: Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom: 20 korakov (s slikami)
Video: Контролируем качество кода с помощью SonarQube. 2024, November
Anonim
Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom
Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom
Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom
Primerjava sonarjev LV-MaxSonar-EZ in HC-SR04 z Arduinom

Ugotavljam, da številni projekti (zlasti roboti) zahtevajo ali imajo koristi od merjenja razdalje do predmeta v realnem času. Sonarji so relativno poceni in jih je mogoče enostavno povezati z mikrokrmilnikom, kot je Arduino.

Ta Instructable primerja dve enoti za iskanje sonarja, ki ju je enostavno kupiti, in prikazuje, kako ju povezati z Arduinom, kakšno kodo je potrebno za branje vrednosti iz njih in kako se v različnih situacijah 'merita' med seboj. Upam, da boste tako pridobili vpogled v prednosti in slabosti obeh naprav, ki vam bodo pomagale pri uporabi najprimernejše naprave v naslednjem projektu.

Želel sem primerjati izjemno priljubljeno napravo HC-SR04 (hroščevo oko) z manj pogosto napravo LV-MaxSonar-EZ, da vidim, kdaj bom morda raje uporabil eno kot drugo. Želel sem deliti svoje ugotovitve in nastavitev, tako da lahko eksperimentirate z obema in se odločite, kaj boste uporabili pri naslednjem projektu.

Zakaj ta dva…

Zakaj HC-SR04? '' Bug-Eye '' HC-SR04 je izjemno priljubljen-iz nekaj razlogov:

  • Je poceni - 2 USD ali manj, če ga kupite na veliko
  • Relativno enostavno je vmesnik
  • Mnogi, mnogi projekti ga uporabljajo - zato je dobro znan in dobro razumljen

Zakaj LV-MaxSonar-EZ?

  • Vmesnik je zelo enostaven
  • Ima dobro/enostavno obliko za vključitev v projekt
  • Ima 5 različic, ki obravnavajo različne merilne zahteve (glej podatkovni list)
  • Je (običajno) veliko bolj natančen in zanesljiv kot HC-SR04
  • Je cenovno ugoden - od 15 do 20 dolarjev

Poleg tega upam, da boste v kodi Arduino, ki sem jo napisal za primerjavo, našli koščke in kose v vaših projektih, tudi zunaj aplikacij za iskanje dosega.

Predpostavke:

  • Poznate Arduino in Arduino IDE
  • Arduino IDE je nameščen in deluje na vašem razvojnem stroju (PC/Mac/Linux)
  • Imate povezavo od Arduino IDE do vašega Arduina, da naložite in zaženete programe ter komunicirate

Obstajajo navodila in drugi viri, ki vam lahko pomagajo pri tem, če je potrebno.

Zaloge

  • Daljinomer HC-SR04 'Bug-Eye'
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4-uporabljam "1", vendar imajo vse različice enak vmesnik)
  • Arduino UNO
  • Spajkalna deska
  • Pin Header - 7 -polni 90 ° (za napravo MaxSonar glejte * spodaj za uporabo 180 °)
  • Mostiček za trak - 5 žic, moški - moški
  • Mostiček za tračni kabel - 2 žici, moški - moški
  • Skakalna žica - moški -moški
  • Priključna žica - rdeča in črna (za napajanje od Arduina do plošče in plošče do naprav)
  • Računalnik z Arduino IDE in kablom USB za povezavo z Arduino UNO

* MaxSonar nima priložene glave, zato lahko uporabite glavo, ki je najbolj primerna za vaš projekt. Za ta Instructable sem uporabil 90 ° glavo, da sem olajšal priklop na mizo. V nekaterih projektih bi bila 180 ° (ravna) glava boljša. Prilagam fotografijo, ki prikazuje, kako to priklopiti, da vam jih ni treba zamenjati. Če bi raje uporabili 180 ° glavo, boste za povezavo, kot kaže moja fotografija, potrebovali dodaten 7-žilni moško-ženski mostiček.

Skladišče Git Hub: Datoteke projektov

1. korak: Lov …

Lov…
Lov…

Preden se lotimo podrobnosti o tem, kako stvari povezati, da boste lahko sami preizkusili ti dve fantastični napravi, sem želel opisati nekaj stvari, za katere upam, da vam bo ta Instructable pomagal.

Ker je naprava MaxSonar manj uporabljena in manj razumljiva v primerjavi z napravo HC-SR04, sem želel pokazati:

  • Kako povezati napravo MaxSonar z mikrokrmilnikom (v tem primeru Arduino)
  • Kako meriti z različnih izhodov naprave MaxSonar
  • Primerjajte povezovanje naprave MaxSonar z napravo HC-SR04
  • Preizkusite sposobnost merjenja razdalje predmetov z različnimi površinami
  • Zakaj bi lahko izbrali eno napravo pred drugo (ali oboje uporabljali skupaj)

Upam, da vam bo ta Instructable pomagal pri tem lovu …

2. korak: Začetek - nastavitev Arduino -Breadboard

Začetek - nastavitev Arduino -Breadboard
Začetek - nastavitev Arduino -Breadboard

Če ste izdelovali prototipe z Arduinom, verjetno že imate nastavitev Arduino-Breadboard, ki vam ustreza. Če je tako, sem prepričan, da ga lahko uporabite za ta Instructable. Če ne, sem tako nastavil svojega - kopirajte ga za ta in prihodnje projekte.

  1. Arduino UNO in majhno brezžično ploščo pritrdim na kos 3,3/8 "x 4-3/4" (8,6 x 12,0 cm) z gumijastimi nogami na dnu.
  2. Uporabljam rdečo in črno 22-AWG priključno žico za priključitev +5V in GND iz Arduina na razdelilnik napajalne plošče
  3. Na razdelilni trak med ozemljitvijo in zemljo sem vključil 10 µF tantalov kondenzator, ki pomaga zmanjšati hrup energije (vendar ta projekt tega ne zahteva)

To zagotavlja lepo platformo, s katero je enostavno izdelati prototip.

3. korak: Povežite LV-MaxSonar-EZ

Povežite LV-MaxSonar-EZ
Povežite LV-MaxSonar-EZ
Povežite LV-MaxSonar-EZ
Povežite LV-MaxSonar-EZ
Povežite LV-MaxSonar-EZ
Povežite LV-MaxSonar-EZ

Z 90 ° glavo, spajano na napravi MaxSonar, jo je enostavno priključiti na mizo. 5 -polni tračni kabel nato poveže MaxSonar z Arduinom, kot je prikazano na diagramu. Poleg tračnega kabla uporabljam kratke koščke rdeče in črne priključne žice z razdelilnika za napajanje naprave.

Ožičenje:

MaxSonar Arduino Barva
1 (ČB) Napajanje-GND Rumena
2 (PW) Digital-5 Zelena
3 (AN) Analog-0 Modra
4 (RX) Digital-3 Vijolična
5 (TX) Digital-2 Siva
6 (+5) +5 tirnica BB-PWR rdeča
7 (GND) GND BB-PWR tirnica Črna

Opomba:

Naj vam število povezav, uporabljenih v tem navodilu, ne prepreči upoštevanja MaxSonarja za vaš projekt. Ta Instructable uporablja vse možnosti vmesnika MaxSonar, da ponazori njihovo delovanje in jih primerja med seboj in z napravo HC-SR04. Za določeno uporabo (z uporabo ene od možnosti vmesnika) bo projekt običajno uporabil enega ali dva vmesniška zatiča (plus napajanje in ozemljitev).

4. korak: Priključite HC-SR04

HC-SR04 je običajno opremljen z glavo 90 °, ki je že pritrjena, zato ga je enostavno priključiti na ploščo. 2-polni tračni kabel nato poveže HC-SR04 z Arduinom, kot je prikazano na diagramu. Za napajanje naprave poleg tračnega kabla uporabljam kratke koščke rdeče in črne priključne žice z razdelilnika.

HC-SR04 Arduino Barva
1 (VCC) +5 tirnica BB-PWR rdeča
2 (TRIG) Digital-6 Rumena
3 (ECHO) Digital-7 Oranžna
4 (GND) GND BB-PWR tirnica Črna

5. korak: Povežite izbirnik možnosti 'HC-SR04'

Ko sem začel s tem projektom, je bil moj namen preprosto preizkusiti različne možnosti vmesnika naprave MaxSonar. Ko sem to začel izvajati, sem se odločil, da bi ga bilo lepo primerjati z vseprisotno napravo HC-SR04 (bugeye). Vendar sem želel, da bi lahko tekel/preizkusil brez vključenega, zato sem v kodo dodal možnost/test.

Koda preveri vhodni zatič in preveri, ali je treba napravo HC-SR04 vključiti v odčitke meritev in izhodov.

Na diagramu je to prikazano kot stikalo, vendar na plošči preprosto uporabim mostiček (kot je razvidno iz fotografij). Če je žica priključena na GND, bo HC-SR04 vključen v meritve. Koda "potegne navzgor" (naredi vhod visok/resničen) v Arduinu, tako da HC-SR04 ne bo merjen, če ni potegnjen nizko (povezan z GND).

Čeprav se je ta Instructable spremenil v primerjavo obeh naprav, sem se odločil, da to pustim, da ponazorim, kako lahko v svoj projekt vključite/izključite različne naprave/možnosti.

Ogledna plošča Arduino Barva
GND BB-PWR tirnica Digital-12 Bela

6. korak: Naj vse deluje…

Naj vse deluje…
Naj vse deluje…
Naj vse deluje…
Naj vse deluje…
Naj vse deluje…
Naj vse deluje…

Zdaj, ko je vse priključeno - čas je, da stvari delujejo!

Kot je omenjeno v "Predpostavkah" - ne bom razlagal, kako deluje Arduino IDE ali kako programirati Arduino (podrobno).

Naslednji razdelki razčlenijo kodo Arduino, ki je vključena v ta projekt.

Odstranite celoten arhiv na mesto, ki ga uporabljate za razvoj Arduina. Naložite kodo `MaxSonar-outputs.ino` v svoj Arduino IDE in začnimo!

7. korak: postavitev projekta

Projekt vsebuje informacije o napravi LV-MaxSonar-EZ, shemi vezja, README in kodi Arduino. Shema vezja je v formatu Fritzing kot tudi slika PNG. README je v formatu Markdown.

8. korak: Vnos kode…

V tem navodilu ne morem iti skozi vse vidike kode. Pokrivam nekatere podrobnosti na visoki ravni. Spodbujam vas, da v kodi preberete komentar najvišje ravni in se poglobite v metode.

Komentarji ponujajo veliko informacij, ki jih tukaj ne bom ponavljal.

V kodi za nastavitev želim opozoriti na nekaj stvari …

  • Stavka `_DEBUG_OUTPUT` - spremenljivka in #define
  • Opredelitve "zatičev" Arduino, ki se uporabljajo za vmesnik
  • Opredelitve faktorjev pretvorbe, uporabljenih pri izračunih

Odpravljanje napak se uporablja po vsej kodi in pokazal bom, kako jo je mogoče dinamično vklopiti/izklopiti.

"Definicije" se uporabljajo za zatiče in pretvorbe Arduino, da olajšajo uporabo te kode v drugih projektih.

Odpravljanje napak …

V razdelku »Odpravljanje napak« so opredeljene spremenljivka in nekateri makri, ki olajšajo vključitev informacij za odpravljanje napak v serijski izhod na zahtevo.

Logična spremenljivka `_DEBUG_OUTPUT` je nastavljena na false v kodi (lahko je nastavljena na true) in se uporablja kot test v makrih 'DB_PRINT …`. V kodi ga lahko dinamično spreminjamo (kot je prikazano v metodi `setDebugOutputMode`).

Globalni…

Po definicijah koda ustvari in inicializira nekaj globalnih spremenljivk in objektov.

  • SoftwareSerial (glej naslednji razdelek)
  • _loopCount - Uporablja se za prikaz glave v vseh 'n' vrsticah
  • _inputBuffer - Uporablja se za zbiranje serijskega/terminalskega vhoda za možnosti obdelave (odpravljanje napak vklop/izklop)

9. korak: Arduino programsko-serijski …

Ena od možnosti vmesnika MaxSonar je serijski tok podatkov. Vendar pa Arduino UNO omogoča samo eno serijsko podatkovno povezavo, ki se uporablja/deli z vrati USB za komunikacijo z Arduino IDE (gostiteljskim računalnikom).

Na srečo je v Arduino IDE vključena knjižnična komponenta, ki uporablja par Arduino digitalno-I/O zatičev za izvajanje vmesnika serijski-v/o. Ker serijski vmesnik MaxSonar uporablja 9600 BAUD, je ta "programski" vmesnik popolnoma sposoben upravljati komunikacijo.

Za tiste, ki uporabljajo Arduino-Mega (ali drugo napravo, ki ima več serijskih vrat HW), vas prosimo, da prilagodite kodo za uporabo fizičnih serijskih vrat in odpravite potrebo po SW-Serial.

Metoda `setup` inicializira vmesnik` SoftwareSerial` za uporabo z napravo MaxSonar. Potreben je samo sprejem (RX). Vmesnik je "obrnjen", da ustreza izhodu MaxSonarja.

10. korak: Koda - nastavitev

Kot je opisano zgoraj, metoda "setup" inicializira vmesnik "SoftwareSerial" in fizični serijski vmesnik. Konfigurira vhodno -izhodne zatiče Arduino in pošlje glavo.

11. korak: Koda - zanka

Koda `loop 'poteka skozi naslednje:

  • Iznesite glavo (uporablja se za odpravljanje napak in ploter)
  • Sprožite MaxSonar za merjenje
  • Preberite vrednost MaxSonar Pulse-Width
  • Preberite vrednost MaxSonar Serial-Data
  • Preberite analogno vrednost MaxSonar
  • Preverite možnost 'HC-SR04' in, če je omogočena:

    Sprožite in preberite napravo HC-SR04

  • Iznesite podatke v obliki, ločeni z zavihki, ki jo lahko uporablja serijski ploter
  • Počakajte, da mine dovolj časa, da lahko naredite drugo meritev

12. korak: Koda - sprožite MaxSonar. Preberite vrednost PW

MaxSonar ima dva načina: "sprožen" in "neprekinjen"

Ta Instructable uporablja "sprožen" način, vendar lahko številni projekti koristijo "neprekinjeni" način (glejte podatkovni list).

Pri uporabi "sproženega" načina je prvi veljaven izhod iz Pulse-Width (PW) izhoda. Po tem so preostali izhodi veljavni.

"TiggerAndReadDistanceFromPulse" utripa sprožilni zatič na napravi MaxSonar in bere nastalo vrednost razdalje širine impulza

Upoštevajte, da za razliko od mnogih drugih sonarjev MaxSonar upravlja pretvorbo v obe smeri, zato je odčitana razdalja razdalja do cilja.

Ta metoda zamuja tudi dovolj dolgo, da so drugi izhodi naprave veljavni (serijski, analogni).

13. korak: Koda - preberite serijsko vrednost MaxSonar

Po sprožitvi MaxSonarja (ali v načinu "neprekinjeno"), če je omogočena možnost serijskega izhoda (preko krmilnika "BW - Pin -1"), se pošlje serijski podatkovni tok v obliki "R nnn" avtor CARRIAGE-RETURN '\ r'. 'Nnn' je vrednost palcev do predmeta.

Metoda `readDistanceFromSerial` bere serijske podatke (s programskih zaporednih vrat) in vrednost 'nnn' pretvori v decimalno. Vključuje časovno omejitev, ki preprečuje napake, samo v primeru, da ni sprejeta serijska vrednost.

Korak 14: Koda - preberite analogno vrednost MaxSonar

Analogna vrata MaxSonar stalno zagotavljajo izhodno napetost, sorazmerno z zadnjo izmerjeno razdaljo. To vrednost lahko preberete kadar koli po inicializaciji naprave. Vrednost se posodobi v 50 mS od zadnjega odčitavanja razdalje (sproženi ali neprekinjeni način).

Vrednost je (Vcc/512) na palec. Torej bo pri Vcc iz Arduina 5 voltov vrednost ~ 9,8 mV/in. Metoda `readDistanceFromAnalog` prebere vrednost iz analognega vhoda Arduino in jo pretvori v vrednost" palca ".

Korak 15: Koda - Sprožite in preberite HC -SR04

Čeprav obstajajo knjižnice za branje HC-SR04, sem ugotovil, da so nekatere od njih nezanesljive z različnimi napravami, s katerimi sem testiral. Ugotovil sem, da je koda, ki sem jo vključil v metodo `sr04ReadDistance`, preprosta in zanesljiva (kolikor je lahko poceni naprava HC-SR04).

Ta metoda nastavi in nato sproži napravo HC-SR04 in nato počaka, da izmeri širino povratnega impulza. Merjenje širine impulza vključuje časovno omejitev za obravnavo vprašanja HC-SR04 z zelo dolgim trajanjem impulza, ko ne more najti cilja. Predvideva se, da širina impulza, daljša od ciljne razdalje ~ 10 čevljev, ni predmet ali predmet, ki ga ni mogoče prepoznati. Če je časovna omejitev dosežena, se kot razdalja vrne vrednost '0'. To 'razdaljo' (širino impulza) lahko prilagodite z vrednostmi #define.

Širina impulza se pretvori v krožno razdaljo, preden se vrne kot razdalja do predmeta.

Korak 16: Koda - Podpora za serijski ploter Arduino IDE

Koda - Podpora za serijski ploter Arduino IDE
Koda - Podpora za serijski ploter Arduino IDE

Zdaj za izhod!

Metoda `loop 'sproži zbiranje meritev razdalje od obeh naprav - toda kaj storimo z njo?

No, seveda ga bomo poslali, da si ga lahko ogledate na konzoli - vendar želimo več!

Arduino IDE ponuja tudi vmesnik serijskega ploterja. To bomo uporabili za prikaz v realnem času grafa razdalje do našega objekta od izhodov naših dveh naprav.

Serijski ploter sprejema glavo, ki vsebuje oznake vrednosti, nato pa več vrstic razmejenih vrednosti, ki se narišejo kot graf. Če se vrednosti redno izpisujejo (enkrat na "toliko sekund"), graf prikaže vizualizacijo razdalje do predmeta skozi čas.

Metoda `loop 'prikaže tri vrednosti iz MaxSonarja in vrednost iz HC-SR04 v obliki, ločeni z zavihki, ki jo je mogoče uporabiti s serijskim ploterjem. Enkrat na vsakih 20 vrstic prikaže glavo (samo v primeru, da je serijski ploter omogočen sredi toka).

To vam omogoča, da si tako vizualizirate razdaljo do ovire in tudi vidite razliko v vrednostih, ki jih vrneta obe napravi.

17. korak: Koda - odpravljanje napak …

Koda - odpravljanje napak …
Koda - odpravljanje napak …
Koda - odpravljanje napak …
Koda - odpravljanje napak …

Odpravljanje napak je nujno. Kako lahko odkrijete težavo, če nekaj ne deluje po pričakovanjih?

Prva vrstica razumevanja je pogosto nekaj "preprostih" besedilnih izhodov, ki lahko nakazujejo, kaj se dogaja. Te lahko dodate kodi, kadar in kjer je to potrebno za izsleditev težave, nato pa jih odstranite, ko težavo odpravite. Dodajanje in odstranjevanje kode pa traja dolgo in samo po sebi lahko povzroči druge težave. Včasih je bolje, če ga lahko dinamično omogočite in onemogočite, pri tem pa pustite izvorno kodo pri miru.

V ta Instructable sem vključil mehanizem za dinamično omogočanje in onemogočanje izjav za tiskanje (serijski izhod) iz vnosa, prebranega s serijskega monitorja Arduino IDE (v prihajajoči izdaji naj bi serijski ploter zagotovil tudi ta vnos).

Logično `_DEBUG_OUTPUT` se uporablja v številnih #define metodah tiskanja, ki jih je mogoče uporabiti v kodi. Vrednost spremenljivke _DEBUG_OUTPUT se uporablja za omogočanje tiskanja (pošiljanje izpisa) ali ne. Vrednost se lahko znotraj kode dinamično spreminja, kot to počne metoda `setDebugOutputMode`.

Metoda `setDebugOutputMode` se pokliče iz 'zanke' na podlagi vnosa, prejetega iz serijskega vhoda. Vhod je razčlenjen, da se preveri, ali se ujema z "debug on/off | true/false", da omogoči/onemogoči način odpravljanja napak.

18. korak: Zaključek

Upam, da vam lahko ta preprosta nastavitev strojne opreme in primer kode pomagata razumeti razlike med napravami HC-SR04 in LV-MaxSonar-EZ. Oba sta zelo enostavna za uporabo in verjamem, da ima vsak svoje prednosti. Vedenje, kdaj uporabiti enega in ne drugega, je lahko ključnega pomena za uspešen projekt.

BTW-Namignil sem na zelo enostaven način za natančno merjenje razdalje do predmeta s pomočjo LV-MaxSonar-EZ … Analogni izhod (ena žica) in način neprekinjenega merjenja lahko uporabite za branje razdalje po potrebi z uporabo preprostega kodo v `readDistanceFromAnalog` neposredno iz analognega vhoda Arduino. Ena žica in (zgoščena) ena vrstica kode!

Korak 19: Nadomestna povezava MaxSonar (z uporabo glave 180 °)

Nadomestna povezava MaxSonar (z uporabo glave 180 °)
Nadomestna povezava MaxSonar (z uporabo glave 180 °)
Nadomestna povezava MaxSonar (z uporabo glave 180 °)
Nadomestna povezava MaxSonar (z uporabo glave 180 °)
Nadomestna povezava MaxSonar (z uporabo glave 180 °)
Nadomestna povezava MaxSonar (z uporabo glave 180 °)

Kot sem omenil, MaxSonar nima priklopljene glave. Tako lahko uporabite katero koli povezavo, ki je najbolj primerna za vaš projekt. V nekaterih primerih je morda bolj primerna ravna glava za 180 °. V tem primeru sem želel hitro pokazati, kako lahko to uporabite s tem Instructable. Ta ilustracija prikazuje MaxSonar z ravno glavo, ki je z moško-ženskim tračnim kablom povezana z mizo in nato povezana z Arduinom, kot je opisano v preostalem članku.

20. korak: Arduino koda

Koda Arduino je v mapi 'MaxSonar-outputs' projekta v primerjavi Sonar Range-Finder Primerjava

Priporočena: