HC-SR04: totul despre senzorul cu ultrasunete

Senzor HC-SR04

Uneori este necesar Măsurați distanțele iar pentru asta ai la dispoziție mai mulți senzori. Am dedicat deja un articol pentru a vorbi despre un senzor de distanță de înaltă precizie, cum ar fi VL52L0X. Acest senzor era de tip ToF și se baza pe măsurători foarte precise datorită laserului său. Dar dacă precizia nu este atât de importantă pentru dvs. și doriți ceva care să vă permită să măsurați distanțele la un preț mic, o altă posibilitate aveți la îndemână HC-SR04.

În cazul Senzor de distanță HC-SR04, distanța se măsoară cu ultrasunete. Sistemul este similar cu metoda optică a VL52L0X. Adică se emite, există un salt și se primește, dar în acest caz în loc să fie laser sau IR, este ultrasunete. Dacă sunteți pasionat de electronică, robotică sau producător de amatori, îl puteți folosi pentru o multitudine de proiecte DIY, cum ar fi sisteme de detectare a obstacolelor pentru roboți, senzori de prezență etc.

Ce este HC-SR04?

Ei bine, este evident, așa cum am comentat deja în paragrafele anterioare, HC-SR04 este un senzor de distanță de mică precizie bazat pe ultrasunete. Cu acesta permite măsurarea distanțelor într-un mod simplu și rapid, deși, în principiu, nu este de obicei folosit pentru asta. Cel mai adesea, este folosit ca traductor pentru a detecta obstacolele și a le evita prin alte mecanisme asociate cu răspunsul senzorului.

Apariția HC-SR04 este foarte distinctiv și ușor de recunoscut. În plus, este un element destul de popular în kiturile de pornire Arduino și este necesar pentru o multitudine de proiecte. Este ușor de identificat deoarece are doi „ochi” care sunt de fapt dispozitivele cu ultrasunete pe care le integrează acest modul. Una dintre ele este un emițător de ultrasunete, iar cealaltă un receptor. Funcționează la o frecvență de 40 Khz, prin urmare este inaudibil pentru oameni.

Principiile senzorului cu ultrasunete

Principiul în care Se bazează pe simularea celei folosite atunci când arunci o piatră într-o fântână pentru a măsura adâncimea acesteia. Aruncați piatra și timp cât durează să cadă pe fund. Apoi faci calcule ale vitezei pentru timpul scurs și obții distanța parcursă de piatră. Dar în acest caz senzorul ești tu.

ESP8266
Articol asociat:
ESP8266: modulul WIFI pentru Arduino

În HC-SR04, emițătorul va emite ultrasunete și atunci când va sări de pe un obiect sau obstacol în felul în care va fi capturat de receptor. circuitul va face calculele necesare a acelui ecou pentru a determina distanța. Acest lucru vă poate fi familiar, de asemenea, dacă cunoașteți sistemul pe care unele animale, cum ar fi delfinii, balenele sau liliecii, îl folosesc pentru a localiza obstacolele, prada etc.

Prin numărarea timpului de la trimiterea pulsului până la primirea răspunsului, timpul și, prin urmare, distanța pot fi determinate cu acuratețe. Sa nu uiti asta [Spațiu = timp viteză] dar în cazul HC-SR04, trebuie să împărțiți această cantitate la / 2, deoarece timpul a fost măsurat de la ieșirea ultrasunetelor și se deplasează prin spațiu până când lovește obstacolul și drumul înapoi, deci va fi aproximativ jumătate din asta ...

Pinout și fișe tehnice

Știți deja că pentru a vedea datele complete ale modelului pe care l-ați achiziționat, cel mai bun lucru este găsiți fișa tehnică beton producător. De exemplu, aici este un Foaie de date Sparkfun, dar sunt mult mai multe disponibile în format PDF. Cu toate acestea, iată cele mai importante date tehnice ale HC-SR04:

  • pinout: 4 pini pentru putere (Vcc), declanșator (Trigger), receptor (Echo) și masă (GND). Declanșatorul indică momentul în care senzorul trebuie activat (când ultrasunetele sunt lansate) și astfel se va putea cunoaște timpul scurs când receptorul primește semnalul.
  • hrănire: 5 V
  • Frecvența ultrasunetelor: 40 Khz, urechea umană poate auzi doar de la 20Hz la 20Khz. Tot ce este sub 20Hz (infrasunete) și peste 20Khz (ultrasunete) nu va fi perceptibil.
  • Consum (stand-by): <2mA
  • Consumul funcționează: 15 mA
  • Unghiul efectiv: <15º, în funcție de unghiurile obiectelor, puteți avea rezultate mai bune sau mai proaste.
  • Distanța măsurată: de la 2cm la 400cm, deși de la 250 cm rezoluția nu va fi foarte bună.
  • Rezoluție medie: Variație de 0.3 cm între distanța reală și măsurare, deci, în ciuda faptului că nu sunt considerate extrem de precise ca laserul, măsurătorile sunt destul de acceptabile pentru majoritatea aplicațiilor.
  • preț: de la aproximativ 0,65 €

Integrare cu Arduino

HC-SR04 cu Arduino

la conectarea la Arduino nu ar putea fi mai ușoară. Trebuie doar să vă ocupați de conectarea GND la ieșirea corespunzătoare a Arduino-ului dvs. marcat ca atare, Vcc cu sursa de alimentare Arduino 5v și ceilalți doi pini ai HC-SR04 cu intrările / ieșirile alese pentru proiectul dvs. Puteți vedea că este simplu în schema Fritzing superioară ...

Trebuie doar să aveți o singură considerație, că tigrul trebuie să primească un impuls electric de cel puțin 10 microsecunde pentru ca acesta să se activeze corect. Anterior trebuie să vă asigurați că are o valoare LOW.

Ca cod pentru Arduino IDE, nu trebuie să utilizați nicio bibliotecă sau ceva asemănător, cum ar fi cu alte componente. Faceți doar formula pentru a calcula distanța și puțin altceva ... Desigur, dacă doriți ca proiectul dvs. să facă ceva ca răspuns la măsurarea senzorului HC-SR04, va trebui să adăugați codul de care aveți nevoie. De exemplu, în loc să afișați pur și simplu măsurătorile pe consolă, puteți face servomotorii să se deplaseze într-o direcție sau alta pentru anumite distanțe pentru a evita obstacolul sau pentru ca un motor să se oprească, o alarmă să fie activată atunci când detectează proximitatea etc. .

 Mai multe informații despre programare: Manual Arduino (PDF gratuit)

De exemplu, puteți vedea acest lucru cod de bază de utilizat ca bază:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


Un comentariu, lasă-l pe al tău

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Jose el a spus

    Am găsit explicația foarte utilă și simplă.