Tartalomjegyzék:

Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val: 20 lépés (képekkel)
Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val: 20 lépés (képekkel)

Videó: Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val: 20 lépés (képekkel)

Videó: Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val: 20 lépés (képekkel)
Videó: Ultrasonic Range Finder - Ultrahangos Távolságmérő 2024, November
Anonim
Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val
Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val
Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val
Az LV-MaxSonar-EZ és a HC-SR04 szonár távolságmérők összehasonlítása az Arduino-val

Azt tapasztalom, hogy sok projekt (különösen a robotok) megköveteli, vagy hasznot húzhat a tárgytól való távolság valós idejű mérésére. A szonár távolságmérők viszonylag olcsók, és könnyen csatlakoztathatók egy olyan mikrovezérlőhöz, mint az Arduino.

Ez az Instructable két könnyen beszerezhető szonár távolságmérő eszközt hasonlít össze, bemutatva, hogyan kell csatlakoztatni őket az Arduino-hoz, milyen kód szükséges az értékek leolvasásához, és hogyan „mérnek” egymással különböző helyzetekben. Ebből remélem, hogy betekintést nyer a két eszköz előnyeibe és hátrányaiba, amelyek segítenek a legmegfelelőbb eszköz használatában a következő projektben.

Össze akartam hasonlítani a rendkívül népszerű HC-SR04 (bug-eye) eszközt a kevésbé elterjedt LV-MaxSonar-EZ eszközzel, hogy lássam, mikor érdemes az egyiket használni a másik helyett. Meg akartam osztani a megállapításaimat és a beállításokat, hogy kísérletezhessen a kettővel, és eldönthesse, melyiket használja a következő projektben.

Miért ez a kettő…

Miért a HC-SR04? A „Bug-Eye” HC-SR04 rendkívül népszerű-néhány okból:

  • Olcsó - tömeges vásárlás esetén 2 dollár vagy kevesebb
  • Viszonylag könnyen kezelhető
  • Sok -sok projekt használja - tehát jól ismert és jól érthető

Miért az LV-MaxSonar-EZ?

  • Nagyon könnyen kezelhető
  • Jó/könnyű formatervezési tényezővel rendelkezik a projektben
  • 5 változata van, amelyek megfelelnek a különböző mérési követelményeknek (lásd az adatlapot)
  • (Általában) sokkal pontosabb és megbízhatóbb, mint a HC-SR04
  • Megfizethető - 15–20 dollár

Ezenkívül remélem, hogy az összehasonlításhoz írt Arduino kódban apró darabokat talál a projektjeiben, még a távolságmérő alkalmazásokon túl is.

Feltételezések:

  • Ismeri az Arduino -t és az Arduino IDE -t
  • Az Arduino IDE telepítve van az Ön által előnyben részesített fejlesztőgépen (PC/Mac/Linux)
  • Az Arduino IDE és az Arduino között van kapcsolata a programok feltöltéséhez és futtatásához, valamint a kommunikációhoz

Vannak utasítások és egyéb források, amelyek szükség esetén segítenek ebben.

Kellékek

  • HC-SR04 „Bug-Eye” távolságmérő
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4-'1' -et használok, de minden verzió ugyanazt használja)
  • Arduino UNO
  • Forrasztás nélküli kenyértábla
  • Tűfejfej - 7 tűs 90 ° (a MaxSonar eszköz esetében lásd * alább a 180 ° -os használatot)
  • Szalagkábel jumper - 5 vezetékes, férfi -férfi
  • Szalagkábel jumper - 2 vezetékes, férfi -férfi
  • Jumper huzal - férfi -férfi
  • Csatlakozó vezeték - piros és fekete (az Arduino áramellátásától a kenyértábláig és a kenyérlapig az eszközökig)
  • Számítógép Arduino IDE -vel és USB -kábellel az Arduino UNO -hoz való csatlakozáshoz

* A MaxSonar nem rendelkezik fejléccel, így a projektnek leginkább megfelelő fejlécet használhatja. Ehhez az Instructable -hez 90 ° -os fejlécet használtam, hogy könnyen be lehessen dugni a kenyértáblába. Egyes projektekben a 180 ° -os (egyenes) fejléc jobb lehet. Mellékelek egy fényképet, hogy bemutassam, hogyan kell összekapcsolni, hogy ne kelljen átkapcsolni. Ha inkább 180 ° -os fejlécet szeretne használni, akkor további 7 vezetékes férfi-női szalagkábel-jumperre lesz szüksége a csatlakoztatáshoz, ahogy a fotóm mutatja.

Git Hub adattár: Projektfájlok

1. lépés: Az üldözés…

A hajsza…
A hajsza…

Mielőtt belevágnánk a részletekbe, hogyan lehet összekapcsolni a dolgokat, hogy saját maga kísérletezzen ezzel a két fantasztikus eszközzel, néhány dolgot le akartam írni, amelyekben remélem, hogy ez az Instructable segít.

Mivel a MaxSonar eszközt kevésbé használják és kevésbé értik a HC-SR04 eszközhöz képest, meg akartam mutatni:

  • Hogyan lehet csatlakoztatni a MaxSonar eszközt egy mikrovezérlőhöz (ebben az esetben egy Arduino-hoz)
  • Hogyan lehet méréseket végezni a MaxSonar eszköz különböző kimeneteiből
  • Hasonlítsa össze a MaxSonar eszköz és a HC-SR04 eszköz interfészét
  • Tesztelje a különböző felületekkel rendelkező tárgyak távolságának mérési képességét
  • Miért válassza az egyik eszközt a másik helyett (vagy használja mindkettőt párhuzamosan)

Remélem, ez az Instructable segít ebben a hajszában …

2. lépés: Első lépések - Arduino -Breadboard beállítás

Első lépések - Arduino -Breadboard Setup
Első lépések - Arduino -Breadboard Setup

Ha az Arduino-val prototípusokat készített, akkor valószínűleg már rendelkezik olyan Arduino-Breadboard beállítással, amely kényelmes. Ha igen, bízom benne, hogy használni tudja ezt az utasítást. Ha nem, így állítottam be az enyémet - nyugodtan másolja le ezt és a jövőbeli projekteket.

  1. Az Arduino UNO-t és egy kisméretű vezeték nélküli kenyértáblát rögzítem egy 8,6 x 12,0 cm-es 3-3/8 "x 4-3/4" (műanyag) darabhoz, alul gumis lábakkal.
  2. Piros és fekete 22-AWG csatlakozóvezetéket használok +5V és GND csatlakoztatására az Arduino-ról a kenyérsütő áramellátó szalagra
  3. Tartalmazok egy 10µF-os tantál kondenzátort a táp-földelosztó szalagon, hogy csökkentse az energiazajt (de ez a projekt nem igényli)

Ez egy szép platformot kínál, amellyel könnyen prototípus készíthető.

3. lépés: Csatlakoztassa az LV-MaxSonar-EZ-t

Csatlakoztassa az LV-MaxSonar-EZ kábelt
Csatlakoztassa az LV-MaxSonar-EZ kábelt
Csatlakoztassa az LV-MaxSonar-EZ kábelt
Csatlakoztassa az LV-MaxSonar-EZ kábelt
Csatlakoztassa az LV-MaxSonar-EZ kábelt
Csatlakoztassa az LV-MaxSonar-EZ kábelt

A MaxSonar készülékre forrasztott, 90 ° -os fejjel könnyen csatlakoztatható a kenyértáblához. Az 5 tűs szalagkábel ezután összeköti a MaxSonart az Arduino -val, amint az az ábrán látható. A szalagkábel mellett rövid piros és fekete csatlakozóhuzalokat használok az áramelosztó sínről az eszköz áramellátásához.

Vezeték:

MaxSonar Arduino Szín
1 (fekete -fehér) Power-GND Sárga
2 (PW) Digitális-5 Zöld
3 (AN) Analóg-0 Kék
4 (RX) Digitális-3 Lila
5 (TX) Digitális-2 Szürke
6 (+5) +5 BB-PWR sín Piros
7 (GND) GND BB-PWR sín Fekete

Jegyzet:

Ne hagyja, hogy az ebben az utasításban használt kapcsolatok száma megakadályozza, hogy figyelembe vegye a projekt MaxSonar -ját. Ez az utasítás az összes MaxSonar interfész opciót használja annak működésének szemléltetésére, és összehasonlítja őket egymással és a HC-SR04 eszközzel. Egy adott felhasználásra (az interfész egyik opciójának használatával) a projekt általában egy vagy kettő interfészt használ (plusz áram és föld).

4. lépés: Csatlakoztassa a HC-SR04-et

A HC-SR04 jellemzően már 90 ° -os fejléccel van felszerelve, így könnyen csatlakoztatható a kenyértáblához. A 2 tűs szalagkábel ezután a HC-SR04-et az Arduino-hoz köti, amint az az ábrán látható. A szalagkábel mellett rövid piros és fekete csatlakozóhuzalokat használok az áramelosztó sínről az eszköz áramellátásához.

HC-SR04 Arduino Szín
1 (VCC) +5 BB-PWR sín Piros
2 (TRIG) Digitális-6 Sárga
3 (ECHO) Digitális-7 narancssárga
4 (GND) GND BB-PWR sín Fekete

5. lépés: Csatlakoztassa a „HC-SR04” opcióválasztót

Amikor elkezdtem ezt a projektet, egyszerűen az volt a szándékom, hogy kipróbáljam a MaxSonar eszköz különböző interfész -lehetőségeit. Miután elindítottam, úgy döntöttem, hogy jó lenne összehasonlítani a mindenütt jelen lévő HC-SR04 (bugeye) eszközzel. Azonban szerettem volna futtatni/tesztelni anélkül, hogy benne lenne, ezért hozzáadtam egy opciót/tesztet a kódhoz.

A kód ellenőrzi a bemeneti tűt, hogy a HC-SR04 eszközt be kell-e venni a mérési leolvasásba és kimenetbe.

Az ábrán ez kapcsolóként van feltüntetve, de a kenyértáblán egyszerűen jumperdrótot használok (ahogy a képeken is látható). Ha a vezeték a GND-hez van csatlakoztatva, a HC-SR04-et a mérések tartalmazzák. A kód „felhúz” (a bemenetet magasra/igazra állítja) az Arduino-ban, így ha nem húzzák alacsonyan (a GND-hez csatlakoztatva), a HC-SR04 nem lesz mérve.

Bár ez az utasítás a két eszköz összehasonlításává alakult, úgy döntöttem, hogy ezt a helyén hagyom, hogy szemléltessem, hogyan vehet fel/zárhat ki különböző eszközöket/lehetőségeket a projektbe.

Kenyeretábla Arduino Szín
GND BB-PWR sín Digitális-12 fehér

6. lépés: Minden működőképessé tétele…

Mindezt működésbe hozni…
Mindezt működésbe hozni…
Mindezt működésbe hozni…
Mindezt működésbe hozni…
Mindezt működésbe hozni…
Mindezt működésbe hozni…

Most, hogy minden össze van kapcsolva - itt az ideje, hogy működjön a dolog!

Amint azt a „Feltételezések” részben említettük - nem fogom elmagyarázni, hogyan működik az Arduino IDE, vagy hogyan kell programozni egy Arduino -t (részletesen).

A következő szakaszok lebontják a projektben szereplő Arduino kódot.

Kérjük, csomagolja ki a teljes archívumot az Arduino fejlesztéséhez használt helyre. Töltse be a `MaxSonar-outputs.ino` kódot Arduino IDE-jébe, és kezdjük el!

7. lépés: A projekt elrendezése

A projekt információkat tartalmaz az LV-MaxSonar-EZ eszközről, a kapcsolási rajzot, a README-t és az Arduino kódot. A kapcsolási rajz Fritzing formátumban, valamint-p.webp

8. lépés: Kódbevezetés…

Ebben az utasításban nem tudom végigvinni a kód minden aspektusát. Kitérek néhány magas szintű részletre. Javaslom, hogy olvassa el a kód legfelső szintű megjegyzését, és tanulmányozza a módszereket.

A hozzászólások sok információt tartalmaznak, amit itt nem ismételnék meg.

Néhány dolgot szeretnék kiemelni a „setup” kódban…

  • A `_DEBUG_OUTPUT` - változó és #define utasítások
  • Az interfészhez használt Arduino „csapok” definíciói
  • A számítások során használt átváltási tényezők meghatározása

A hibakeresést az egész kód használja, és megmutatom, hogyan lehet dinamikusan be- és kikapcsolni.

A „definíciókat” az Arduino csapokhoz és konverziókhoz használják, hogy megkönnyítsék ennek a kódnak a használatát más projektekben.

Hibakeresés…

A „Hibakeresés” szakasz definiál egy változót és néhány makrót, amelyek megkönnyítik a hibakeresési információk igény szerinti soros kimenetbe történő felvételét.

A `_DEBUG_OUTPUT` logikai változó hamis értékre van állítva a kódban (igaz értékre is állítható), és tesztként használják a` DB_PRINT … 'makrókban. Dinamikusan megváltoztatható a kódban (amint a `setDebugOutputMode` metódusban látható).

Globális…

A definíciók után a kód létrehoz és inicializál néhány globális változót és objektumot.

  • SoftwareSerial (lásd a következő részt)
  • _loopCount - Fejléc kiadására szolgál minden 'n' sorban
  • _inputBuffer - Soros/terminál bemenet gyűjtésére szolgál a folyamatbeállításokhoz (hibakeresés be/ki)

9. lépés: Arduino szoftver-sorozat…

A MaxSonar interfész egyik lehetősége a soros adatfolyam. Az Arduino UNO azonban csak egyetlen soros adatkapcsolatot biztosít, amelyet az USB -porton keresztül használnak/osztanak meg az Arduino IDE -vel (gazdagép) való kommunikációhoz.

Szerencsére az Arduino IDE tartalmaz egy könyvtári összetevőt, amely egy pár Arduino digitális I/O érintkezőt használ a soros-i/o interfész megvalósításához. Mivel a MaxSonar soros interfész 9600 BAUD -ot használ, ez a „szoftver” interfész tökéletesen képes kezelni a kommunikációt.

Azok számára, akik Arduino-Mega-t (vagy más olyan eszközt használnak, amely több HW soros porttal rendelkezik), bátran állítsák be a kódot fizikai soros port használatához, és ne kelljen használni az SW-sorozatot.

A "setup" módszer inicializálja a MaxSonar eszközzel használandó "SoftwareSerial" interfészt. Csak a fogadásra (RX) van szükség. Az interfész „fordított”, hogy megfeleljen a MaxSonar kimenetének.

10. lépés: Kód - beállítás

Amint fentebb leírtuk, a "setup" módszer inicializálja a "SoftwareSerial" interfészt, valamint a fizikai soros interfészt. Konfigurálja az Arduino I/O csapokat, és fejlécet küld.

11. lépés: Kód - hurok

A "hurok" kód a következőkön keresztül fut:

  • Fejléc kimenete (hibakereséshez és a Plotterhez)
  • Indítsa el a MaxSonar készüléket a méréshez
  • Olvassa el a MaxSonar Pulse-Width értékét
  • Olvassa el a MaxSonar Serial-Data értékét
  • Olvassa el a MaxSonar Analog értéket
  • Ellenőrizze a "HC-SR04" opciót, és ha engedélyezve van:

    Indítsa el és olvassa be a HC-SR04 eszközt

  • Adja ki az adatokat tabulátorral elválasztott formátumban, amelyet a Soros Plotter használhat
  • Várjon, amíg elegendő idő telik el, hogy újabb mérést lehessen végezni

12. lépés: Kód - Indítsa el a MaxSonar készüléket. Olvassa el a PW értéket

A MaxSonar két üzemmóddal rendelkezik: „aktivált” és „folyamatos”

Ez az utasítás az „aktivált” módot használja, de sok projekt profitálhat a „folyamatos” mód használatából (lásd az adatlapot).

A „trigger” mód használatakor az első érvényes kimenet a Pulse-Width (PW) kimenetből származik. Ezt követően a többi kimenet érvényes.

A `tiggerAndReadDistanceFromPulse` impulzusokat ad a MaxSonar eszközön, és beolvassa a kapott impulzusszélesség távolság értékét

Ne feledje, hogy sok más szonár eszközzel ellentétben a MaxSonar kezeli az oda-vissza konverziót, így a leolvasott távolság a céltól való távolság.

Ez a módszer is elég hosszú ideig késik, hogy az eszköz többi kimenete érvényes legyen (soros, analóg).

13. lépés: Kód - Olvassa el a MaxSonar sorozatértéket

A MaxSonar aktiválása után (vagy „folyamatos” módban), ha a soros kimenet opció engedélyezve van (a „BW - Pin -1” vezérlőn keresztül), egy „R nnn” formátumú soros adatfolyam kerül elküldésre, majd egy CARRIAGE-RETURN '\ r'. Az 'nnn' az objektum hüvelyk értéke.

A `readDistanceFromSerial` metódus beolvassa a soros adatokat (a szoftver soros portjáról), és az 'nnn' értéket tizedesre konvertálja. Tartalmaz egy hibamentes időtúllépést, arra az esetre, ha nem érkezik soros érték.

14. lépés: Kód - Olvassa el a MaxSonar analóg értéket

A MaxSonar analóg port folyamatosan biztosítja az utolsó mért távolsággal arányos kimeneti feszültséget. Ez az érték az eszköz inicializálása után bármikor leolvasható. Az érték az utolsó távolság leolvasásától számított 50 ms -on belül frissül (aktivált vagy folyamatos üzemmód).

Az érték (Vcc/512) hüvelykenként. Tehát az Arduino 5 voltos Vcc -jével az érték ~ 9,8 mV/in lesz. A `readDistanceFromAnalog` módszer beolvassa az értéket az Arduino analóg bemenetből, és átalakítja azt egy hüvelykes értékre.

15. lépés: Kód - Aktiválja és olvassa el a HC -SR04 -et

Bár vannak könyvtárak a HC-SR04 olvasására, némelyiküket megbízhatatlannak találtam különböző eszközökkel, amelyekkel teszteltem. Egyszerűnek és megbízhatóbbnak találtam a kódot, amelyet az `sr04ReadDistance` metódusba beépítettem (amennyire az olcsó HC-SR04 eszköz lehet).

Ez a módszer beállítja, majd aktiválja a HC-SR04 eszközt, majd várja a visszatérő impulzus szélességének mérését. Az impulzusszélesség mérése magában foglal egy időtúllépést a HC-SR04 problémájának kezelésére, amely nagyon hosszú impulzusidőtartamú, ha nem talál célt. A ~ 10 láb céltávolságnál hosszabb impulzusszélességről feltételezzük, hogy nem tárgy, vagy nem felismerhető objektum. Ha eléri az időtúllépést, akkor a „0” érték kerül visszaadásra távolságként. Ez a „távolság” (impulzusszélesség) a #define értékek segítségével állítható be.

Az impulzusszélességet oda-vissza útra alakítják át, mielőtt visszaadják az objektum távolságának.

16. lépés: Kód - Arduino IDE soros plotter támogatás

Kód - Arduino IDE soros plotter támogatás
Kód - Arduino IDE soros plotter támogatás

Most a kimenetre!

A "hurok" módszer elindítja a távolságmérés gyűjtését a két eszközről - de mit tegyünk vele?

Nos, természetesen elküldjük, hogy megtekinthető legyen a konzolon - de többet akarunk!

Az Arduino IDE a Soros Plotter felületet is biztosítja. Ezt arra használjuk, hogy valós idejű grafikont nyújtsunk a tárgyunk és a két eszköz kimenete közötti távolságról.

A Soros Plotter elfogadja a fejlécet, amely értékcímkéket, majd több soros határolt értéket tartalmaz grafikonként. Ha az értékeket rendszeresen („minden másodpercben”) adja ki, a grafikon megjeleníti az objektumtól való távolságot az idő múlásával.

A "loop" módszer a MaxSonar három értékét és a HC-SR04 értékét adja ki tabulátorral elválasztott formátumban, amely használható a Soros Plotterrel. 20 soronként egyszer kiadja a fejlécet (arra az esetre, ha a Soros Plotter engedélyezve van a folyam közepén).

Ez lehetővé teszi az akadálytól való távolság megjelenítését, valamint a két eszköz által visszaadott értékek közötti különbség megjelenítését.

17. lépés: Kód - hibakeresés…

Kód - hibakeresés…
Kód - hibakeresés…
Kód - hibakeresés…
Kód - hibakeresés…

A hibakeresés szükségszerű. Hogyan lehet nyomon követni a problémát, ha valami nem a várt módon működik?

A megértés első sora gyakran néhány „egyszerű” szövegkimenet, amely jelezheti, hogy mi történik. Ezeket hozzá lehet adni a kódhoz, amikor és ahol szükség van a probléma nyomon követésére, majd eltávolíthatja, ha a probléma megoldódott. A kód hozzáadása és eltávolítása azonban időigényes, és önmagában más problémákhoz is vezethet. Néha jobb, ha dinamikusan engedélyezheti és letilthatja azt, miközben magára hagyja a forráskódot.

Ebben az utasításban olyan mechanizmust vettem fel, amely lehetővé teszi és letiltja a hibakeresési nyomtatási (soros kimeneti) utasításokat az Arduino IDE soros monitorból olvasott bemenetről (egy következő kiadásban a Soros Plotter várhatóan ezt a bemenetet is biztosítja).

A `_DEBUG_OUTPUT` logikai értéket számos #define nyomtatási módszerben használják, amelyek a kódon belül használhatók. A _DEBUG_OUTPUT változó értéke lehetővé teszi a nyomtatást (kimeneti küldés), vagy sem. Az érték dinamikusan megváltoztatható a kódon belül, ahogy a `setDebugOutputMode` módszer teszi.

A `setDebugOutputMode` metódust a` ciklusból 'hívjuk meg a soros bemenetről kapott bemenet alapján. A bemenetet elemzi, hogy lássa, megfelel -e a "debug on/off | true/false" beállításnak a hibakeresési mód engedélyezéséhez/letiltásához.

18. lépés: Következtetés

Remélem, hogy ez az egyszerű hardverbeállítás és a példakód segít megérteni a különbségeket a HC-SR04 és az LV-MaxSonar-EZ eszközök között. Mindkettő nagyon könnyen használható, és úgy gondolom, hogy mindegyiknek megvan a maga előnye. Az, hogy tudjuk, mikor kell használni az egyiket a másik helyett, fontos szerepet játszhatnak a sikeres projektben.

BTW-Utaltam egy nagyon könnyen használható módszerre, amellyel pontosan meg lehet mérni a távolságot az objektumtól az LV-MaxSonar-EZ segítségével … Az analóg kimenet (egy vezeték) és a folyamatos mérési mód segítségével szükség esetén leolvashatja a távolságot az egyszerű kódot `readDistanceFromAnalog` -ban közvetlenül az Arduino analóg bemenetről. Egy vezeték és (sűrített) egy sor kód!

19. lépés: Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)

Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)
Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)
Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)
Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)
Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)
Alternatív MaxSonar kapcsolat (180 ° -os fejléccel)

Mint említettem, a MaxSonar nem rendelkezik fejléccel. Tehát használhatja a projekthez legmegfelelőbb kapcsolatot. Bizonyos esetekben a 180 ° -os (egyenes) fejléc megfelelőbb lehet. Ha ez a helyzet, gyorsan meg akartam mutatni, hogyan használhatja ezt az utasítással. Ez az illusztráció egy MaxSonar-t mutat, amelynek egyenes fejléce csatlakozik a kenyértáblához férfi-női szalagkábellel, majd csatlakozik az Arduino-hoz a cikk többi részében leírtak szerint.

20. lépés: Arduino kód

Az Arduino kód a projekt „MaxSonar-output” mappájában található a Sonar Range-Finder Comparison programban

Ajánlott: