HC-SR04: alt om ultralydssensoren

HC-SR04-sensor

Nogle gange er det nødvendigt Mål afstande og til det har du flere sensorer til rådighed. Vi har allerede dedikeret en artikel til at tale om en høj præcisionsafstandssensor såsom VL52L0X. Denne sensor var af ToF-typen og var baseret på meget præcise målinger takket være dens laser. Men hvis præcision ikke er så vigtig for dig, og du vil have noget, der giver dig mulighed for at måle afstande til en lav pris, en anden mulighed du har lige ved hånden er HC-SR04.

I tilfælde af HC-SR04 afstandssensor, afstand måles ved hjælp af ultralyd. Systemet svarer til den optiske metode til VL52L0X. Det vil sige, det udsendes, der er en bounce, og den modtages, men i dette tilfælde er det ultralyd i stedet for at være en laser eller IR. Hvis du er lidenskabelig med elektronik, robotik eller amatørproducent, kan du bruge det til en lang række DIY-projekter såsom forhindringsdetekteringssystemer til robotter, tilstedeværelsessensorer osv.

Hvad er HC-SR04?

Nå, det er indlysende, som jeg allerede har kommenteret i de foregående afsnit, HC-SR04 er en afstandssensor med lav præcision baseret på ultralyd. Med det tillader det at måle afstande på en enkel og hurtig måde, selvom det i princippet ikke normalt bruges til det. Oftest bruges den som en transducer til at detektere forhindringer og undgå dem gennem andre mekanismer forbundet med sensorens respons.

Udseendet af HC-SR04 er meget markant og let genkendelig. Derudover er det en ganske populær vare i Arduino startpakker og nødvendig for en lang række projekter. Det identificeres let, fordi det har to "øjne", der faktisk er ultralydsenhederne, som dette modul integrerer. Den ene er en ultralydsudsender og den anden en modtager. Det fungerer med en frekvens på 40 Khz, derfor er det uhørligt for mennesker.

Principper for ultralydssensor

Princippet, hvormed Det er baseret på at simulere den, der bruges, når du smider en sten i en brønd for at måle dybden. Du smider stenen og tid, hvor lang tid det tager for den at falde til bunden. Derefter foretager du beregninger af hastigheden for den forløbne tid, og du får den afstand, som stenen har tilbagelagt. Men i så fald er sensoren dig.

ESP8266
relateret artikel:
ESP8266: WIFI-modulet til Arduino

I HC-SR04 udsender emitteren ultralyd, og når de hopper over en genstand eller hindring på den måde, de bliver fanget af modtageren. Det kredsløb vil udføre de nødvendige beregninger af dette ekko for at bestemme afstanden. Dette kan også være kendt for dig, hvis du kender systemet, som nogle dyr som delfiner, hvaler eller flagermus bruger til at lokalisere forhindringer, bytte osv.

Ved at tælle tiden siden pulsen er sendt, indtil svaret er modtaget, kan tiden og derfor afstanden bestemmes nøjagtigt. Huske på, at [Mellemrum = hastighedstid] men i tilfælde af HC-SR04 skal du dividere denne mængde med / 2, da tiden er målt fra ultralydets udgang og bevæger sig gennem rummet, indtil den rammer forhindringen og vejen tilbage, så det vil være ca. halvdelen af ​​dette ...

Pinout og datablad

Du ved allerede, at det bedste er at se de komplette data for den model, du har erhvervet find databladet fabrikantens beton. For eksempel er her en Sparkfun datablad, men der er mange flere tilgængelige i PDF. Her er dog de vigtigste tekniske data for HC-SR04:

  • pinout: 4 ben til strøm (Vcc), trigger (Trigger), modtager (Echo) og jord (GND). Udløseren angiver, hvornår sensoren skal aktiveres (når ultralydet startes), og det vil således være muligt at kende den forløbne tid, når modtageren modtager signalet.
  • fodring: 5 V.
  • Ultralydfrekvens: 40 Khz, det menneskelige øre kan kun høre fra 20Hz til 20Khz. Alt under 20Hz (infralyd) og over 20Khz (ultralyd) kan ikke mærkes.
  • Forbrug (stand-by): <2mA
  • Forbrug fungerer: 15 mA
  • Effektiv vinkel: <15º, afhængigt af objekternes vinkler, kan du få bedre eller dårligere resultater.
  • Målt afstand: fra 2 cm til 400 cm, selvom opløsningen ikke er særlig god fra 250 cm.
  • Medium opløsning: 0.3 cm variation mellem den faktiske afstand og målingen, så på trods af at de ikke betragtes som meget nøjagtige som laser, er målingerne meget acceptable for de fleste applikationer.
  • pris: fra ca. € 0,65

Integration med Arduino

HC-SR04 med Arduino

til at forbinde det til Arduino kunne ikke være nemmere. Du skal bare være ansvarlig for at forbinde GND til det tilsvarende output på din Arduino markeret som sådan, Vcc med Arduino 5v strømforsyning og de to andre ben på HC-SR04 med de indgange / udgange, der er valgt til dit projekt. Du kan se, at det er simpelt i det øverste Fritzing-skema ...

Du skal bare have en overvejelse, at udløseren skal modtage en elektrisk puls på mindst 10 mikrosekunder for at den kan aktiveres korrekt. Tidligere skal du sikre dig, at den er i LAV værdi.

Med hensyn til kode til Arduino IDE, behøver du ikke bruge noget bibliotek eller lignende til andre komponenter. Lav bare formlen til at beregne afstanden og lidt andet ... Hvis du ønsker, at dit projekt skal gøre noget som svar på målingen af ​​HC-SR04-sensoren, skal du selvfølgelig tilføje den kode, du har brug for. For eksempel i stedet for blot at vise målingerne på konsollen kan du få servomotorer til at bevæge sig i en eller anden retning i bestemte afstande for at undgå forhindringen eller for at en motor stopper, en alarm skal aktiveres, når den registrerer nærhed osv. .

 Flere oplysninger om programmering: Arduino-vejledning (gratis PDF)

For eksempel kan du se dette grundlæggende kode, der skal bruges som base:

//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;
}


En kommentar, lad din

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Jose sagde han

    Jeg fandt forklaringen meget nyttig og enkel.