L7 - SENSORE A ULTRASUONI

HC-SR04

Iniziamo a parlare di sensori. Una delle definizioni di sensori che mi piace usare è "un dispositivo in grado di misurare una grandezza fisica non elettrica (temperatura, luce, forza etc.) convertendola in una grandezza di tipo elettrico (tensione, corrente, resistenza etc.)".

Nella robotica il sensore è fondamentale per raccogliere dati dall'esterno in maniera autonoma e che dà il via, a seconda della programmazione, ad azioni degli attuatori.

Ovviamente non è oggetto di questa trattazione l'aspetto elettronico ed elettrotecnico della questione. Come si trasforma una misura in un segnale elettrico e come si ritrasforma un segnale elettrico in una grandezza fisica, esula da quanto ho intenzione di trasferire. Ci limiteremo all'analisi di come utilizzarlo al meglio, senza trascurare principi di funzionamento degli stessi.

Veniamo alla misura della distanza. Utilizzeremo, in questa sezione, un sensore ad ultrasuoni, in genere indicato come HC-SR04, che possiamo vedere nella figura che segue.

Se ci fosse qualcuno interessato all'aspetto maggiormente tecnico, può andare a leggere il DATA SHEET direttamente al link indicato di seguito (http://elecfreaks.com/store/download/HC-SR04.pdf).

In ogni caso le caratteristiche che ci interessano sono riassunte in figura

Il sensore va alimentato a 5V collegato al PIN indicato come Vcc (il PIN GND va portato a terra sulla scheda Arduino).

L'intensità di corrente che lo attraversa è di 15 mA con una frequenza di ultrasuoni di 40 kHz.

I risultati sono affidabili tra una distanza minima di 2 cm ed una massima di 4 m.

Importante sapere che il sensore dà il meglio nel suo funzionamento in un angolo di 30° davanti a sè (motivo per cui in un robot evita ostacoli si preferisce montare il sensore su un servomotore per una rotazione).

Passiamo la funzionamento. Gli altri due PIN del sensore (TRIG e ECHO) servono ad inviare il segnare ed a ricevere la risposta dopo aver rimbalzato su un ostacolo.

Interessante il funzionamento. Arduino setta a 1 il Pin Trigger, il sensore invia 8 impulsi ad ultrasuoni. Quando questi poi sono ricevuti, il sensore setta a 1 il pin Echo, viene quindi misurato il tempo che passa tra l’attivazione del pin Trigger ed il settaggio del pin Echo. Infine, nota la velocità del suono, converte il tempo misurato in una lunghezza e ricava quindi la distanza dell’ostacolo. Il tutto dura 38 millisecondi prima che dopo 50/60 millisecondi si ripeta la misurazione (un piccolo ritardo utile ad evitare interferenze tra le misurazioni).

Vediamo come avviene la conversione, un piccolo calcolo matematico utile anche in ottica STEM (Science, Technology, Engineering and Mathematics).

Per convertire l’intervallo di tempo misurato in una lunghezza, bisogna ricordare che la velocità del suono è di 331,5 m/s a 0 °C e di 343,4 m/s a 20 °C ed in generale varia secondo la relazione v = 331,4 + 0,62 T dove la temperatura T è misurata in °C.

Per la realizzazione del nostro metro elettronico assumiamo di lavorare ad una temperatura ambiente di 20 °C e quindi la velocità del suono sarà di 343 m/s (approssimiamo) che vuol dire anche 0,0343 cm/microsecondi.

Quindi, ricordando che v=s/t (v: velocità, s: spazio, t: tempo) allora lo spazio percorso sarà:

s = v*t

da cui

s = 0,0343 *t

però, per calcolare lo spazio percorso, bisogna tener conto che il suono percorre due volte la distanza da misurare (giunge sull’oggetto e ritorna indietro al sensore) quindi il valore di t ottenuto deve essere diviso per 2. La formula corretta per la misura dello spazio percorso è:

s = 0,0343 * t/2

eseguendo la divisione di 0,0343/2 possiamo scrivere:

s = 0,01715 * t

oppure:

s = t/58,31

approssimando

s = t/58

formula più semplice da ricordare.

Beh tranquilli, tutto questo è solo per discutere e raccontare, non toccherà a nessuno fare tutti questi calcoli. Vediamo come collegare il sensore.

Come al solito partiremo da Fritzing, per passare alla simulazione con TinkerCAD e per finire con la programmazione in Mblock.

Il sensore ha 4 PIN, Vcc per l'alimentazione (5V), TRIG e ECHO per registrare i segnali di uscita e ritorno da collegare ai PIN DIGITALI della scheda, e GND che rappresenta, come abbiamo già imparato, il ritorno della corrente per chiudere il circuito. La figura chiarisce meglio le idee.

Inseriamo la simulazione su TinkerCAD. Per la simulazione abbiamo creato una variabile distanza e la abbiamo inizializzata al valore del sensore ad ultrasuoni collegato ai PIN 7 (TRIGGER) e 8 (ECHO).

Quando questa distanza è minore di 15 cm si accende un LED spia.

Non resta che il codice in Mblock. Immagineremo la stessa situazione e gli stessi collegamento ai PIN. In questo caso inseriamo tutto il codice in un ciclo PER SEMPRE, necessario per permettere una misurazione in continuo e non una tantum.

Come nella lezione precedente rilancio con un esercizio.

Proviamo ad unire il semaforo con il sensore ad ultrasuoni. Riuscite a creare e programmare un sensore di parcheggio tale che quando la distanza è compresa tra 15 e 20 cm faccia lampeggiare un led verde, che quando la distanza è compresa tra 10 e 15 cm faccia lampeggiare un led giallo e quando è inferiore a 10 cm faccia lampeggiare un led rosso?

Buon divertimento.

Come nella lezione precedente rilancio con un esercizio.

Proviamo ad unire il semaforo con il sensore ad ultrasuoni. Riuscite a creare e programmare un sensore di parcheggio tale che quando la distanza è compresa tra 15 e 20 cm faccia lampeggiare un led verde, che quando la distanza è compresa tra 10 e 15 cm faccia lampeggiare un led giallo e quando è inferiore a 10 cm faccia lampeggiare un led rosso?

Buon divertimento.