Sensore di parcheggio ad ultrasuoni

sensore-di-parcheggio-ad-ultrasuoniI sensori di parcheggio all’interno delle auto segnalano al conducente quando il veicolo è troppo vicino ad un ostcolo, durante la manovra di parcheggio.

In questa pagina vedremo come costruire una semplice versione con un sensore ad ultrasuoni HC-SR04, un Attiny85, tre led, tre resistenze da 1k 1/6W, una batteria Lipo da 3,6V, e una breadboard, il tutto si può trovare su Aliexpress o Ebay per qualche Euro.

sensore-di-parcheggio-ad-ultrasuoni2Il sensore ad ultrasuoni funziona più o meno in questo modo, un trasduttore invia un’onda sonora, che va avanti fino a incontrare un’ostacolo, a questo punto l’onda torna indietro fino al sensore e il tempo trascorso tra andata e ritorno è proporzionale alla distanza misurata.sensore-di-parcheggio-ad-ultrasuoni1Per inviare l’impulso e per leggere il ritorno dell’onda useremo il microcontrollore Attiny85, con il seguente codice:

int ledv=0;
int ledg=1;
int ledr=2;
int trigger=3;
int echo=4;
long tempo;
long distanza; 

void setup()
{ 
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(ledr,OUTPUT);
pinMode(ledg,OUTPUT);
pinMode(ledv,OUTPUT);
}

void loop()
{
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW); 
tempo=pulseIn(echo,HIGH);
distanza=0.0343*tempo/2;
if(distanza>=15)
 {
 digitalWrite(ledv,HIGH);
 digitalWrite(ledg,LOW);
 digitalWrite(ledr,LOW); 
 }
 if(distanza<15&&distanza>=7) 
 {
 digitalWrite(ledv,LOW);
 digitalWrite(ledg,HIGH);
 digitalWrite(ledr,LOW); 
 }
 if(distanza<7)
 {
 digitalWrite(ledv,LOW);
 digitalWrite(ledg,LOW);
 digitalWrite(ledr,HIGH); 
 }
}

Nel codice abbiamo delle variabili che contengono i pin dei led verde, giallo, rosso, dei trigger e di echo, tempo e distanza invece sono due variabili per memorizzare il tempo e la distanza da misurare.

Il pin D3 trigger sarà una uscita del microcontrollore in quanto invierà un segnale alto al pin trigger del sensore, il pin D4 echo è un ingresso del microcontrollore in quanto dovrà leggere la tensione in uscita dal pin echo del sensore, i led saranno delle uscite.

Vediamo il funzionamento, per prima cosa si manda un segnale alto al pin trigger per 10µS, poi lo si manda basso, a questo punto si usa la funzione pulseIn(), nel nostro caso pulseln(echo,HIGH), questa funzione aspetta che il segnale restituito dal sensore (pin echo) vada alto e da quel momento inizierà a contare finchè lo stesso non cambierà di stato, in questo caso, appena tornerà basso restituirà un valore di qualche microsecondo che verrà memorizzato nella variabile tempo.

A questo punto la distanza si può calcolare come 343m/s che è la velocità del suono per il tempo misurato diviso 2 in quanto nel tempo è compresa l’andata e il ritorno dell’onda, mentre a noi interessa solo l’andata, inoltre possiamo dividere tutto per 100 per avere i centimetri.

Infine è possibile scegliere delle soglie a piacere nelle quali far accendere uno o più led per indicare la distanza, in questo caso sotto i 7cm si accenderà il led rosso, tra i 7 e i 15 quello giallo, oltre i 15 quello verde.

Il consumo totale è di circa 6mA, circa 3,3mA tra led e microcontrollore, quindi circa 2,5mA solo il sensore.

sensore-di-parcheggio-ad-ultrasuoni3 sensore-di-parcheggio-ad-ultrasuoni4

Il limite del sensore è di circa 3m, volendo al posto dei led è possibile attivare un cicalino.

Questo circuito può tornare utile anche per misurare per esempio serbatoi d’acqua, in modo da eliminare il contatto fisico con sonde o altri strumenti, oppure ai non vedenti per “ascoltare” gli ostacoli, oppure ancora come frenata automatica in un veicolo, insomma ci sono diverse potenziali applicazioni, usatelo come meglio preferite, un saluto e alla prossima.

2 commenti su “Sensore di parcheggio ad ultrasuoni

  1. Its like you read my mind! You seem to know a lot approximately this,
    like you wrote the guide in it or something. I think that you simply can do with
    some percent to power the message home a little bit, however other
    than that, that is fantastic blog. A great read.
    I will definitely be back.