Obsah:

Porovnání dálkoměrů sonaru LV-MaxSonar-EZ a HC-SR04 s Arduino: 20 kroků (s obrázky)
Porovnání dálkoměrů sonaru LV-MaxSonar-EZ a HC-SR04 s Arduino: 20 kroků (s obrázky)

Video: Porovnání dálkoměrů sonaru LV-MaxSonar-EZ a HC-SR04 s Arduino: 20 kroků (s obrázky)

Video: Porovnání dálkoměrů sonaru LV-MaxSonar-EZ a HC-SR04 s Arduino: 20 kroků (s obrázky)
Video: Porovnání Bosch laserových dálkoměrů 2024, Červenec
Anonim
Porovnání sonarů LV-MaxSonar-EZ a HC-SR04 Sonar s Arduino
Porovnání sonarů LV-MaxSonar-EZ a HC-SR04 Sonar s Arduino
Porovnání sonarů LV-MaxSonar-EZ a HC-SR04 Sonar s Arduino
Porovnání sonarů LV-MaxSonar-EZ a HC-SR04 Sonar s Arduino

Zjistil jsem, že mnoho projektů (zejména robotů) vyžaduje nebo může mít prospěch z měření vzdálenosti k objektu v reálném čase. Hledače dosahu sonaru jsou relativně levné a lze je snadno propojit s mikrořadičem, jako je Arduino.

Tento Instructable porovnává dvě snadno dostupná zařízení pro vyhledávání sonarů, ukazuje, jak je připojit k Arduinu, jaký kód je potřeba k načtení hodnot z nich a jak se navzájem „měří“v různých situacích. Doufám, že díky tomu získáte přehled o výhodách a nevýhodách těchto dvou zařízení, která vám pomohou použít nejvhodnější zařízení ve vašem dalším projektu.

Chtěl jsem porovnat extrémně populární zařízení HC-SR04 (bug-eye) s méně obvyklým zařízením LV-MaxSonar-EZ, abych zjistil, kdy bych mohl chtít použít jeden spíše než druhý. Chtěl jsem se podělit o svá zjištění a nastavení, abyste mohli s těmito dvěma experimentovat a rozhodnout, které použijete ve svém dalším projektu.

Proč tito dva…

Proč HC-SR04 „Bug-Eye“HC-SR04 je velmi populární-z několika důvodů:

  • Je to levné - 2 $ nebo méně při hromadném nákupu
  • Rozhraní je relativně snadné
  • Mnoho, mnoho projektů jej používá - je tedy dobře známý a dobře srozumitelný

Proč LV-MaxSonar-EZ?

  • Rozhraní je velmi snadné
  • Má dobrý/snadný tvarový faktor pro začlenění do projektu
  • Má 5 verzí, které řeší různé požadavky na měření (viz datový list)
  • Je (obvykle) mnohem přesnější a spolehlivější než HC-SR04
  • Je cenově dostupný - 15 až 20 $

Kromě toho doufám, že najdete kousky v kódu Arduino, který jsem napsal pro srovnání, užitečné ve vašich projektech, a to i mimo aplikace zaměřovače dosahu.

Předpoklady:

  • Znáte Arduino a Arduino IDE
  • Arduino IDE je nainstalováno a pracuje na vašem preferovaném vývojovém počítači (PC/Mac/Linux)
  • Máte připojení z Arduino IDE k vašemu Arduinu, abyste mohli nahrávat a spouštět programy a komunikovat

V případě potřeby vám s tím pomohou pokyny a další zdroje.

Zásoby

  • Hledač dosahu HC-SR04 'Bug-Eye'
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4-používám '1', ale všechny verze jsou stejné)
  • Arduino UNO
  • Nepájivá prkénka
  • Pin Header - 7 pin 90 ° (pro zařízení MaxSonar, viz * níže pro použití 180 °)
  • Propojka plochého kabelu - 5 vodičů, samec -samec
  • Propojka plochého kabelu - 2 vodiče, zástrčka -zástrčka
  • Propojovací vodič - samec -samec
  • Propojovací vodič - červený a černý (pro napájení z Arduina na breadboard a breadboard k zařízením)
  • Počítač s Arduino IDE a USB kabelem pro připojení k Arduino UNO

* MaxSonar není dodáván s připojeným záhlavím, takže můžete použít záhlaví, které je pro váš projekt nejvhodnější. Pro tento Instructable jsem použil 90 ° záhlaví, aby bylo snadné jej zapojit do prkénka. V některých projektech může být lepší 180 ° (přímý) záhlaví. Přikládám fotografii, která ukazuje, jak to připojit, abyste je nemuseli přepínat. Pokud byste raději použili 180 ° záhlaví, budete k připojení potřebovat další 7vodičový propojovací kabel s páskou a zástrčkou, jak ukazuje moje fotografie.

Úložiště Git Hub: Soubory projektu

Krok 1: Chase…

Honička…
Honička…

Než se dostaneme k podrobnostem o tom, jak propojit věci, abyste mohli s těmito dvěma fantastickými zařízeními experimentovat sami, chtěl jsem popsat několik věcí, se kterými vám doufám pomůže tento Instructable.

Protože je zařízení MaxSonar ve srovnání se zařízením HC-SR04 méně používané a méně srozumitelné, chtěl jsem ukázat:

  • Jak připojit zařízení MaxSonar k mikrořadiči (v tomto případě Arduino)
  • Jak provádět měření z různých výstupů zařízení MaxSonar
  • Porovnejte propojení zařízení MaxSonar se zařízením HC-SR04
  • Otestujte si schopnost měřit vzdálenost předmětů s různými povrchy
  • Proč si můžete vybrat jedno zařízení před druhým (nebo použít obojí v tandemu)

Doufám, že vám tento Instructable pomůže v této honičce…

Krok 2: Začínáme - nastavení Arduino -Breadboard

Začínáme - Nastavení Arduino -Breadboard
Začínáme - Nastavení Arduino -Breadboard

Pokud jste prototypovali s Arduinem, pravděpodobně již máte nastavení Arduino-Breadboard, které vám vyhovuje. Pokud ano, jsem si jistý, že ho můžete použít pro tento Instructable. Pokud ne, tak jsem si to nastavil - klidně si to zkopírujte pro tento i budoucí projekty.

  1. Připojuji Arduino UNO a malé bezdrátové prkénko na plastový kus 3-3/8 "x 4-3/4" (8,6 x 12,0 cm) s gumovými nožičkami na dně.
  2. Pro připojení +5V a GND z Arduina k distribuční liště napájecího pole používám červený a černý 22-AWG propojovací vodič
  3. Na distribuční pásmo napájení-země zahrnuji tantalový kondenzátor 10 µF, který má pomoci snížit energetický šum (ale tento projekt to nevyžaduje)

To poskytuje pěknou platformu, se kterou lze snadno prototypovat.

Krok 3: Připojte LV-MaxSonar-EZ

Připojte LV-MaxSonar-EZ
Připojte LV-MaxSonar-EZ
Připojte LV-MaxSonar-EZ
Připojte LV-MaxSonar-EZ
Připojte LV-MaxSonar-EZ
Připojte LV-MaxSonar-EZ

S 90 ° konektorem připájeným na zařízení MaxSonar je snadné jej připojit k prkénku. 5kolíkový plochý kabel pak připojí MaxSonar k Arduinu, jak je vidět na obrázku. Kromě plochého kabelu používám k napájení zařízení krátké kusy červeného a černého propojovacího vodiče z napájecí rozvodné kolejnice.

Elektrické vedení:

MaxSonar Arduino Barva
1 (ČB) Power-GND Žlutá
2 (PW) Digitální-5 Zelená
3 (AN) Analogový-0 Modrý
4 (RX) Digitální-3 Nachový
5 (TX) Digitální-2 Šedá
6 (+5) +5 kolejnice BB-PWR Červené
7 (GND) Lišta GND BB-PWR Černá

Poznámka:

Nedovolte, aby vám počet připojení použitých v tomto Instructable bránil v úvahu MaxSonar pro váš projekt. Tento Instructable využívá všechny možnosti rozhraní MaxSonar k ilustraci toho, jak fungují, a k jejich vzájemnému porovnání a porovnávání se zařízením HC-SR04. Pro dané použití (pomocí jedné z možností rozhraní) bude projekt obecně používat jeden nebo dva piny rozhraní (plus napájení a uzemnění).

Krok 4: Zapojte HC-SR04

HC-SR04 je obvykle dodáván s již připojeným 90 ° konektorem, takže jej lze snadno zapojit do prkénka. 2kolíkový plochý kabel pak spojuje HC-SR04 s Arduino, jak je vidět na obrázku. Kromě plochého kabelu používám k zajištění napájení zařízení krátké kusy červeného a černého propojovacího vodiče z rozdělovače napájení.

HC-SR04 Arduino Barva
1 (VCC) +5 kolejnice BB-PWR Červené
2 (SPUŠTĚNÍ) Digitální-6 Žlutá
3 (ECHO) Digitální-7 oranžový
4 (GND) Lišta GND BB-PWR Černá

Krok 5: Zapojte volič možností 'HC-SR04'

Když jsem zahájil tento projekt, mým záměrem bylo jednoduše otestovat různé možnosti rozhraní zařízení MaxSonar. Když jsem to uvedl do provozu, rozhodl jsem se, že by bylo hezké to porovnat se všudypřítomným zařízením HC-SR04 (bugeye). Chtěl jsem však být schopen spustit/testovat bez něj, proto jsem do kódu přidal možnost/test.

Kód kontroluje vstupní kolík, aby zjistil, zda by mělo být zařízení HC-SR04 zahrnuto do měření a výstupu.

Na obrázku je to znázorněno jako přepínač, ale na prkénku jednoduše použiju propojovací vodič (jak je vidět na fotografiích). Pokud je vodič připojen k GND, bude do měření zahrnut HC-SR04. Kód „vytahuje“(činí vstup vysoký/pravdivý) v Arduinu, takže pokud není vytažen nízko (připojen k GND), HC-SR04 nebude měřen.

Ačkoli se tento Instructable proměnil ve srovnání obou zařízení, rozhodl jsem se to nechat na místě, abych ilustroval, jak můžete do svého projektu zahrnout/vyloučit různá zařízení/možnosti.

Prkénko Arduino Barva
Lišta GND BB-PWR Digitální-12 Bílý

Krok 6: Aby vše fungovalo…

Aby vše fungovalo…
Aby vše fungovalo…
Aby vše fungovalo…
Aby vše fungovalo…
Aby vše fungovalo…
Aby vše fungovalo…

Nyní, když je vše připojeno - je čas, aby věci fungovaly!

Jak je uvedeno v „předpokladech“- nebudu vysvětlovat, jak IDE Arduino funguje ani jak programovat Arduino (podrobně).

Následující části rozdělují kód Arduino, který je součástí tohoto projektu.

Rozbalte celý archiv na místo, které používáte pro vývoj Arduino. Nahrajte kód `MaxSonar-outputs.ino` do svého Arduino IDE a můžeme začít!

Krok 7: Rozložení projektu

Projekt obsahuje informace o zařízení LV-MaxSonar-EZ, schéma zapojení, README a kód Arduino. Schéma zapojení je ve formátu Fritzing a také obrázek PNG. README je ve formátu Markdown.

Krok 8: Zavedení kódu…

V tomto Instructable nemohu projít každý aspekt kódu. Pokrývám některé detaily na vysoké úrovni. Doporučuji vám přečíst si komentář nejvyšší úrovně v kódu a prokopat se k metodám.

Komentáře poskytují mnoho informací, které zde nebudu opakovat.

V kódu „nastavení“chci zdůraznit několik věcí…

  • `_DEBUG_OUTPUT` - proměnné a #define příkazy
  • Definice „kolíků“Arduina použitých pro rozhraní
  • Definice konverzních faktorů použitých ve výpočtech

Ladění se používá v celém kódu a ukážu, jak jej lze dynamicky zapínat/vypínat.

'Definice' se používají pro piny a převody Arduino, aby bylo snazší použít tento kód v jiných projektech.

Ladění…

Sekce „Ladění“definuje proměnnou a některá makra, která usnadňují zahrnutí informací o ladění do sériového výstupu na vyžádání.

Logická proměnná `_DEBUG_OUTPUT` je v kódu nastavena na hodnotu false (lze ji nastavit na true) a používá se jako test v makrech` DB_PRINT … `. Lze jej dynamicky měnit v kódu (jak je vidět na metodě `setDebugOutputMode`).

Globálové…

Po definicích kód vytvoří a inicializuje několik globálních proměnných a objektů.

  • SoftwareSerial (viz další část)
  • _loopCount - slouží k výstupu záhlaví každých řádků 'n'
  • _inputBuffer - slouží ke shromažďování sériového/koncového vstupu pro zpracování voleb (ladění zapnuto/vypnuto)

Krok 9: Arduino Software-Serial…

Jednou z možností rozhraní MaxSonar je stream sériových dat. Arduino UNO však poskytuje pouze jedno sériové datové připojení, které se používá/sdílí s portem USB ke komunikaci s Arduino IDE (hostitelským počítačem).

Naštěstí je v Arduino IDE obsažena knihovní komponenta, která k implementaci sériového rozhraní používá pár digitálních I/O pinů Arduino. Protože sériové rozhraní MaxSonar využívá 9600 BAUD, toto 'softwarové' rozhraní je dokonale schopné zvládnout komunikaci.

Pro ty, kteří používají Arduino-Mega (nebo jiné zařízení, které má více HW sériových portů), neváhejte upravit kód tak, aby používal fyzický sériový port a eliminoval potřebu SW-Serial.

Metoda `setup` inicializuje rozhraní` SoftwareSerial`, které má být použito se zařízením MaxSonar. Je zapotřebí pouze příjem (RX). Rozhraní je „inverzní“, aby odpovídalo výstupu MaxSonar.

Krok 10: Kód - Nastavení

Jak je popsáno výše, metoda „setup“inicializuje rozhraní „SoftwareSerial“i fyzické sériové rozhraní. Konfiguruje I/O piny Arduino a vysílá záhlaví.

Krok 11: Kód - smyčka

Kód `smyčky` prochází následujícím:

  • Výstup hlavičky (používá se k ladění a plotru)
  • Spusťte MaxSonar a proveďte měření
  • Přečtěte si hodnotu MaxSonar Pulse-Width
  • Přečtěte si hodnotu MaxSonar Serial-Data
  • Přečtěte si hodnotu MaxSonar Analog
  • Zaškrtněte možnost „HC-SR04“a pokud je povolena:

    Spusťte a přečtěte si zařízení HC-SR04

  • Výstup dat ve formátu odděleném tabulátory, který může použít sériový plotter
  • Počkejte, dokud neuplyne dostatek času, abyste mohli provést další měření

Krok 12: Kód - Spusťte MaxSonar. Přečtěte si hodnotu PW

MaxSonar má dva režimy: „spuštěný“a „nepřetržitý“

Tento Instructable používá režim „spuštěno“, ale mnoho projektů může využívat režim „nepřetržitě“(viz datový list).

Při použití režimu „spuštěno“je první platný výstup z výstupu PW (Pulse-Width). Poté jsou ostatní výstupy platné.

`TiggerAndReadDistanceFromPulse` pulzuje spouštěcím kolíkem na zařízení MaxSonar a přečte výslednou hodnotu vzdálenosti šířky pulsu

Všimněte si toho, že na rozdíl od mnoha jiných sonarových zařízení MaxSonar zpracovává zpáteční převod, takže načtená vzdálenost je vzdálenost k cíli.

Tato metoda také zpomaluje dostatečně dlouho na to, aby ostatní výstupy zařízení byly platné (sériové, analogové).

Krok 13: Kód - Přečtěte si sériovou hodnotu MaxSonar

Poté, co byl spuštěn MaxSonar (nebo je -li v „nepřetržitém“režimu), je -li povolena možnost sériového výstupu (prostřednictvím ovládání „BW - Pin -1“), odešle se sériový datový proud ve tvaru „R nnn“PŘEPRAVOU VOZIDLA / \ r '. 'Nnn' je hodnota palců k objektu.

Metoda `readDistanceFromSerial` čte sériová data (ze sériového portu softwaru) a převádí hodnotu 'nnn' na desítkové. Obsahuje časový limit bezpečný pro případ selhání, jen v případě, že není přijata sériová hodnota.

Krok 14: Kód - načtěte analogovou hodnotu MaxSonar

Analogový port MaxSonar nepřetržitě poskytuje výstupní napětí úměrné poslední měřené vzdálenosti. Tuto hodnotu lze přečíst kdykoli po inicializaci zařízení. Hodnota je aktualizována do 50 mS od posledního odečtu vzdálenosti (spuštěný nebo nepřetržitý režim).

Hodnota je (Vcc/512) na palec. Takže s Vcc od Arduina 5 voltů bude hodnota ~ 9,8 mV/in. Metoda `readDistanceFromAnalog` načte hodnotu z analogového vstupu Arduino a převede ji na hodnotu 'palce'.

Krok 15: Kód - spusťte a přečtěte si HC -SR04

Ačkoli existují knihovny ke čtení HC-SR04, zjistil jsem, že některé z nich jsou nespolehlivé s různými zařízeními, se kterými jsem testoval. Zjistil jsem, že kód, který jsem zahrnul do metody `sr04ReadDistance`, je jednoduchý a spolehlivější (stejně jako může být levné zařízení HC-SR04).

Tato metoda nastaví a poté spustí zařízení HC-SR04 a poté čeká na měření šířky zpětného impulsu. Měření šířky pulsu zahrnuje časový limit pro řešení problému s velmi dlouhým pulsem HC-SR04, když nemůže najít cíl. Předpokládá se, že šířka pulsu delší než cílová vzdálenost ~ 10 stop není žádný předmět nebo předmět, který nelze rozpoznat. Pokud je časový limit dosažen, je jako vzdálenost vrácena hodnota „0“. Tuto „vzdálenost“(šířku pulzu) lze upravit pomocí hodnot #define.

Šířka pulsu se převede na vzdálenost zpáteční cesty a poté se vrátí jako vzdálenost k objektu.

Krok 16: Kód - Podpora sériového plotru Arduino IDE

Kód - Podpora sériového plotru Arduino IDE
Kód - Podpora sériového plotru Arduino IDE

Nyní k výstupu!

Metoda „loop“spouští sběr měření vzdálenosti z obou zařízení - ale co s tím uděláme?

Samozřejmě to pošleme, aby to bylo možné zobrazit na konzole - ale chceme víc!

Arduino IDE také poskytuje rozhraní Serial Plotter. Použijeme to k poskytnutí grafu vzdálenosti našeho objektu od výstupů našich dvou zařízení v reálném čase.

Sériový plotter přijímá záhlaví, které obsahuje popisky hodnot a poté více řádků hodnot oddělených oddělením, které mají být vykresleny jako graf. Pokud jsou hodnoty vydávány pravidelně (jednou za „tolik sekund“), graf poskytuje vizualizaci vzdálenosti k objektu v čase.

Metoda `loop` vydává tři hodnoty z MaxSonar a hodnotu z HC-SR04 ve formátu odděleném tabulátory, který lze použít se sériovým plotterem. Jednou za 20 řádků se vygeneruje záhlaví (jen pro případ, že je ve streamu povolen sériový plotter).

To vám umožní vizualizovat vzdálenost k překážce a také vidět rozdíl v hodnotách vrácených oběma zařízeními.

Krok 17: Kód - Ladění…

Kód - ladění…
Kód - ladění…
Kód - ladění…
Kód - ladění…

Ladění je nutností. Jak můžete vystopovat problém, když něco nefunguje podle očekávání?

První linií porozumění jsou často nějaké „jednoduché“textové výstupy, které mohou naznačovat, co se děje. Ty lze přidat do kódu, kdykoli a kde je potřeba ke sledování problému, a poté je odstranit, jakmile je problém vyřešen. Přidávání a odebírání kódu je však časově náročné a samo o sobě může vést k dalším problémům. Někdy je lepší mít možnost povolit a zakázat dynamicky a ponechat zdrojový kód sám.

Do tohoto Instructable jsem zahrnul mechanismus pro dynamické povolení a zakázání příkazů pro ladění tisku (sériového výstupu) ze vstupu načteného ze sériového monitoru Arduino IDE (v nadcházejícím vydání se očekává, že tento vstup poskytne i sériový plotter).

Boolean `_DEBUG_OUTPUT` se používá v řadě tiskových metod #define, které lze použít v kódu. Hodnota proměnné _DEBUG_OUTPUT slouží k povolení tisku (odeslání výstupu) nebo ne. Hodnotu lze v kódu dynamicky měnit, jako to dělá metoda `setDebugOutputMode`.

Metoda `setDebugOutputMode` se volá ze` smyčky` na základě vstupu přijatého ze sériového vstupu. Vstup je analyzován, aby se zjistilo, zda odpovídá „ladění zapnuto/vypnuto | true/false“, aby bylo možné povolit/zakázat režim ladění.

Krok 18: Závěr

Doufám, že vám toto jednoduché nastavení hardwaru a ukázkový kód pomohou pochopit rozdíly mezi zařízeními HC-SR04 a LV-MaxSonar-EZ. Oba se velmi snadno používají a věřím, že každý má své výhody. Vědět, kdy použít jeden spíše než druhý, může být nástrojem úspěšného projektu.

BTW-naznačil jsem velmi snadno použitelný způsob přesného měření vzdálenosti k objektu pomocí LV-MaxSonar-EZ … Analogový výstup (jeden vodič) a režim kontinuálního měření můžete použít ke čtení vzdálenosti v případě potřeby pomocí jednoduchého kód v `readDistanceFromAnalog` přímo z analogového vstupu Arduino. Jeden vodič a (zhuštěný) jeden řádek kódu!

Krok 19: Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)

Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)
Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)
Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)
Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)
Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)
Alternativní připojení MaxSonar (pomocí 180 ° záhlaví)

Jak jsem zmínil, MaxSonar nepřichází s připojenou hlavičkou. Můžete tedy použít jakékoli připojení, které je pro váš projekt nejvhodnější. V některých případech může být vhodnější záhlaví 180 ° (rovné). Pokud tomu tak je, chtěl jsem rychle ukázat, jak to můžete použít s tímto Instructable. Tato ilustrace ukazuje MaxSonar s přímým záhlavím připojeným k prkénku páskovým kabelem muž-žena a poté připojený k Arduinu, jak je popsáno ve zbytku článku.

Krok 20: Arduino kód

Kód Arduino je ve složce projektu „MaxSonar-výstupy“ve srovnání Sonar Range-Finder

Doporučuje: