home - tutorial - TUTORIAL - SENSORE AD ULTRASUONI HC-SR04

TUTORIAL - SENSORE AD ULTRASUONI HC-SR04

Se nei viventi sono le cellule sensoriali a convertire gli stimoli percepiti in potenziali d’azione, per un sistema elettrico gli organi attraverso i quali ricavare informazioni dall’ambiente sono i sensori.

Il sensore ad ultrasuoni HC-SR04 è uno...

  by Gianni Monti
Arduino

Cosa sono gli ultrasuoni

Gli ultrasuoni sono onde sonore con frequenze superiori a quelle udibili dall’orecchio umano: stiamo quindi parlando di frequenze che superano i 20 kHz e che trovano impiego per lo più in campo medico ed industriale.

Animali come i cani, i delfini o i pipistrelli riescono a udire, a comunicare o addirittura a “vedere” grazie agli ultrasuoni e le attività didattiche legate al loro impiego possono aiutare gli studenti a conoscere meglio questi animali attraverso un approccio multidisciplinare che affianca ed integra la fisica alla biologia. 

Sensore a ultrasuoni HC-SR04

Gli ultrasuoni sono onde meccaniche e risentono della variabilità del mezzo in cui si propagano.

In questo tutorial l’obiettivo è quello di capire come poter utilizzare un sensore ad ultrasuoni come misuratore di distanze, in attività didattiche dove non sia richiesta un’elevata “qualità della misura”.
Lasciamo quindi a successivi sviluppi la ricerca di misure precise ed accurate, per le quali dovremmo considerare la velocità istantanea del suono che è influenzata, principalmente, dalla temperatura e dall’umidità relativa del mezzo.

Per quanto premesso possiamo assumere come costante il valore della velocità del suono in un determinato mezzo, in particolare l’aria, dove le onde sonore viaggiano a 343,8 m/s a 20°C.

Anche gli ultrasuoni, come tutte le onde, sono soggetti a fenomeni di riflessione. Questa caratteristica ci permette di utilizzare il sensore per rilevare misure di distanza tra la sorgente emettitrice del segnale sonoro e l’oggetto colpito.

Il nostro HC-SR04 presenta 4 pin:

  • Vcc - viene collegato alla tensione di alimentazione di 5V.
  • Trig - è il pin “Trigger” che deve essere attivato per inviare il segnale ad ultrasuoni.
  • Echo - è il pin che produce un impulso che si interrompe quando viene ricevuto il segnale riflesso dall’oggetto.
  • GND - viene collegato al potenziale di riferimento, la messa a terra.

 

Cerchiamo di capire in dettaglio il suo funzionamento:

  1. Un impulso a 5 volt di almeno 10 μS (microsecondi) di durata viene applicato al pin Trigger.
  2. Si genera un treno di 8 impulsi ultrasonici a 40 KHz che si allontanano dal sensore viaggiando nell’aria circostante. Si ottengono misure più accurate se l’ostacolo si trova di fronte al sensore o in un ipotetico settore circolare di 30° d’ampiezza (15° da ambo i lati rispetto alla direzione frontale).
  3. Il segnale sull’Echo intanto diventa alto ed inizia la registrazione del tempo di ritorno in attesa dell’onda riflessa.
  4. Se l’impulso non viene riflesso il segnale su Echo torna basso dopo 38 ms (millisecondi) e va interpretato come assenza di ostacolo. Ricordiamo l’HC-SR04 è in grado di misurare distanze comprese tra i 2 e i 400 cm corrispondenti, per il limite massimo, a circa 23 ms di durata del segnale su Echo.

 

5.   Se invece il treno di onde ultrasoniche viene riflesso all'indietro da un oggetto, il segnale sul pin Echo diventa basso e contestualmente termina il rilievo della sua durata. 

6.   Il tempo ottenuto servirà per calcolare la distanza dell’oggetto: bisogna però tenere presente che l’onda ha percorso per due volte quella distanza, quando emessa verso l’oggetto e dopo la riflessione verso il sensore. Bisognerà quindi dividere per due la distanza calcolata con questo tempo.

Esempi di utilizzo del sensore HC-SR04

Di seguito presentiamo alcuni esempi di base per sperimentare il funzionamento del sensore a partire dagli ultimi anni della scuola primaria.

È infatti possibile testare le potenzialità dell’HC-SR04 semplicemente seguendo lo schema dei collegamenti qui di seguito riportato e programmare la scheda Arduino con il software gratuito Visualino.

 

Programmazione visuale a blocchi del sensore

Oltre a permetterci una programmazione visuale a blocchi che richiama e dà continuità di lavoro a chi ha già utilizzato i vari Scratch, Snap, mBlock etc., il software Visualino presenta una sezione “Zum bloqs” con dei blocchi a cui sono state associate di default delle funzioni.

Nel nostro caso sceglieremo di settare il blocco “BAT - ultrasonic sensor” al quale vanno semplicemente indicati ed inseriti i numeri dei pin della scheda Arduino ai quali abbiamo collegato Echo e Trig del sensore (nell’esempio rispettivamente i pin 12 e 13).

 

Il blocco in questione restituisce direttamente il valore della distanza misurata dal sensore seguendo le fasi già descritte sopra. Dovremo prevedere un “contenitore” nel quale inserire le distanze rilevate, ovvero una variabile “distanza” che andremo a dichiarare nella sezione setup.

 

Di fatto la programmazione del sensore è completata. Per visualizzare le misure registrate dalla variabile utilizziamo il monitor di Visualino, accessibile con il tasto a forma di lente d’ingrandimento che troviamo in alto a destra nel programma.

L'ambiente di lavoro Visualino

Mi sembra didatticamente molto interessante rilevare che Visualino presenta un ambiente di lavoro ibrido dove coesistono codici di programmazione visuali (al centro dello schermo) e testuali (sulla destra del layout). L’ibridazione può essere sfruttata dal docente per stimolare la transizione concettuale e operativa dalla programmazione visuale a quella testuale e rappresenta un valore aggiunto alla scelta di questo software.

Purtroppo il codice testuale non è modificabile direttamente da questa interfaccia, ma è comunque possibile esportare la programmazione nel formato per l’IDE di Arduino da dove poter effettuare le modifiche ritenute necessarie.


Per la prova del funzionamento del sensore occorre caricare il codice nel microcontrollore di Arduino. Dopo aver collegato la scheda al pc scegliamo la porta di collegamento (COM1, COM2, etc.) e clicchiamo sulla seconda icona sotto la barra dei menu di Visualino (freccia verde verso destra “Upload”).

Test di funzionamento

Se il caricamento andrà a buon fine, come segnalato dal box in basso nell’interfaccia del software, non ci resterà altro che testare il sensore, frapponendo degli oggetti davanti ad esso per poter visualizzare le distanze misurate (in cm) nel monitor di Visualino (c’è anche la possibilità di osservare i dati di lettura in un grafico a barre cliccando sul pulsante “Graph” sotto la barra dei menu in visualizzazione “Monitor”).


Lo stesso test di funzionamento può essere presentato anche ad una classe terza della scuola secondaria di primo grado o nei primi anni delle superiori. In questo caso  gli studenti saranno chiamati all’uso del codice testuale di programmazione per scrivere uno sketch in grado di ricavare le misure di distanza attraverso il sensore. Prima di mettere mano ai codici sarà importante verificare che gli studenti abbiano compreso i principi e le fasi di funzionamento del sensore.

Lasciando i collegamenti come mostrato nello schema riportato in precedenza, riportiamo qui di seguito lo sketch commentato:



La misura della distanza viene calcolata sulla base della durata dell’impulso su Echo attraverso la formula: distanza = 0.0343 * durata / 2

Come si ottiene questa relazione? Ricordiamo che la velocità del suono nell’aria è di circa 343 m/s e che la funzione pulseIn() introdotta nello sketch ci permette di ottenere la durata dell’impulso ALTO sul pin Echo in microsecondi.

È necessario dimezzare il valore ottenuto tra parentesi visto che l’onda ultrasonica percorre la distanza da determinare due volte, in trasmissione e come onda riflessa.


L’ultima istruzione dello sketch imposta un’attesa in millisecondi prima della misurazione successiva; il datasheet dell’HC-SR04 consiglia un’attesa di almeno 60 millisecondi.


È possibile visualizzare le misure ottenute tramite Processing (https://processing.org/) caricando il seguente codice:

Vuoi leggere il tutorial quando vuoi, anche offline?





Hai letto la lezione? Che cosa ne pensi? Lascia un commento qui sotto!

Clara Lucano

Bellissima lezione, molto chiara ed esauriente ( molto utili le informazioni iniziali sugli ultrasuoni ) . Mi piacerebbe inserirla nella mia programmazione, ma quanto tempo richiede, supponendo che gli studenti abbiano già le basi dei circuiti arduino? Giusto per avere un’idea. Complimenti ancora!