detectoarele de rază ultrasonică sunt senzori amuzanți care pot măsura distanța. Le puteți folosi pentru a găsi Distanța până la un obiect sau pentru a detecta când ceva se află în apropierea senzorului ca un detector de mișcare. Sunt ideale pentru proiecte care implică navigație, evitarea obiectelor și securitatea locuinței. Deoarece folosesc sunetul pentru a măsura distanța, lucrează la fel de bine în întuneric ca și în lumină., Ultrasonic range finder eu voi fi folosind în acest tutorial este HC-SR04, care pot măsura distanțe de 2 cm până la 400 cm, cu o precizie de ±3 mm.
În acest articol, eu vă va arăta cum să facă trei diferite range finder circuite pentru Arduino. Primul circuit de căutare este ușor de configurat și are o precizie destul de bună. Celelalte două sunt un pic mai complicate, dar sunt mai precise, deoarece acestea iau în considerare temperatura și umiditatea. Dar înainte de a intra în asta, să vorbim despre modul în care telemetrul măsoară distanța.,
Rearanjarea aceasta formula, vom obține formula utilizată pentru a calcula distanta:
variabila timp este timpul necesar pentru ca impulsul ultrasonic să părăsească senzor, sări de pe obiect, și a reveni la senzor., De fapt, împărțim acest timp în jumătate, deoarece trebuie doar să măsurăm distanța față de obiect, nu Distanța față de obiect și înapoi la senzor. Variabila de viteză este viteza cu care sunetul călătorește prin aer.viteza sunetului în aer se schimbă odată cu temperatura și umiditatea. Prin urmare, pentru a calcula cu exactitate distanța, va trebui să luăm în considerare temperatura și umiditatea ambiantă., Formula pentru viteza sunetului în aer, cu temperatură și umiditate au reprezentat este:
De exemplu, la temperatura de 20°C și 50% umiditate, sunetul calatoreste cu o viteza de:
În ecuația de mai sus, este clar că temperatura are cel mai mare efect asupra vitezei sunetului. Umiditatea are o anumită influență, dar este mult mai mică decât efectul temperaturii.,
cum telemetrul cu ultrasunete măsoară distanța
pe partea frontală a telemetrului cu ultrasunete sunt doi cilindri metalici. Acestea sunt traductoare. Traductoarele transformă forțele mecanice în semnale electrice. În telemetrul cu ultrasunete, există un traductor de transmisie și un traductor de recepție. Traductorul de transmisie convertește un semnal electric în pulsul ultrasonic, iar traductorul de recepție convertește pulsul ultrasonic reflectat înapoi într-un semnal electric., Dacă te uiți la partea din spate a range finder, veți vedea un IC în spatele traductorului de transmisie etichetat MAX3232. Acesta este IC care controlează traductorul de transmisie. În spatele traductorului receptor este un IC etichetat LM324. Acesta este un quad Op-Amp care amplifică semnalul generat de traductorul receptor într-un semnal care este suficient de puternic pentru a transmite Arduino.,
HC-SR04 ultrasonic range finder are patru pini:
- Vcc – consumabile puterea de a genera impulsuri ultrasonice
- GND – conectat la masă
- Trigonometrie – unde Arduino trimite semnalul pentru a începe cu ultrasunete puls
- Echo – unde ultrasonic range finder trimite informații despre durata călătoriei întreprinse de impulsul ultrasonic pentru Arduino
Pentru a iniția o distanță de măsurare, avem nevoie pentru a trimite un 5V semnal înalt la Trigonometrie pin pentru cel puțin 10 µs., Când modulul primește acest semnal, acesta va emite 8 impulsuri de sunet ultrasonic la o frecvență de 40 KHz de la traductorul de transmisie. Apoi așteaptă și ascultă la traductorul de recepție semnalul reflectat. Dacă un obiect se află în raza de acțiune, cele 8 impulsuri vor fi reflectate înapoi la senzor. Când pulsul atinge traductorul de recepție, pinul ecou emite un semnal de înaltă tensiune.
lungimea acestui semnal de înaltă tensiune este egală cu timpul total pe care cele 8 impulsuri îl iau pentru a călători de la traductorul de transmisie și înapoi la traductorul de recepție., Cu toate acestea, vrem doar să măsurăm distanța față de obiect și nu Distanța căii pe care a luat-o pulsul sonor. Prin urmare, împărțim acel timp în jumătate pentru a obține variabila de timp în ecuația d = S x t de mai sus. Deoarece știm deja viteza sunetului (s), putem rezolva ecuația pentru distanță.
ultrasonic Range Finder Setup for Serial Monitor Output
Să începem prin a face un simplu interval de căutare cu ultrasunete, care va ieșire măsurători la distanță pentru monitorul serial. Dacă doriți să transmiteți citirile pe un ecran LCD, consultați secțiunea următoare., Conectarea totul este ușor, doar de sârmă ca aceasta:
Odată ce ai totul conectat, încărcați acest program pentru Arduino:
Explicarea Codului
- Linia 11: Declară variabilele
duration
șidistance
. - liniile 12 și 13: trimite un semnal scăzut de 2 µs la
trigPin
pentru a vă asigura că este oprit la începutul buclei de program., - linii 15-17: trimite un semnal ridicat de 10 µs la
trigPin
pentru a iniția secvența a opt impulsuri ultrasonice de 40 KHz trimise de la traductorul de transmisie. - Linia 19: Definește
duration
variabila ca lungime (în µs) de orice MARE semnal de intrare detectate laechoPin
. Ieșirea Echo pin este egală cu timpul necesar impulsului ultrasonic emis pentru a călători la obiect și înapoi la senzor., - Linia 20: Definește
distance
variabila ca durata (timpul în d = s x t) înmulțită cu viteza sunetului transformată din metri pe secundă la centimetri pe µs (0.0344 cm/µs). - liniile 22-24: dacă distanța este mai mare sau egală cu 400 cm sau mai mică sau egală cu 2 cm, afișați „distanță = în afara intervalului” pe monitorul serial.
- liniile 26-30: dacă măsurarea distanței nu este în afara intervalului, Afișați distanța calculată în linia 20 pe monitorul serial pentru 500 ms.,
Ultrasonic Range Finder Cu LCD de Ieșire
Dacă doriți să ieșire măsurătorile de distanță la un 16X2 LCD, urmați această diagramă pentru a conecta range finder și LCD pentru Arduino:
Dacă aveți nevoie de mai mult ajutor conectarea LCD, încercați noastre alte tutorial despre configurarea unui LCD de pe Arduino., Când totul este conectat, încărcați acest cod pentru Arduino:
O Precizie mai Mare Ultrasonic Range Finder
Deoarece temperatura este o variabilă în viteza sunetului ecuația de mai sus (c = 331.4 + (0.606 x T) + (0.0124 x H)), temperatura aerului în jurul senzorului ne afectează măsurători la distanță. Pentru a compensa acest lucru, tot ce trebuie să facem este să adăugăm un termistor în circuitul nostru și să introducem citirile sale în ecuație. Acest lucru ar trebui să ofere măsurătorilor noastre de distanță o precizie mai mare., Un termistor este un rezistor variabil care schimbă rezistența cu temperatura. Pentru a afla mai multe despre termistori, consultați articolul nostru, tutorialul senzorului de temperatură Arduino termistor. Aici este o diagramă pentru a vă ajuta să adăugați un termistor pentru a-ți range finder circuit:
- R1 = 10K Ohm rezistor
- – Lea = 10K Ohm termistor
Notă: valoarea R1 trebuie sa fie egala cu rezistenta termistor.,după ce totul este conectat, încărcați acest cod în Arduino:
explicația Codului
în programul de căutare a gamei de bază la începutul acestui articol, am folosit formula d = S x t pentru a calcula distanța. În acest program, vom folosi formula care conturile pentru temperatură și umiditate (c = 331.4 + (0.606 x, T) + (0.0124 x H)).
în liniile 5-10, ecuația Steinhart-Hart este utilizată pentru a converti valorile rezistenței termistorului la temperatură, care sunt stocate într-o variabilă numită temp
., În linia 35, adăugăm o nouă variabilă (spdSnd
) care conține ecuația vitezei sunetului. Ieșirea din variabila spdSnd
este utilizată ca viteză în funcția distance
pe linia 36.
foarte mare (aproape prea mare) precizie cu ultrasunete gama Finder
temperatura compensată cu ultrasunete gama finder circuit este destul de precis pentru ceea ce cei mai mulți oameni vor folosi pentru. Cu toate acestea, există un alt factor care afectează viteza sunetului în aer (și, prin urmare, calculul distanței), și anume umiditatea., Puteți spune din ecuația vitezei sunetului că umiditatea are doar un efect mic asupra vitezei sunetului, dar vă permite să o verificați oricum.există mai multe tipuri de senzori de umiditate pe care le puteți utiliza pe Arduino, dar voi folosi senzorul de umiditate și temperatură DHT11. Acest modul are de fapt un termistor în plus față de senzor de umiditate, astfel încât configurarea este foarte simplu:
După ce totul este conectat, va trebui să instalați o bibliotecă specială pentru a rula codul., Biblioteca este biblioteca DHTLib scrisă de Rob Tillaart. Biblioteca este ușor de instalat. În primul rând, descărcați .fișierul zip de mai jos. Apoi, în Arduino IDE, du-te pentru a Schița>Include Biblioteca>Adăugare ZIP Library, apoi selectați DHTLib.fișier zip.,
DHTLib
După ce biblioteca este instalat, încărcați acest cod pentru Arduino:
Explicarea Codului
valorile de temperatură și umiditate ieșire de DHT11 sunt digitale, deci nu avem nevoie de a utiliza Steinhart-Hart ecuație pentru a converti termistor rezistenta la temperatura. Biblioteca DHTLib conține toate funcțiile necesare pentru a obține temperatura și umiditatea în unități pe care le putem folosi direct în ecuația vitezei sunetului. Variabilele de temperatură și umiditate sunt numite DHT.temperature
și DHT.humidity
., Apoi, viteza este utilizată ca variabilă în ecuația distanței pe linia 28.
La ieșire măsurătorile de distanță la un LCD, conectați mai întâi LCD următoarele nostru tutorial Cum să înființeze un Ecran LCD pe un Arduino, apoi încărcați acest cod:
urmariti tutorialul video pentru a vedea ultrasonic range finder circuite în acțiune:
vă Mulțumim pentru citirea! Lasă un comentariu dacă ai întrebări despre cum să le configurezi., Dacă vă plac articolele noastre aici, la elementele de bază ale circuitului, abonați-vă și vă vom anunța când publicăm articole noi. De asemenea, dacă știți pe altcineva care ar găsi acest articol util, vă rugăm să-l împărtășească!