HC-SR04: tot sobre el sensor d'ultrasons

Sensor HC-SR04

De vegades és necessari mesurar distàncies i per això tens a la teva disposició diversos sensors. Ja vam dedicar un article a parlar d'un sensor de distància d'alta precisió com era el VL52L0X. Aquest sensor era de tipus ToF i es basava en mesuraments molt precises gràcies al seu làser. Però si la precisió no és tan important per a tu i vols alguna cosa que et permeti mesurar distàncies a un preu baix, una altra de les possibilitats que tens al teu abast és l'HC-SR04.

En el cas del sensor de distàncies HC-SR04, la distància es mesura mitjançant ultrasons. El sistema és similar a l'mètode òptic de l'VL52L0X. És a dir, s'emet, hi ha un rebot i es rep, però en aquest cas en comptes de ser un làser o IR, es tracta d'ultrasons. Si ets apassionat de l'electrònica, robòtica o maker aficionat, el podràs fer servir per a multitud de projectes DIY com a sistemes de detecció d'obstacles per a robots, sensors de presència, etc.

Què és l'HC-SR04?

Bé, és obvi, com ja he comentat en els paràgrafs anteriors, l'HC-SR04 és un sensor de distància de baixa precisió basat en ultrasons. Amb ell permet mesurar distàncies d'una manera senzilla i ràpida, tot i que en principi no se sol usar per això. El més freqüent és que s'utilitzi com un transductor per detectar obstacles i poder-los evitar mitjançant altres mecanismes associats a la resposta de l'sensor.

L'aspecte de l' HC-SR04 és molt característic i es reconeix amb facilitat. A més, és un element bastant popular en els kits d'iniciació per a Arduino i necessari per a multitud de projectes. S'identifica fàcilment perquè té dues «ulls» que realment són els dispositius d'ultrasons que integra aquest mòdul. Un d'ells és un emissor d'ultrasons i l'altre un receptor. Treballa a una freqüència de 40 Khz, per tant és inaudible per als éssers humans.

Principis de l'sensor d'ultrasons

El principi en el qual es basa és simular a l'utilitzat quan tires una pedra a un pou per mesurar la seva profunditat. Tires la pedra i cronometras el que triga a caure a el fons. Després fas càlculs de la velocitat pel temps transcorregut i obtens la distància que ha recorregut la pedra. Però en aquest cas el sensor ets tu.

ESP8266
Article relacionat:
ESP8266: el mòdul WIFI per Arduino

En l'HC-SR04, l'emissor emetrà ultrasons i quan rebotin en un objecte o obstacle que es trobi en el camí seran captats pel receptor. el circuit s'encarregarà de fer els càlculs necessaris d'aquest ressò per determinar la distància. Això també et pot ser familiar si coneixes el sistema que fan servir alguns animals com els dofins, balenes o ratpenats per localitzar obstacles, preses, etc.

Comptant el temps des que s'envia el pols fins que es rep resposta es pot determinar amb exactitud el temps i per tant la distància. Recorda que [Espai = velocitat · temps] però en el cas de l'HC-SR04 s'haurà de dividir aquesta quantitat entre / 2, ja que s'ha mesurat el temps des que surt l'ultrasò i recorre l'espai fins a impactar amb l'obstacle i el camí de tornada, així que serà aproximadament de la meitat d'aquest ...

Pinout i datasheets

Ja saps que per veure les dades a l'complet d'el model que hagis adquirit, el millor és cercar el datasheet concret de fabricant. Per exemple, aquí tens un datasheet de Sparkfun, Però hi ha molts més disponibles en PDF. No obstant això, aquí et exposo les dades tècniques més importants de l'HC-SR04:

  • Pintura: 4 pins per a alimentació (Vcc), disparador (Trigger), receptor (Echo) i terra (GND). El disparador indica quan s'ha d'activar el sensor (quan es llança el ultrasò), i així es podrà saber el temps transcorregut quan el receptor rep el senyal.
  • Alimentació: 5V
  • Freqüència d'ultrasons: 40 Khz, l'oïda humana només pot escoltar des de 20Hz fins 20kHz. Tot el que estigui per sota de 20Hz (infrasons) i per sobre de 20kHz (ultrasons) no serà perceptible.
  • Consum (stand-by): <2mA
  • consum treballant: 15 mA
  • angle efectiu: <15º, en funció dels angles dels objectes podrà tenir millors o pitjors resultats.
  • distància mesura: De 2 cm a 400cm, encara que a partir dels 250 cm la resolució no serà molt bona.
  • resolució mitjana: 0.3 cm de variació entre la distància real i la mesura, així que tot i no considerar-se d'alta precisió com el làser, les mesures són bastant acceptables per a la majoria de les aplicacions.
  • Preu: A partir d'uns 0,65 €

Integració amb Arduino

HC-SR04 amb Arduino

Per a la connectar-lo a Arduino no pot ser més senzill. Tan sols t'has de fer càrrec de connectar GND a la sortida corresponent del teu Arduino marcada com a tal, Vcc amb l'alimentació 5v d'Arduino i els altres dos pins de l'HC-SR04 amb les entrades / sortides triades per al teu projecte. Pots veure que és senzill en l'esquema de Fritzing superior ...

Només has de tenir una consideració, que l'Tigger ha de rebre un pols elèctric de al menys 10 microsegons perquè s'activi adequadament. Prèviament has d'assegurar que està en valor LOW.

Quant al codi per Arduino IDE, No has de fer servir cap biblioteca ni res per l'estil com amb altres components. Tan sols confeccionar la fórmula per calcular la distància i poc més ... Per descomptat, si vols que el teu projecte faci alguna cosa en resposta al mesurament de l'sensor HC-SR04, hauràs de afegir el codi que necessitis. Per exemple, en comptes de simplement mostrar les mesures per la consola, pots fer que per a certes distàncies uns servomotors es moguin en un sentit o un altre per evitar l'obstacle, o que un motor s'aturi, que una alarma s'activi quan detecti proximitat, etc .

 Més informació sobre la programació: Manual d'Arduino (PDF gratuït)

Per exemple, pots veure aquest codi bàsic per usar-lo com a 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;
}


Un comentari, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Jose va dir

    Em va semblar molt útil i senzilla l'explicació.