HC-SR04: tutto sul sensore a ultrasuoni

Sensore HC-SR04

A volte è necessario Misura le distanze e per questo hai a tua disposizione diversi sensori. Abbiamo già dedicato un articolo per parlare di a sensore di distanza ad alta precisione come il VL52L0X. Questo sensore era del tipo ToF e si basava su misurazioni molto precise grazie al suo laser. Ma se la precisione non è così importante per te e vuoi qualcosa che ti permetta di misurare distanze a basso prezzo, un'altra possibilità che quello che hai a portata di mano è l'HC-SR04.

Nel caso di Sensore di distanza HC-SR04, la distanza viene misurata mediante ultrasuoni. Il sistema è simile al metodo ottico del VL52L0X. Cioè, viene emesso, c'è un rimbalzo e viene ricevuto, ma in questo caso invece di essere un laser o un IR, è un ultrasuono. Se sei appassionato di elettronica, robotica o produttore amatoriale, puoi usarlo per una moltitudine di progetti fai-da-te come sistemi di rilevamento ostacoli per robot, sensori di presenza, ecc.

Cos'è l'HC-SR04?

Ebbene, è ovvio, come ho già commentato nei paragrafi precedenti, L'HC-SR04 è un sensore di distanza a bassa precisione basato sugli ultrasuoni. Con esso consente di misurare le distanze in modo semplice e veloce, anche se in linea di principio non viene solitamente utilizzato per questo. Molto spesso, viene utilizzato come trasduttore per rilevare ostacoli ed evitarli attraverso altri meccanismi associati alla risposta del sensore.

L'aspetto del HC-SR04 è molto caratteristico e facilmente riconoscibile. Inoltre, è un elemento abbastanza popolare negli starter kit di Arduino e necessario per una moltitudine di progetti. È facilmente identificabile perché ha due "occhi" che in realtà sono i dispositivi a ultrasuoni che questo modulo integra. Uno di loro è un emettitore di ultrasuoni e l'altro un ricevitore. Funziona a una frequenza di 40 Khz, quindi non è udibile dagli esseri umani.

Principi del sensore a ultrasuoni

L'inizio in cui Si basa sulla simulazione di quello utilizzato quando si lancia una pietra in un pozzo per misurarne la profondità. Lanci la pietra e calcola quanto tempo ci vuole perché cada sul fondo. Quindi fai i calcoli della velocità per il tempo trascorso e ottieni la distanza percorsa dalla pietra. Ma in quel caso il sensore sei tu.

ESP8266
Articolo correlato:
ESP8266: il modulo WIFI per Arduino

Nell'HC-SR04, l'emettitore emetterà ultrasuoni e quando rimbalzano su un oggetto o un ostacolo nel modo in cui verranno catturati dal ricevitore. Il circuito farà i calcoli necessari di quell'eco per determinare la distanza. Questo potrebbe anche esserti familiare se conosci il sistema che alcuni animali come delfini, balene o pipistrelli usano per localizzare ostacoli, prede, ecc.

Contando il tempo trascorso dall'invio dell'impulso alla ricezione della risposta, è possibile determinare con precisione il tempo e quindi la distanza. Ricordati che [Spazio = tempo di velocità] ma nel caso dell'HC-SR04, è necessario dividere questa quantità per / 2, poiché il tempo è stato misurato da quando l'ultrasuono esce e viaggia nello spazio fino a quando non colpisce l'ostacolo e la via del ritorno, quindi sarà approssimativamente metà di questo ...

Pinout e schede tecniche

Sai già che per vedere i dati completi del modello che hai acquisito, la cosa migliore è trova la scheda tecnica cemento del produttore. Ad esempio, ecco un file Scheda tecnica Sparkfun, ma ce ne sono molti altri disponibili in PDF. Tuttavia, ecco i dati tecnici più importanti dell'HC-SR04:

  • Pinout: 4 pin per alimentazione (Vcc), trigger (Trigger), ricevitore (Echo) e massa (GND). Il trigger indica quando il sensore deve essere attivato (quando viene lanciato l'ultrasuono), e quindi sarà possibile conoscere il tempo trascorso quando il ricevitore riceve il segnale.
  • Alimentazione: 5v
  • Frequenza degli ultrasuoni: 40 Khz, l'orecchio umano può sentire solo da 20Hz a 20Khz. Tutto ciò che è inferiore a 20Hz (infrasuoni) e superiore a 20Khz (ultrasuoni) non sarà percepibile.
  • Consumo (standby): <2mA
  • Consumo funzionante: 15 mA
  • Angolo effettivo: <15º, a seconda degli angoli degli oggetti potresti avere risultati migliori o peggiori.
  • Distanza misurata: da 2 cm a 400 cm, anche se da 250 cm la risoluzione non sarà molto buona.
  • Risoluzione media: Variazione di 0.3 cm tra la distanza effettiva e la misurazione, quindi nonostante non sia considerata altamente precisa come il laser, le misurazioni sono abbastanza accettabili per la maggior parte delle applicazioni.
  • Prezzo: da circa € 0,65

Integrazione con Arduino

HC-SR04 con Arduino

a collegarlo ad Arduino non potrebbe essere più semplice. Devi solo essere incaricato di collegare GND all'uscita corrispondente del tuo Arduino contrassegnata come tale, Vcc con l'alimentatore Arduino 5v e gli altri due pin dell'HC-SR04 con gli ingressi / uscite scelti per il tuo progetto. Puoi vedere che è semplice nello schema Fritzing superiore ...

Devi solo avere una considerazione, che il tigger deve ricevere un impulso elettrico di almeno 10 microsecondi per attivarsi correttamente. In precedenza è necessario assicurarsi che sia nel valore BASSO.

Da codice per Arduino IDE, non è necessario utilizzare alcuna libreria o qualcosa di simile con altri componenti. Basta fare la formula per calcolare la distanza e poco altro ... Naturalmente, se vuoi che il tuo progetto faccia qualcosa in risposta alla misurazione del sensore HC-SR04, dovrai aggiungere il codice che ti serve. Ad esempio, invece di visualizzare semplicemente le misure sulla consolle, è possibile far muovere i servomotori in una direzione o nell'altra per determinate distanze per evitare l'ostacolo, oppure per un motore che si ferma, un allarme da attivare quando rileva la prossimità, ecc. .

 Ulteriori informazioni sulla programmazione: Manuale Arduino (PDF gratuito)

Ad esempio, puoi vedere questo codice base da utilizzare come 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 commento, lascia il tuo

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Jose suddetto

    Ho trovato la spiegazione molto utile e semplice.