Taula de continguts:

Comparació dels telèmetres LV-MaxSonar-EZ i HC-SR04 amb Arduino: 20 passos (amb imatges)
Comparació dels telèmetres LV-MaxSonar-EZ i HC-SR04 amb Arduino: 20 passos (amb imatges)

Vídeo: Comparació dels telèmetres LV-MaxSonar-EZ i HC-SR04 amb Arduino: 20 passos (amb imatges)

Vídeo: Comparació dels telèmetres LV-MaxSonar-EZ i HC-SR04 amb Arduino: 20 passos (amb imatges)
Vídeo: Надежное решение с высокопроизводительными ультразвуковыми датчиками со встроенными настройками и фильтрами. 2024, Desembre
Anonim
Comparació dels telèmetres del sonar LV-MaxSonar-EZ i HC-SR04 amb Arduino
Comparació dels telèmetres del sonar LV-MaxSonar-EZ i HC-SR04 amb Arduino
Comparació dels telèmetres del sonar LV-MaxSonar-EZ i HC-SR04 amb Arduino
Comparació dels telèmetres del sonar LV-MaxSonar-EZ i HC-SR04 amb Arduino

Trobo que molts projectes (especialment robots) requereixen o poden beneficiar-se de mesurar la distància a un objecte en temps real. Els cercadors de sonar són relativament econòmics i es poden connectar fàcilment a un microcontrolador com l’Arduino.

Aquest manual instructiu compara dos dispositius de localització de sonars fàcils d’adquirir, que mostren com connectar-los a l’Arduino, quin codi es necessita per llegir-ne els valors i com es “mesuren” entre si en diferents situacions. A partir d’això, espero que obtingueu informació sobre els pros i els contres dels dos dispositius que us ajudaran a utilitzar el dispositiu més adequat per al vostre proper projecte.

Volia comparar el dispositiu HC-SR04 (ull d'error) extremadament popular amb el menys comú dispositiu LV-MaxSonar-EZ per veure quan potser voldria fer servir un en lloc de l'altre. Volia compartir les meves troballes i la meva configuració perquè pugueu experimentar amb les dues coses i decidir quina utilitzar al vostre proper projecte.

Per què aquests dos …

El HC-SR04 "Bug-Eye" és extremadament popular, per diversos motius:

  • És econòmic: 2 $ o menys si es compra a granel
  • És relativament fàcil de connectar-hi
  • Molts, molts, el fan servir, de manera que és ben conegut i ben entès

Per què el LV-MaxSonar-EZ?

  • És molt fàcil de connectar
  • Té un factor de forma bo / fàcil d’incorporar a un projecte
  • Té 5 versions que aborden diferents requisits de mesura (veure fitxa tècnica)
  • És (normalment) molt més precís i fiable que el HC-SR04
  • És assequible: entre 15 i 20 dòlars

A més, espero que trobeu fragments al codi Arduino que he escrit per a la comparació útil en els vostres projectes, fins i tot més enllà de les aplicacions de telemetre.

Supòsits:

  • Coneixeu Arduino i l'IDE Arduino
  • L'IDE Arduino està instal·lat i funciona a la vostra màquina de desenvolupament preferent (PC / Mac / Linux)
  • Teniu una connexió des de l’IDE Arduino al vostre Arduino per carregar i executar programes i comunicar-vos

Hi ha instruccions i altres recursos per ajudar-vos amb això si cal.

Subministraments

  • HC-SR04 Telemetre 'Bug-Eye'
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4 - Estic fent servir un '1', però totes les versions tenen la mateixa interfície)
  • Arduino UNO
  • Taula de pa sense soldadura
  • Capçalera del pin: 7 pins 90 ° (per al dispositiu MaxSonar, consulteu * a continuació per utilitzar 180 °)
  • Pont de cable de cinta: 5 fils, mascle-mascle
  • Pont de cable de cinta: 2 fils, mascle-mascle
  • Filferro de pont - mascle-mascle
  • Cable de connexió - vermell i negre (per alimentar des d'Arduino fins a taulers de pa i taulers de pa a dispositius)
  • Ordinador amb Arduino IDE i cable USB per connectar-se a l’Arduino UNO

* El MaxSonar no ve amb capçalera connectada, de manera que podeu utilitzar una capçalera més adequada per al vostre projecte. Per a aquesta instrucció, he utilitzat una capçalera de 90 ° per facilitar la connexió a la taula de treball. En alguns projectes, una capçalera de 180 ° (recta) pot ser millor. Inclou una foto per mostrar com connectar-la perquè no hagueu de canviar-les. Si preferiu utilitzar una capçalera de 180 °, necessitareu un pont de cable de cinta femella-femella addicional de 7 cables per connectar-vos com mostra la meva foto.

Dipòsit del Git Hub: fitxers de projecte

Pas 1: la persecució …

La persecució…
La persecució…

Abans d’entrar en els detalls sobre com connectar les coses perquè pugueu experimentar amb aquests dos fantàstics dispositius, volia descriure algunes coses que espero que aquest instructiu us ajudi.

Com que el dispositiu MaxSonar és menys utilitzat i menys entès en comparació amb el dispositiu HC-SR04, volia mostrar:

  • Com connectar el dispositiu MaxSonar a un microcontrolador (en aquest cas un Arduino)
  • Com prendre mesures des de les diferents sortides del dispositiu MaxSonar
  • Compareu la interfície del dispositiu MaxSonar amb el dispositiu HC-SR04
  • Proveu la capacitat de mesurar la distància d'objectes amb diferents superfícies
  • Per què podeu triar un dispositiu per sobre de l’altre (o utilitzar-los tots dos en tàndem)

Espero que aquest Instructable us ajudi en aquesta persecució …

Pas 2: Introducció: configuració d'Arduino-Breadboard

Introducció: configuració d'Arduino-Breadboard
Introducció: configuració d'Arduino-Breadboard

Si heu estat fent prototips amb Arduino, probablement ja tingueu una configuració Arduino-Breadboard amb la qual us sentiu còmode. Si és així, estic segur que el podeu utilitzar per a aquest instructiu. Si no, així és com he configurat el meu; no dubteu a copiar-lo per a aquest i futurs projectes.

  1. Jo connecto l'Arduino UNO i una petita placa de connexió sense fils a un tros de plàstic de 3,3 / 8 "x 4-3 / 4" (8,6 x 12,0 cm) amb peus de goma a la part inferior.
  2. Faig servir un cable de connexió de 22 AWG de color vermell i negre per connectar + 5V i GND des de l’Arduino a la tira de distribució d’energia
  3. Inclou un condensador de tàntal de 10 µF a la banda de distribució de terra per ajudar a reduir el soroll de potència (però aquest projecte no ho requereix)

Això proporciona una bona plataforma fàcil de prototipar.

Pas 3: Connecteu el LV-MaxSonar-EZ

Connecteu el LV-MaxSonar-EZ
Connecteu el LV-MaxSonar-EZ
Connecteu el LV-MaxSonar-EZ
Connecteu el LV-MaxSonar-EZ
Connecteu el LV-MaxSonar-EZ
Connecteu el LV-MaxSonar-EZ

Amb una capçalera de 90 ° soldada al dispositiu MaxSonar, és fàcil connectar-la a la placa. A continuació, el cable de cinta de 5 pins connecta el MaxSonar a l’Arduino tal com es veu al diagrama. A més del cable de cinta, faig servir peces curtes de filferro de connexió vermell i negre del rail de distribució d’energia per proporcionar energia al dispositiu.

Cablejat:

MaxSonar Arduino Color
1 (BW) Power-GND Groc
2 (PW) Digital-5 Verd
3 (AN) Analògic-0 Blau
4 (RX) Digital-3 Porpra
5 (TX) Digital-2 Gris
6 (+5) Carril +5 BB-PWR Vermell
7 (GND) Ferrocarril GND BB-PWR Negre

Nota:

No deixeu que el nombre de connexions que s’utilitzen en aquest manual d’instruccions us impedeixi considerar el MaxSonar per al vostre projecte. Aquest Instructable utilitza totes les opcions de la interfície MaxSonar per il·lustrar el seu funcionament i comparar-les entre elles i amb el dispositiu HC-SR04. Per a un ús determinat (utilitzant una de les opcions de la interfície), un projecte utilitza generalment un o dos dels pins de la interfície (més alimentació i terra).

Pas 4: Connecteu l'HC-SR04

L'HC-SR04 sol venir amb una capçalera de 90 ° ja connectada, de manera que és fàcil connectar-la a la placa de control. El cable de cinta de 2 pins connecta l'HC-SR04 a l'Arduino tal com es veu al diagrama. A més del cable de cinta, faig servir peces curtes de filferro de connexió vermell i negre del rail de distribució d’energia per proporcionar energia al dispositiu.

HC-SR04 Arduino Color
1 (VCC) Carril +5 BB-PWR Vermell
2 (TRIG) Digital-6 Groc
3 (ECHO) Digital-7 taronja
4 (GND) Ferrocarril GND BB-PWR Negre

Pas 5: connecteu el selector d'opcions "HC-SR04"

Quan vaig començar aquest projecte, la meva intenció era simplement provar les diferents opcions de la interfície del dispositiu MaxSonar. Després de posar-ho en marxa, vaig decidir que seria bo comparar-lo amb l’omnipresent dispositiu HC-SR04 (bugeye). Tot i això, volia poder executar / provar sense incloure-ho, així que vaig afegir una opció / prova al codi.

El codi comprova un pin d'entrada per veure si el dispositiu HC-SR04 s'ha d'incloure a la lectura i la sortida de la mesura.

Al diagrama, es mostra com a commutador, però a la taula de treball simplement faig servir un cable de pont (com es veu a les fotos). Si el cable està connectat a GND, s'inclourà l'HC-SR04 a les mesures. El codi "tira cap amunt" (fa que l'entrada sigui alta / veritable) a l'Arduino, de manera que si no es baixa (connectat a GND) no es mesurarà l'HC-SR04.

Tot i que aquest instructiu es va transformar en una comparació dels dos dispositius, vaig decidir deixar-ho al seu lloc per il·lustrar com podeu incloure / excloure diferents dispositius / opcions al vostre projecte.

Taula de pa Arduino Color
Ferrocarril GND BB-PWR Digital-12 Blanc

Pas 6: fer que tot funcioni …

Fent que tot funcioni …
Fent que tot funcioni …
Fent que tot funcioni …
Fent que tot funcioni …
Fent que tot funcioni …
Fent que tot funcioni …

Ara que tot està connectat, és hora que les coses funcionin.

Com es va esmentar a "Supòsits": no explicaré com funciona l'Arduino IDE ni com programar un Arduino (en detall).

Les seccions següents descomponen el codi Arduino que s’inclou en aquest projecte.

Descomprimiu l'arxiu complet en una ubicació que utilitzeu per al vostre desenvolupament d'Arduino. Carregueu el codi `MaxSonar-outputs.ino` al vostre IDE Arduino i comencem!

Pas 7: Disseny del projecte

El projecte conté informació sobre el dispositiu LV-MaxSonar-EZ, el diagrama del circuit, un README i el codi Arduino. El diagrama del circuit està en format Fritzing, així com una imatge PNG. El README està en format Markdown.

Pas 8: introducció de codi …

En aquest instructiu, no puc passar per tots els aspectes del codi. Cobreixo alguns dels detalls d’alt nivell. Us animo a llegir el comentari de nivell superior del codi i aprofundir en els mètodes.

Els comentaris proporcionen molta informació que no repetiré aquí.

Hi ha algunes coses que vull assenyalar al codi "configuració" …

  • Les instruccions "_DEBUG_OUTPUT": variables i #define
  • Definicions dels 'pins' d'Arduino utilitzats per a la interfície
  • Definicions dels factors de conversió utilitzats en els càlculs

La depuració s’utilitza a tot el codi i mostraré com es pot activar / desactivar dinàmicament.

Les "definicions" s'utilitzen per als pins i conversions d'Arduino per facilitar l'ús d'aquest codi en altres projectes.

S'està depurant …

La secció "Depuració" defineix una variable i algunes macros que faciliten la inclusió de la informació de depuració a la sortida sèrie a petició.

La variable booleana `_DEBUG_OUTPUT` s'estableix a false al codi (es pot definir a true) i s'utilitza com a prova a les macros` DB_PRINT … `. Es pot canviar dinàmicament en codi (tal com es veu al mètode `setDebugOutputMode`).

Globals …

Després de les definicions, el codi crea i inicialitza algunes variables i objectes globals.

  • SoftwareSerial (vegeu la secció següent)
  • _loopCount: s'utilitza per generar una capçalera cada 'n' fila
  • _inputBuffer: s'utilitza per recopilar l'entrada de sèrie / terminal per processar les opcions (depuració activada / desactivada)

Pas 9: Arduino Software-Serial …

Una de les opcions de la interfície MaxSonar és un flux de dades en sèrie. Tanmateix, Arduino UNO només proporciona una única connexió de dades en sèrie, que s’utilitza / comparteix amb el port USB per comunicar-se amb l’IDE Arduino (ordinador amfitrió).

Afortunadament, hi ha un component de biblioteca inclòs amb l'IDE Arduino que utilitza un parell de pins d'E / S digitals Arduino per implementar una interfície d'E / S serial. Atès que la interfície sèrie MaxSonar utilitza 9600 BAUD, aquesta interfície "software" és perfectament capaç de gestionar la comunicació.

Per a aquells que fan servir un Arduino-Mega (o un altre dispositiu que tingui diversos ports sèrie HW), no dubteu a ajustar el codi per utilitzar un port serial físic i eliminar la necessitat del SW-Serial.

El mètode "setup" inicialitza la interfície "SoftwareSerial" que s'utilitzarà amb el dispositiu MaxSonar. Només cal la recepció (RX). La interfície està "invertida" perquè coincideixi amb la sortida del MaxSonar.

Pas 10: Codi: configuració

Tal com s'ha descrit anteriorment, el mètode "setup" inicialitza la interfície "SoftwareSerial", així com la interfície serial física. Configura els pins d'E / S d'Arduino i envia una capçalera.

Pas 11: Codi: bucle

El codi "loop" passa pel següent:

  • Sortiu una capçalera (s'utilitza per a la depuració i el traçador)
  • Activeu el MaxSonar per fer una mesura
  • Llegiu el valor MaxSonar Pulse-Width
  • Llegiu el valor MaxSonar Serial-Data
  • Llegiu el valor analògic de MaxSonar
  • Marqueu l'opció "HC-SR04" i, si està activada:

    Activeu i llegiu el dispositiu HC-SR04

  • Envieu les dades en un format delimitat per pestanyes que el Serial Plotter pot utilitzar
  • Espereu fins que hagi passat el temps suficient perquè es pugui fer una altra mesura

Pas 12: Codi: activa el MaxSonar. Llegiu el valor PW

El MaxSonar té dos modes: "activat" i "continu"

Aquest instructable utilitza el mode "activat", però molts projectes es poden beneficiar d'utilitzar el mode "continu" (vegeu el full de dades).

Quan s'utilitza el mode "activat", la primera sortida vàlida prové de la sortida d'amplada de pols (PW). Després, la resta de sortides són vàlides.

El "tiggerAndReadDistanceFromPulse" fa pulsar el pin de disparador al dispositiu MaxSonar i llegeix el valor de distància d'amplada de pols resultant

Tingueu en compte que, a diferència de molts altres dispositius de sonar, el MaxSonar gestiona la conversió d’anada i tornada, de manera que la distància llegida és la distància a l’objectiu.

Aquest mètode també retarda el temps suficient perquè les altres sortides del dispositiu siguin vàlides (sèrie, analògic).

Pas 13: Codi: llegiu el valor de sèrie MaxSonar

Un cop activat el MaxSonar (o quan es troba en mode "continu"), si l'opció de sortida sèrie està habilitada (mitjançant el control "BW - Pin-1") s'envia un flux de dades sèrie en forma "R nnn", per un CARRIAGE-RETURN '\ r'. El "nnn" és el valor de polzades de l'objecte.

El mètode `readDistanceFromSerial` llegeix les dades de sèrie (des del port sèrie del programari) i converteix el valor 'nnn' en decimal. Inclou un temps d'espera de seguretat, en cas que no es rebi un valor de sèrie.

Pas 14: Codi: llegiu el valor analògic MaxSonar

El port analògic MaxSonar proporciona una tensió de sortida proporcional a la darrera distància mesurada contínuament. Aquest valor es pot llegir en qualsevol moment després de la inicialització del dispositiu. El valor s'actualitza a 50 mS de l'última lectura de distància (mode activat o continu).

El valor és (Vcc / 512) per polzada. Per tant, amb un Vcc de l’Arduino de 5 volts, el valor serà de ~ 9,8 mV / in. El mètode "readDistanceFromAnalog" llegeix el valor de l'entrada analògica Arduino i el converteix en un valor de "polzades".

Pas 15: Codi: activador i lectura de l'HC-SR04

Tot i que hi ha biblioteques per llegir l'HC-SR04, he trobat que algunes no són fiables amb diversos dispositius amb els quals he provat. He trobat que el codi que he inclòs al mètode `sr04ReadDistance` és senzill i més fiable (tant com pot ser el dispositiu HC-SR04 de baix cost).

Aquest mètode estableix i desencadena el dispositiu HC-SR04 i, a continuació, espera a mesurar l'amplada de pols de retorn. La mesura de l’amplada del pols inclou un temps d’espera per fer front al problema HC-SR04 d’una durada de pols molt llarga quan no troba un objectiu. Es suposa que un ample de pols superior a una distància objectiu de ~ 10 peus no és cap objecte ni un objecte que no es pugui reconèixer. Si s'arriba al temps d'espera, es retornarà el valor '0' com a distància. Aquesta "distància" (amplada de pols) es pot ajustar mitjançant els valors #define.

L'amplada del pols es converteix en una distància d'anada i tornada abans de retornar-la com a distància a l'objecte.

Pas 16: Codi: assistència del traçador sèrie Arduino IDE

Codi: assistència del traçador sèrie Arduino IDE
Codi: assistència del traçador sèrie Arduino IDE

Ara per la sortida!

El mètode "loop" activa la recopilació de la mesura de distància des dels dos dispositius, però què en fem?

Bé, és clar, l’enviarem perquè es pugui veure a la consola, però en volem més.

L'Arduino IDE també proporciona la interfície Serial Plotter. L’utilitzarem per proporcionar un gràfic en temps real de la distància al nostre objecte des de les sortides dels nostres dos dispositius.

El Plotter sèrie accepta una capçalera que conté etiquetes de valor i, a continuació, diverses files de valors delimitats que es representaran com a gràfic. Si els valors es publiquen regularment (un cop cada 'tants segons'), el gràfic proporciona una visualització de la distància a l'objecte al llarg del temps.

El mètode `loop` emet els tres valors del MaxSonar i el valor de l'HC-SR04 en un format separat per tabulacions que es pot utilitzar amb el traçador de sèries. Un cop cada 20 files surt la capçalera (per si el Serial Plotter està activat a mig flux).

Això us permet visualitzar la distància a l'obstacle i veure la diferència dels valors retornats pels dos dispositius.

Pas 17: Codi: depuració …

Codi: depuració …
Codi: depuració …
Codi: depuració …
Codi: depuració …

La depuració és una necessitat. Com es pot rastrejar un problema quan alguna cosa no funciona com s’esperava?

Una primera línia d’entesa són sovint algunes sortides de text “simples” que poden indicar el que està passant. Aquests es poden afegir al codi quan i on calgui per localitzar un problema i després eliminar-los un cop resolt el problema. No obstant això, afegir i eliminar el codi requereix molt de temps i, en si mateix, pot comportar altres problemes. De vegades, és millor poder-lo habilitar i desactivar dinàmicament deixant el codi font en pau.

En aquest manual instructiu he inclòs un mecanisme per habilitar i desactivar la depuració de sentències d'impressió (sortida sèrie) de manera dinàmica a partir de l'entrada llegida des del monitor sèrie Arduino IDE (en una pròxima versió, s'espera que el Plotter de sèrie també proporcioni aquesta entrada).

El booleà `_DEBUG_OUTPUT` s'utilitza en diversos mètodes d'impressió #define que es poden utilitzar dins del codi. El valor de la variable _DEBUG_OUTPUT s'utilitza per habilitar o no la impressió (enviament de sortida). El valor es pot canviar dinàmicament dins del codi, tal com fa el mètode `setDebugOutputMode`.

El mètode `setDebugOutputMode` es diu des del bucle en funció de l'entrada rebuda de l'entrada serial. L'entrada s'analitza per veure si coincideix amb "debug on / off | true / false" per habilitar / desactivar el mode de depuració.

Pas 18: Conclusió

Espero que aquesta senzilla configuració de maquinari i el codi d'exemple us puguin ajudar a entendre les diferències entre els dispositius HC-SR04 i els LV-MaxSonar-EZ. Tots dos són molt fàcils d’utilitzar i crec que cadascun té els seus avantatges. Saber quan s’utilitza un en lloc d’un altre pot ser fonamental per a un projecte amb èxit.

BTW - Vaig donar a entendre una manera molt fàcil d’utilitzar per mesurar amb precisió la distància a un objecte mitjançant el LV-MaxSonar-EZ … Podeu utilitzar la sortida analògica (un cable) i el mode de mesura contínua per llegir la distància quan sigui necessari amb el simple codi a "readDistanceFromAnalog" directament des de l'entrada analògica Arduino. Un cable i (condensat) una línia de codi.

Pas 19: Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)

Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)
Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)
Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)
Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)
Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)
Connexió MaxSonar alternativa (mitjançant capçalera de 180 °)

Com he esmentat, el MaxSonar no inclou cap capçalera connectada. Per tant, podeu utilitzar la connexió més adequada per al vostre projecte. En alguns casos, una capçalera de 180 ° (recta) pot ser més adequada. Si aquest és el cas, volia mostrar ràpidament com es pot utilitzar amb aquest instructiu. Aquesta il·lustració mostra un MaxSonar amb una capçalera recta connectada a la placa amb un cable de cinta femella-home i després connectada a l'Arduino tal com es descriu a la resta de l'article.

Pas 20: Codi Arduino

El codi Arduino es troba a la carpeta 'MaxSonar-outputs' del projecte a Sonar Range-Finder Comparison

Recomanat: