Sisukord:

Võrreldes LV-MaxSonar-EZ ja HC-SR04 sonari vahemiku leidjaid Arduinoga: 20 sammu (piltidega)
Võrreldes LV-MaxSonar-EZ ja HC-SR04 sonari vahemiku leidjaid Arduinoga: 20 sammu (piltidega)

Video: Võrreldes LV-MaxSonar-EZ ja HC-SR04 sonari vahemiku leidjaid Arduinoga: 20 sammu (piltidega)

Video: Võrreldes LV-MaxSonar-EZ ja HC-SR04 sonari vahemiku leidjaid Arduinoga: 20 sammu (piltidega)
Video: Võrreldes 2022 ja 2023 treening tulemusi 2024, November
Anonim
LV-MaxSonar-EZ ja HC-SR04 sonari kauguseotsijate võrdlus Arduinoga
LV-MaxSonar-EZ ja HC-SR04 sonari kauguseotsijate võrdlus Arduinoga
LV-MaxSonar-EZ ja HC-SR04 sonari kauguseotsijate võrdlus Arduinoga
LV-MaxSonar-EZ ja HC-SR04 sonari kauguseotsijate võrdlus Arduinoga

Leian, et paljud projektid (eriti robotid) nõuavad või saavad kasu objekti kauguse reaalajas mõõtmisest. Sonari kaugusmõõturid on suhteliselt odavad ja neid saab hõlpsasti liidestada mikrokontrolleriga nagu Arduino.

Selles juhendis võrreldakse kahte hõlpsasti omandatavat sonari kaugusmõõteseadet, näidates, kuidas need Arduinoga ühendada, millist koodi on vaja nende väärtuste lugemiseks ja kuidas need erinevates olukordades üksteise suhtes mõõtu võtavad. Sellest lähtudes loodan, et saate ülevaate kahe seadme plussidest ja miinustest, mis aitavad teil järgmises projektis kõige sobivamat seadet kasutada.

Tahtsin võrrelda ülipopulaarset HC-SR04 (bug-eye) seadet vähem levinud LV-MaxSonar-EZ seadmega, et näha, millal võiksin soovida kasutada ühte, mitte teist. Tahtsin jagada oma järeldusi ja seadistusi, et saaksite nende kahega katsetada ja otsustada, millist järgmises projektis kasutada.

Miks just need kaks…

Miks "HC-SR04"? "Bug-Eye" HC-SR04 on väga populaarne-seda mitmel põhjusel:

  • See on odav - hulgi ostes 2 dollarit või vähem
  • Sellega liidestamine on suhteliselt lihtne
  • Paljud, paljud projektid kasutavad seda - seega on see hästi tuntud ja hästi mõistetav

Miks just LV-MaxSonar-EZ?

  • Sellega liidestamine on väga lihtne
  • Sellel on hea/lihtne vormitegur, mida projekti lisada
  • Sellel on 5 versiooni, mis käsitlevad erinevaid mõõtmisnõudeid (vt andmelehte)
  • See on (tavaliselt) palju täpsem ja usaldusväärsem kui HC-SR04
  • See on taskukohane - 15 kuni 20 dollarit

Lisaks loodan, et leiate võrdluseks kirjutatud Arduino koodist tükke, mis on teie projektides kasulikud isegi väljaspool kaugusmõõtja rakendusi.

Eeldused:

  • Olete tuttav Arduino ja Arduino IDE -ga
  • Arduino IDE on installitud ja töötab teie eelistatud arendusmasinal (PC/Mac/Linux)
  • Programmide üleslaadimiseks ja käitamiseks ning suhtlemiseks on teil Arduino IDE -lt ühendus teie Arduinoga

Vajadusel on selles abiks juhendid ja muud ressursid.

Tarvikud

  • HC-SR04 "Bug-Eye" vahemiku leidja
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4-ma kasutan '1', kuid kõik versioonid liidesed on samad)
  • Arduino UNO
  • Jooteta leivalaud
  • Nööpnõel - 7 tihvtiga 90 ° (MaxSonari seadme puhul vt * allpool 180 ° kasutamise kohta)
  • Lintkaabli hüppaja - 5 traati, mees -mees
  • Lintkaabli hüppaja - 2 traati, mees -mees
  • Jumper traat - mees -mees
  • Ühendusjuhe - punane ja must (toiteallikaks Arduino'st leivaplaadile ja leivalauale seadmetele)
  • Arvuti, millel on Arduino IDE ja USB -kaabel ühendamiseks Arduino UNO -ga

* MaxSonar ei sisalda päist, nii et saate kasutada oma projekti jaoks kõige sobivamat päist. Selle juhise jaoks kasutasin 90 ° päist, et hõlbustada leivaplaadiga ühendamist. Mõnes projektis võib 180 ° (sirge) päis olla parem. Lisan foto, et näidata, kuidas seda ühendada, et te ei peaks neid vahetama. Kui soovite pigem kasutada 180 ° päist, vajate ühendamiseks täiendavat 7-juhtmelist isas-naissoost lintkaablit, nagu minu foto näitab.

Git Hubi hoidla: projektifailid

Samm: tagaajamine…

Tagaajamine…
Tagaajamine…

Enne kui asume üksikasjadesse, kuidas asju ühendada, et saaksite nende kahe fantastilise seadmega ise katsetada, tahtsin kirjeldada mõnda asja, millest loodan, et see juhendab teid.

Kuna MaxSonari seadet kasutatakse vähem ja seda ei mõisteta võrreldes HC-SR04 seadmega, tahtsin näidata:

  • Kuidas ühendada MaxSonari seade mikrokontrolleriga (antud juhul Arduino)
  • Kuidas teha mõõtmisi MaxSonar seadme erinevatest väljunditest
  • Võrrelge MaxSonari seadme liidestamist seadmega HC-SR04
  • Testige võimet mõõta erinevate pindadega objektide kaugust
  • Miks võiksite valida ühe seadme teise asemel (või kasutada mõlemat korraga)

Loodan, et see juhendatav aitab teid selles tagaajamises …

2. samm: alustamine - Arduino -leivaplaadi seadistamine

Alustamine - Arduino -leivaplaadi seadistamine
Alustamine - Arduino -leivaplaadi seadistamine

Kui olete Arduinoga prototüüpe teinud, on teil tõenäoliselt juba olemas Arduino-Breadboardi seadistus, millega olete rahul. Kui jah, siis olen kindel, et saate seda selle juhendi jaoks kasutada. Kui ei, siis panin ma oma seaded paika - kopeerige see julgelt selle ja tulevaste projektide jaoks.

  1. Kinnitan Arduino UNO ja väikese juhtmevaba leivalaua 8,6 x 12,0 cm (3-3/8 "x 4-3/4") plasttüki külge, mille põhjas on kummist jalad.
  2. Ma kasutan punast ja musta 22-AWG haaketraati, et ühendada Arduino +5V ja GND leivaplaadi toitejaotusribaga
  3. Lisan toite-maandusribale 10 µF tantaalkondensaatori, et aidata vähendada müra (kuid see projekt seda ei nõua)

See pakub kena platvormi, millega on lihtne prototüüpi teha.

3. samm: ühendage LV-MaxSonar-EZ juhtmega

Ühendage LV-MaxSonar-EZ juhtmega
Ühendage LV-MaxSonar-EZ juhtmega
Ühendage LV-MaxSonar-EZ juhtmega
Ühendage LV-MaxSonar-EZ juhtmega
Ühendage LV-MaxSonar-EZ juhtmega
Ühendage LV-MaxSonar-EZ juhtmega

MaxSonari seadmele joodetud 90 ° päise abil on seda lihtne leivaplaadiga ühendada. Seejärel ühendab 5 -kontaktiline lintkaabel MaxSonari Arduinoga, nagu on näidatud skeemil. Lisaks lintkaablile kasutan seadme toiteallikaks lühikesi punase ja musta haaketraadi toitejaotusliinilt.

Juhtmestik:

MaxSonar Arduino Värv
1 (mustvalge) Võimsus-GND Kollane
2 (PW) Digitaalne-5 Roheline
3 (AN) Analoog-0 Sinine
4 (RX) Digitaal-3 Lilla
5 (TX) Digitaal-2 Hall
6 (+5) +5 BB-PWR rööbas Punane
7 (GND) GND BB-PWR rööbas Must

Märge:

Ärge laske selles juhendis kasutatavate ühenduste arvul takistada teid oma projekti MaxSonariga arvestamast. See juhend sisaldab kõiki MaxSonari liidese valikuid, et illustreerida nende toimimist ning võrrelda neid omavahel ja HC-SR04 seadmega. Teatud otstarbel (kasutades ühte liidese valikut) kasutab projekt tavaliselt ühte või kahte liidese kontakti (pluss toide ja maandus).

Samm: ühendage HC-SR04 juhtmega

HC-SR04 on tavaliselt varustatud 90 ° päisega, mis on juba kinnitatud, nii et seda on lihtne leivaplaadiga ühendada. Kahe kontaktiga lintkaabel ühendab seejärel HC-SR04 Arduinoga, nagu on näidatud skeemil. Lisaks lintkaablile kasutan seadme toiteallikaks lühikesi punase ja musta haaketraadi toitejaotusliinilt.

HC-SR04 Arduino Värv
1 (VCC) +5 BB-PWR rööbas Punane
2 (TRIG) Digitaalne-6 Kollane
3 (ECHO) Digitaalne-7 Oranž
4 (GND) GND BB-PWR rööbas Must

5. samm: ühendage suvandi „HC-SR04” juhtmed

Selle projektiga alustades oli minu eesmärk lihtsalt testida MaxSonari seadme erinevaid liidese valikuid. Pärast selle käivitamist otsustasin, et oleks tore võrrelda seda kõikjal esineva HC-SR04 (bugeye) seadmega. Kuid ma tahtsin, et saaksin käivitada/testida ilma selleta, nii et lisasin koodi sisse valiku/testi.

Kood kontrollib sisendnõela, et näha, kas HC-SR04 seade tuleks lisada mõõtmisnäitu ja väljundisse.

Diagrammil on see näidatud lülitina, kuid leivaplaadil kasutan lihtsalt hüppajatraati (nagu fotodel näha). Kui juhe on ühendatud GND-ga, kaasatakse HC-SR04 mõõtmistesse. Kood "tõmbab üles" (muudab sisendi kõrgeks/tõeseks) Arduinos, nii et kui seda ei tõmmata madalale (ühendatud GND-ga), ei mõõdeta HC-SR04.

Kuigi see juhendamine muutus kahe seadme võrdluseks, otsustasin selle jätta, et illustreerida, kuidas võiksite oma projekti erinevaid seadmeid/valikuid kaasata/välistada.

Leivalaud Arduino Värv
GND BB-PWR rööbas Digitaalne-12 Valge

6. samm: pange kõik toimima…

Et kõik toimiks…
Et kõik toimiks…
Et kõik toimiks…
Et kõik toimiks…
Et kõik toimiks…
Et kõik toimiks…

Nüüd, kui kõik on ühendatud, on aeg asjad toimima panna!

Nagu on mainitud jaotises „Eeldused” - ei hakka ma selgitama, kuidas Arduino IDE töötab või kuidas Arduino programmeerida (üksikasjalikult).

Järgmised jaotised jagavad sellesse projekti kaasatud Arduino koodi.

Pakkige kogu arhiiv lahti sellises kohas, mida kasutate Arduino arendamiseks. Laadige kood "MaxSonar-outputs.ino" oma Arduino IDE-sse ja alustame!

7. samm: projekti paigutus

Projekt sisaldab teavet seadme LV-MaxSonar-EZ, lülitusskeemi, README ja Arduino koodi kohta. Lülitusskeem on nii Fritzingi vormingus kui ka-p.webp

8. toiming: koodi sisestamine…

Selles juhendis ei saa ma koodi kõiki aspekte läbi vaadata. Ma käsitlen mõningaid kõrgetasemelisi detaile. Soovitan teil lugeda koodi tipptasemel kommentaari ja süveneda meetoditesse.

Kommentaarid annavad palju teavet, mida ma siin kordama ei hakka.

Seadistuskoodis tahan juhtida tähelepanu mõnele asjale …

  • "_DEBUG_OUTPUT" - muutujad ja #define laused
  • Liidese jaoks kasutatavate Arduino nööpnõelte määratlused
  • Arvutustes kasutatud teisendustegurite määratlused

Silumist kasutatakse kogu koodis ja ma näitan, kuidas seda saab dünaamiliselt sisse/välja lülitada.

Mõisteid kasutatakse Arduino tihvtide ja teisenduste jaoks, et hõlbustada selle koodi kasutamist teistes projektides.

Silumine…

Jaotis „Silumine” määratleb muutuja ja mõned makrod, mis hõlbustavad silumisandmete lisamist nõudmisel jadaväljundisse.

Loogiline muutuja „_DEBUG_OUTPUT“on koodis seatud väärtusele false (saab määrata tõeseks) ja seda kasutatakse testina makrodes „DB_PRINT…“. Seda saab koodis dünaamiliselt muuta (nagu on näha meetodis "setDebugOutputMode").

Globaalid…

Pärast määratlusi loob kood ja vormistab mõned globaalsed muutujad ja objektid.

  • SoftwareSerial (vt järgmist jaotist)
  • _loopCount - kasutatakse päise väljastamiseks iga 'n' rea järel
  • _inputBuffer - kasutatakse jada-/terminalisisendi kogumiseks protsessivalikute jaoks (silumine sisse/välja)

Samm: Arduino tarkvara-seeria…

Üks MaxSonari liidese valikutest on jadaandmevoog. Kuid Arduino UNO pakub ainult ühte jadaandmesideühendust ja seda kasutatakse/jagatakse USB -pordiga Arduino IDE -ga (hostarvuti) suhtlemiseks.

Õnneks on Arduino IDE-ga kaasas raamatukogukomponent, mis kasutab jada-i/o-liidese rakendamiseks paari Arduino digitaalseid I/O-kontakte. Kuna MaxSonari jadaliides kasutab 9600 BAUD, on see tarkvaraliides suurepäraselt võimeline suhtlust haldama.

Neile, kes kasutavad Arduino-Megat (või muud seadet, millel on mitu HW jadaporti), kohandage julgelt koodi, et kasutada füüsilist jadaporti, ja välistage vajadus SW-seeria järele.

Seadistusmeetod lähtestab MaxSonari seadmega kasutatava liidese SoftwareSerial. Vaja on ainult vastuvõtmist (RX). Liides on ümberpööratud, et see vastaks MaxSonari väljundile.

10. samm: kood - seadistamine

Nagu eespool kirjeldatud, initsialiseerib seadistusmeetod nii tarkvaraliidese liidese kui ka füüsilise jadaliidese. See konfigureerib Arduino I/O kontaktid ja saadab välja päise.

11. samm: kood - silmus

Silmukood töötab järgmiselt:

  • Väljundi päis (kasutatakse silumiseks ja joonistajaks)
  • Käivitage MaxSonar mõõtmiseks
  • Lugege MaxSonari impulsi laiuse väärtust
  • Lugege MaxSonari jadaandmete väärtust
  • Lugege MaxSonari analoogväärtust
  • Kontrollige suvandit „HC-SR04” ja kui see on lubatud:

    Käivitage ja lugege seade HC-SR04

  • Väljendage andmed vahekaardiga piiritletud vormingus, mida saab kasutada jadaplaan
  • Oodake, kuni on möödunud piisavalt aega, et saaks teha uue mõõtmise

12. samm: kood - käivitage MaxSonar. Lugege PW väärtust

MaxSonaril on kaks režiimi: käivitatud ja pidev

Selles juhendis kasutatakse käivitatud režiimi, kuid paljud projektid saavad kasu pidevast režiimist (vt andmelehte).

Käivitatud režiimi kasutamisel on esimene kehtiv väljund impulsi laiuse (PW) väljundist. Pärast seda kehtivad ülejäänud väljundid.

TiggerAndReadDistanceFromPulse impulsib MaxSonar seadme päästikut ja loeb saadud impulsi laiuse kauguse väärtust

Pange tähele, et erinevalt paljudest teistest sonariseadmetest tegeleb MaxSonar edasi-tagasi teisendamisega, seega on loetud vahemaa sihtmärgi kaugus.

See meetod viivitab ka piisavalt kaua, et seadme muud väljundid oleksid kehtivad (jada, analoog).

Samm 13: kood - lugege MaxSonari jadaväärtust

Pärast MaxSonari käivitamist (või pidevas režiimis), kui jadaväljundi valik on lubatud (juhtelemendi 'BW - Pin -1' kaudu), saadetakse jadaandmevoog kujul "R nnn", millele järgneb CARRIAGE-RETURN '\ r'. "Nnn" on tolli väärtus objektile.

Meetod "readDistanceFromSerial" loeb seeriaandmeid (tarkvara jadapordist) ja teisendab väärtuse "nnn" kümnendkohaks. See sisaldab tõrkekindlat ajalõppu, juhuks, kui seeriaväärtust ei saada.

14. samm: kood - lugege MaxSonari analoogväärtust

MaxSonari analoogport tagab pidevalt väljundpinge, mis on proportsionaalne viimase mõõdetud vahemaaga. Seda väärtust saab lugeda igal ajal pärast seadme lähtestamist. Väärtust uuendatakse 50 mS jooksul pärast viimast kauglugemist (käivitatud või pidev režiim).

Väärtus on (Vcc/512) tolli kohta. Niisiis, 5 -voldise Arduino Vcc -ga on väärtus ~ 9,8 mV/in. Meetod "readDistanceFromAnalog" loeb väärtuse Arduino analoogsisendist ja teisendab selle "tolliseks" väärtuseks.

15. samm: kood - käivitage ja lugege HC -SR04

Kuigi on olemas raamatukogud HC-SR04 lugemiseks, olen leidnud, et mõned neist ei ole erinevate seadmetega, millega olen katsetanud, ebausaldusväärsed. Leidsin, et kood, mille olen lisanud meetodisse `sr04ReadDistance`, lihtne ja usaldusväärsem (nii palju kui odav HC-SR04 seade võib olla).

See meetod määrab ja käivitab seejärel seadme HC-SR04 ning ootab seejärel tagasipöörde impulsi laiuse mõõtmist. Impulsi laiuse mõõtmine sisaldab ajalõppu, et tegeleda väga pika impulsi kestusega HC-SR04 probleemiga, kui see ei leia sihtmärki. Eeldatakse, et impulsi laius, mis on pikem kui ~ 10 jalga sihtmärgi kaugus, ei ole objekt ega objekt, mida ei suudeta ära tunda. Kui aeg on täis, tagastatakse vahekaugusena väärtus „0”. Seda kaugust (impulsi laiust) saab reguleerida #define väärtuste abil.

Impulsi laius teisendatakse edasi-tagasi vahemaaks, enne kui see tagastatakse kaugusena objektini.

16. samm: kood - Arduino IDE jadaplotterite tugi

Kood - Arduino IDE jadaplotterite tugi
Kood - Arduino IDE jadaplotterite tugi

Nüüd väljundist!

Silmumeetod käivitab kahe seadme vahekauguse mõõtmise - kuid mida me sellega teeme?

Muidugi saadame selle välja, et seda saaks konsoolil vaadata - aga me tahame rohkem!

Arduino IDE pakub ka seeriaplotteri liidest. Kasutame seda reaalajas graafiku esitamiseks meie objekti kaugusest meie kahe seadme väljunditest.

Seeriaplotter aktsepteerib päist, mis sisaldab väärtussilte ja seejärel mitu rida piiritletud väärtusi, mis tuleb graafikuna joonistada. Kui väärtused väljastatakse regulaarselt (üks kord iga „nii mitme sekundi” järel), näitab graafik objekti kaugust aja jooksul.

Meetod `loop 'väljastab MaxSonari kolm väärtust ja väärtuse HC-SR04 vahekaardiga eraldatud vormingus, mida saab kasutada jadaplaaniga. Kord iga 20 rea järel väljastab see päise (igaks juhuks, kui jadaplotter on voo keskel lubatud).

See võimaldab teil visualiseerida takistuse kaugust ja näha ka kahe seadme tagastatavate väärtuste erinevust.

17. samm: kood - silumine …

Kood - silumine…
Kood - silumine…
Kood - silumine…
Kood - silumine…

Silumine on hädavajalik. Kuidas saate probleemile jälile jõuda, kui midagi ei tööta ootuspäraselt?

Mõistmise esimene rida on sageli mõned lihtsad tekstiväljundid, mis võivad näidata toimuvat. Neid saab koodile lisada siis, kui ja kus on vaja probleemi leidmiseks, ja seejärel eemaldada, kui probleem on lahendatud. Koodi lisamine ja eemaldamine on aga aeganõudev ja võib iseenesest põhjustada muid probleeme. Mõnikord on parem, kui saate selle dünaamiliselt lubada ja keelata, jättes lähtekoodi üksi.

Sellesse juhendamisse olen lisanud mehhanismi, mis võimaldab Arduino IDE jadamonitorilt loetud sisendist dünaamiliselt silumis- (jadaväljundi) avalduste lubamise ja keelamise (tulevases väljaandes eeldatavasti pakub seda sisendit ka seeriaplotter).

Tõeväärtust `_DEBUG_OUTPUT` kasutatakse paljudes #define printimismeetodites, mida saab koodi sees kasutada. Muutuja _DEBUG_OUTPUT väärtust kasutatakse printimise lubamiseks (väljundi saatmiseks) või mitte. Väärtust saab koodi sees dünaamiliselt muuta, nagu seda teeb meetod "setDebugOutputMode".

Meetodit "setDebugOutputMode" kutsutakse "silmusest" jadasisendist saadud sisendi põhjal. Sisend analüüsitakse, et näha, kas see vastas silumisrežiimi lubamiseks/keelamiseks "silumine sisse/välja | tõene/vale".

18. samm: järeldus

Loodan, et see lihtne riistvara seadistamine ja näidiskood aitavad teil mõista erinevusi HC-SR04 ja LV-MaxSonar-EZ seadmete vahel. Mõlemat on väga lihtne kasutada ja ma usun, et mõlemal on oma eelised. Teadmine, millal kasutada üht, mitte teist, võib olla eduka projekti jaoks oluline.

BTW-vihjasin väga hõlpsasti kasutatavale meetodile objekti kauguse täpseks mõõtmiseks LV-MaxSonar-EZ abil … Vajadusel saate kauguse lugemiseks kasutada analoogväljundit (üks juhe) ja pidevat mõõtmisrežiimi. koodi "readDistanceFromAnalog" otse Arduino analoogsisendist. Üks juhe ja (kondenseeritud) üks koodirida!

19. samm: alternatiivne MaxSonari ühendus (180 ° päise abil)

Alternatiivne MaxSonari ühendus (180 ° päise abil)
Alternatiivne MaxSonari ühendus (180 ° päise abil)
Alternatiivne MaxSonari ühendus (180 ° päise abil)
Alternatiivne MaxSonari ühendus (180 ° päise abil)
Alternatiivne MaxSonari ühendus (180 ° päise abil)
Alternatiivne MaxSonari ühendus (180 ° päise abil)

Nagu ma mainisin, pole MaxSonaril päist ühendatud. Niisiis, saate kasutada mis tahes ühendust, mis on teie projekti jaoks kõige sobivam. Mõnel juhul võib 180 ° (sirge) päis olla sobivam. Kui see nii on, tahtsin kiiresti näidata, kuidas saate seda selle juhendiga kasutada. Sellel illustratsioonil on kujutatud sirge päisega MaxSonar, mis on ühendatud leivalauaga isas-naissoost lintkaabli abil ja seejärel ühendatud Arduinoga, nagu on kirjeldatud ülejäänud artiklis.

Samm: Arduino kood

Arduino kood on projekti kaustas „MaxSonar-output“Sonar Range-Finder Comparisonis

Soovitan: