norr@manorshi.com         +86-519-89185720
1
Centro notizie

Come utilizzare il sensore a ultrasuoni con Arduino?

Visualizzazioni: 164     Autore: Grace Orario di pubblicazione: 26/07/2021 Origine: Sito

pulsante di condivisione di Facebook
pulsante di condivisione su Twitter
pulsante di condivisione della linea
pulsante di condivisione wechat
pulsante di condivisione linkedin
pulsante di condivisione di Pinterest
pulsante di condivisione di whatsapp
pulsante di condivisione Kakao
pulsante di condivisione di Snapchat
pulsante di condivisione del telegramma
condividi questo pulsante di condivisione

Come utilizzare il sensore a ultrasuoni con Arduino: Guida HC-SR04

IL Il sensore a ultrasuoni HC-SR04 è uno dei moduli di misurazione della distanza più popolari per i progetti Arduino. È ampiamente utilizzato nei robot per evitare gli ostacoli, nei sensori di parcheggio, nel rilevamento del livello, nei bidoni della spazzatura intelligenti, nei misuratori di distanza e in altre applicazioni di rilevamento senza contatto.

Il modulo emette onde ultrasoniche a 40kHz attraverso un trasmettitore. Quando l'onda sonora incontra un oggetto, si riflette sul ricevitore. Misurando il tempo dell'eco e utilizzando la velocità del suono, Arduino può calcolare la distanza tra il sensore e l'oggetto.

Modulo sensore ad ultrasuoni HC-SR04 per la misurazione della distanza Arduino

Parametri tecnici principali HC-SR04

Parametro Valore
Tensione di lavoro tipica 5 V CC
Corrente di lavoro statica Meno di 5 mA su alcune versioni del modulo
Frequenza operativa Onda ultrasonica a 40kHz
Distanza di rilevamento Intervallo comune: da 2 cm a 400 cm; alcune versioni con guadagno regolato potrebbero supportare una portata più lunga.
Angolo di rilevamento Di solito entro 15 gradi; alcune versioni con guadagno maggiore possono raggiungere circa 30 gradi.
Precisione Fino a circa 0,3 cm in condizioni di prova adeguate
Zona cieca Distanza di misurazione minima di circa 2 cm

Descrizione pin HC-SR04

Il modulo a ultrasuoni HC-SR04 ha quattro pin: VCC, TRIG, ECHO e GND. Arduino invia un breve impulso di trigger al pin TRIG, quindi legge l'impulso di ritorno dal pin ECHO.

Perno HC-SR04 Connessione Arduino Funzione
VCC 5 V Alimentazione per il modulo ad ultrasuoni.
TRIG Perno digitale 9 Ingresso trigger. Arduino applica un impulso da 10us per iniziare a variare.
ECO Perno digitale 10 Uscita eco. Arduino legge la larghezza dell'impulso per calcolare la distanza.
GND GND Collegamento a terra.

Pinout del sensore a ultrasuoni HC-SR04 VCC TRIG ECHO GND

Principio di funzionamento del sensore a ultrasuoni HC-SR04

L'HC-SR04 funziona mediante la misurazione del tempo di volo. Arduino invia un segnale di trigger di alto livello di almeno 10 microsecondi al pin TRIG. Il modulo invia quindi automaticamente otto impulsi ultrasonici da 40kHz e attende l'eco riflesso.

Quando viene rilevato il segnale ultrasonico riflesso, il pin ECHO emette un impulso di alto livello. La durata di questo impulso è il tempo di viaggio di andata e ritorno dell'onda ultrasonica.

Distanza = Tempo dell'eco ad alto livello × Velocità del suono / 2

Nel codice Arduino, la formula semplificata comune è:

Distanza in cm = durata × 0,0343/2

Principio di funzionamento del tempo di volo del modulo ad ultrasuoni HC-SR04

Diagramma temporale del modulo a ultrasuoni HC-SR04

Il processo di temporizzazione è semplice: Arduino mantiene il TRIG basso per breve tempo, invia un impulso alto da 10us, quindi riporta il TRIG al livello basso. L'HC-SR04 invia un burst ultrasonico e imposta l'ECHO su un valore alto finché non ritorna il segnale riflesso o finché la misurazione non scade.

Per evitare letture instabili, lasciare un breve ritardo tra le misurazioni. Viene comunemente utilizzato un ciclo di misurazione di circa 60 ms in modo che l'eco ultrasonico precedente abbia il tempo di scomparire prima del trigger successivo.

Nozioni di base sulla programmazione di Arduino: funzione pulsaIn

La funzione Arduino pulsaIn() viene utilizzata per misurare per quanto tempo un pin digitale rimane ALTO o BASSO. Per HC-SR04, Arduino utilizza pulsaIn(echoPin, HIGH) per leggere l'ampiezza dell'impulso di alto livello dal pin ECHO.

Sintassi Senso
impulsoIn(pin, valore) Legge la durata di un impulso ALTO o BASSO.
pulsaIn(pin, valore, timeout) Legge l'impulso con un valore di timeout in microsecondi.

Si consiglia di utilizzare un timeout. Se non viene restituito alcun eco, la funzione può interrompere l'attesa e restituire 0 invece di bloccare il programma per troppo tempo.

Scheda Arduino utilizzata con il sensore di distanza a ultrasuoni HC-SR04

Come collegare il sensore a ultrasuoni HC-SR04 ad Arduino

Il cablaggio è semplice. Collega VCC a 5 V, GND a GND, TRIG a un pin di uscita digitale di Arduino ed ECHO a un pin di ingresso digitale di Arduino. L'esempio seguente utilizza Arduino Uno, TRIG sul pin 9 ed ECHO sul pin 10.

Schema elettrico della breadboard Arduino Uno per il sensore a ultrasuoni HC-SR04

Sensore ad ultrasuoni HC-SR04 Codice Arduino

Il seguente tipico programma Arduino invia un impulso di trigger da 10us, legge l'ampiezza dell'impulso ECHO, calcola la distanza in centimetri e stampa il risultato nel monitor seriale.

const int trigPin = 9; const int echoPin = 10; lunga durata; distanza galleggianteCm; void setup() { pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT);   Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW);   ritardoMicrosecondi(2);   digitalWrite(trigPin, ALTO);   ritardoMicrosecondi(10);   digitalWrite(trigPin, BASSO);   durata = impulsoIn(echoPin, ALTO, 30000);   if (durata == 0) { Serial.println('Fuori intervallo');   } else { distanzaCm = durata * 0,0343/2;     Serial.print('Distanza: ');     Serial.print(distanzaCm);     Serial.println(' cm');   } ritardo(60); }

Se vedi valori di distanza nel monitor seriale, il sensore a ultrasuoni HC-SR04 e il cablaggio Arduino funzionano correttamente. È quindi possibile utilizzare i dati sulla distanza per il rilevamento degli ostacoli, il controllo del movimento del robot, le porte automatiche, i promemoria di parcheggio o i progetti relativi al livello dei liquidi.

Programma di rilevamento del sensore a ultrasuoni Arduino HC-SR04

Come migliorare la precisione della misurazione HC-SR04

  • Mantenere l'oggetto misurato entro l'intervallo di distanza consigliato e al di fuori della zona cieca di 2 cm.

  • Utilizzare una superficie target piatta e solida per una migliore riflessione degli ultrasuoni.

  • Evitare di misurare materiali morbidi, angolati, porosi o fonoassorbenti.

  • Utilizzare un'alimentazione stabile da 5 V e mantenere il cablaggio corto e sicuro.

  • Aggiungi un timeout a pulsaIn() per evitare blocchi prolungati quando non ritorna alcuna eco.

  • Media o mediana: filtrare diverse letture per ridurre il rumore.

  • Per una maggiore precisione, compensare la temperatura poiché la velocità del suono cambia con la temperatura dell'aria.

Applicazioni comuni dei progetti di sensori a ultrasuoni Arduino

Applicazione Come viene utilizzato HC-SR04
Robot per evitare gli ostacoli Rileva gli oggetti vicini e aiuta il robot a cambiare direzione.
Sensore di parcheggio Misura la distanza tra il veicolo e un ostacolo.
Rilevamento del livello del liquido Misura la distanza dal sensore alla superficie del liquido senza contatto.
Cestino intelligente Rileva una mano o un oggetto nelle vicinanze e attiva l'apertura automatica del coperchio.

Riepilogo

Per utilizzare un sensore a ultrasuoni HC-SR04 con Arduino, collega VCC a 5 V, GND a GND, TRIG a un pin di uscita digitale ed ECHO a un pin di ingresso digitale. Invia un impulso trigger da 10us, leggi la durata dell'eco con pulsaIn() e calcola la distanza con la formula del tempo di volo.

L'HC-SR04 è economico, facile da usare e adatto a molti progetti di misurazione della distanza Arduino. Per ottenere i migliori risultati, prestare attenzione alla superficie target, all'angolo di misurazione, alla zona cieca, alla potenza stabile, alla gestione del timeout e agli effetti della temperatura.

Domande frequenti sul sensore a ultrasuoni Arduino HC-SR04

Come funziona il sensore a ultrasuoni HC-SR04 con Arduino?

Arduino invia un impulso da 10us al pin TRIG. L'HC-SR04 emette otto impulsi ultrasonici da 40kHz e imposta il pin ECHO alto finché non ritorna il suono riflesso. Arduino misura questo tempo di impulso e calcola la distanza.

Qual è la formula della distanza per i progetti Arduino HC-SR04?

La formula è distanza = durata × velocità del suono / 2. In centimetri, una formula comune di Arduino è distanzaCm = durata × 0,0343 / 2, dove la durata è misurata in microsecondi.

Perché dividiamo il risultato del sensore a ultrasuoni per 2?

Il tempo di eco misurato è il tempo di andata e ritorno dal sensore all'oggetto e di nuovo al sensore. Dividendo per 2 si ottiene la distanza unidirezionale tra il sensore e l'oggetto.

Quali pin Arduino dovrei usare per TRIG ed ECHO?

Puoi utilizzare la maggior parte dei pin digitali Arduino. In molti esempi, TRIG è collegato al pin digitale 9 ed ECHO è collegato al pin digitale 10. Il codice deve corrispondere ai pin utilizzati nel cablaggio.

Perché il mio sensore a ultrasuoni HC-SR04 restituisce valori zero o casuali?

Le cause più comuni includono cablaggio allentato, alimentazione a 5 V instabile, numeri di pin TRIG o ECHO errati, nessun oggetto nel raggio d'azione, superfici target angolate, materiali morbidi, testine del sensore bloccate o assenza di timeout nella funzione pulsaIn().

Qual è la zona cieca del sensore a ultrasuoni HC-SR04?

La zona cieca è la distanza minima alla quale il modulo non può effettuare misurazioni attendibili. Per HC-SR04, la zona cieca è solitamente di circa 2 cm. Oggetti più vicini di questo potrebbero produrre letture instabili.

HC-SR04 può misurare il livello dell'acqua con Arduino?

Sì, HC-SR04 può essere utilizzato per semplici progetti di livello dell'acqua senza contatto se il sensore è protetto dall'umidità e montato sopra la superficie del liquido. Per serbatoi umidi, esterni o industriali, si consiglia un sensore a ultrasuoni impermeabile.

Come posso rendere più stabili le letture dei sensori a ultrasuoni Arduino?

Utilizzare un'alimentazione stabile, mantenere il sensore perpendicolare al bersaglio, evitare superfici morbide o angolate, aggiungere il timeout di impulsoIn, eseguire più letture, utilizzare il filtro mediano e attendere circa 60 ms tra le misurazioni.

Sommario