Obiettivo: Utilizzare un Sensore a Ultrasuoni (HC-SR04) per misurare la distanza.
Componenti elettronici:
- Arduino UNO
- Breadboard
- 1 Sensore Ultrasuoni (e.g., HC-SR04)
Teoria: Il sensore di prossimità è un dispositivo che permette di rilevare la presenza di oggetti nelle immediate vicinanze, senza che vi sia un effettivo contatto.
Nel caso specifico, il sensore di prossimità ad ultrasuoni sfrutta il principe del Sonar. Degli impulsi sonori (ultrasonici) vengono emessi dal dispositivo il quale attraverso l’eventuale eco di ritorno permette di rilevare la presenza di un oggetto all’interno della portata nominale. Esempi pratici di sensori ad ultrasuoni sono i sensori di retromarcia e di parcheggio utilizzati nelle moderne automobili.
Nel dettaglio, le principali caratteristiche tecniche del sensore ad ultrasuoni HC-SR04 sono:
- Alimentazione: +5V DC
- Angolo di misura: < 30°
- Distanza di rilevamento: da 2cm a 400cm
- Risoluzione: 1cm
- Frequenza: 40kHz
Il sensore, dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND.
- VCC: +5V DC
- Trigger: Genera l’impulso ultrasonico
- Echo: Rileva il segnale ultrasonico di ritorno
- GND: 0V Ground
Pertanto considerando la formula che lega velocità, spazio e tempo:
s = v*t
e la velocità del suono pari a 343 m/s (che espressa in microsecondi diventa 0,0343 m/uS), si ottiene:
s = 0,0343*t
Considerando inoltre che il suono percorrerà due volte la distanza da misurare (dal sensore all’oggetto e dall’oggetto al sensore); il tempo t ottenuto deve essere diviso per due, ottenendo:
s = 0,0343*(t/2)
s = 0,01715*t
s = t/58,31
Per valutare la presenza di un oggetto è necessario rispettare il seguente “protocollo“:
- Il PIN Trigger deve essere dettato alto (HIGH value) per almeno 10microsecondi.
- In automatico il modulo HC-SR04 invierà 8 impulsi ultrasonici ad una frequenza pari a 40kHz.
- Il PIN Echo viene posto in ascolto. Calcolando il tempo di arrivo/ritorno dell’impulso ultrasonico.
Collegamento Circuitale:
Codice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* Lezione 2 Difficile: Il sensore ad Ultrasuoni Creato il 12 Mar 2019 da Andrea Primavera */ const int pinTrigger = 9; const int pinEcho = 10; void setup() { pinMode(pinTrigger, OUTPUT); pinMode(pinEcho, INPUT); Serial.begin(9600); Serial.print( "Sensore Ultrasuoni: "); } void loop() { // imposta l'uscita del trigger LOW digitalWrite(pinTrigger, LOW); // imposta l'uscita del trigger HIGH per 10 microsecondi digitalWrite(pinTrigger, HIGH); delayMicroseconds(10); digitalWrite(pinTrigger, LOW); // calcolo del tempo attraverso il pin di echo long durata = pulseIn(pinEcho, HIGH); long distanza = durata/58.31; Serial.print("distanza: "); // dopo 38ms è fuori dalla portata del sensore if( durata > 38000 ){ Serial.println("Fuori portata"); } else{ Serial.print(distanza); Serial.println(" cm"); } // Aspetta 1000 microsecondi prima di generare l'impulso successivo delay(1000); } |
Personalizzazioni: E’ possibile modificare il contrasto del display intervenendo sul potenziometro.
come faccio a vedere i dati espressi dal sensore?
Può utilizzare il monitor seriale.
perché sul monitor seriale mi da:
distanza:0.00cm??
Salve Samuele, che codice hai utilizzato? Quello da noi proposto? I collegamenti sono corretti?