Sensore ad ultrasuoni PING ultimo aggiornamento 21 settembre 2018 |
|
Il sensore utilizzato è
prodotto dalla
SEEED e ha come codice
SEN136B5, il suo principio di
funzionamento è quello tipico di questa tipologia di
sensori radar.
La misura inizia inviando un breve impulso
ultrasonico, questo è riflesso dall'oggetto.
Il sensore riceve il segnale di ritorno e lo converte in un segnale
elettrico.
La misura della distanza dall'oggetto è proporzionale alla larghezza di impulso di eco e
può essere calcolato con la formula
Distanza in cm = Larghezza dell'impulso (μS)
/ 58
Distanza in pollici = Larghezza dell'impulso (μS) / 148
Se nessun ostacolo viene rilevato, il pin di uscita emetterà un segnale di livello alto di 38ms.
Per la prova, ho utilizzato una scheda Arduino UNO, collegata ad un modulo LCD, utilizzando un apposito programma
Caratteristiche
|
Per il collegamento sono necessari come minimo questi componenti:
Il trimmer POT1, regola
il contrasto, l'alimentazione della retroilluminazione potrà essere
eliminata se il display non la prevede. Pin della scheda Arduino utilizzati
|
Display LCD 16 x 2 con retroilluminazione Blu tipo LCM1602A-NSW-BBW | ||
Piedinatura | Datasheet display LCM1602A-NSW-BBW | Foto |
Foto del prototipo utilizzato per la prova
Per la prova è stato utilizzato un Arduino UNO su cui era montato un Proto Shield V.4 su cui è montato il connettore per i sensore, alla scheda è collegato il display LCD Keypad
Programma di prova sensore PING
Il programma legge il telemetro ad
ultrasuoni PING))) e restituisce la distanza dall'oggetto.
Per fare ciò, invia un impulso al sensore per iniziare una lettura, quindi
attende l'impulso di ritorno. La lunghezza dell'impulso di ritorno è
proporzionale alla distanza.
La lettura viene fornita su un display LCD,
per il suo utilizzo si utilizza la
libreria LiquidCrystal.
Nella prima parte del programma creiamo un'istanza dell'oggetto LiquidCrystal
che si chiama lcd e specifichiamo a quali linee digitali di Arduino sono
collegati i pin di controllo e i pin dati del display.
Il PING))) viene attivato da un impulso di 2 microsecondi. Viene quindi inviato
un breve impulso LOW in anticipo per garantire un impulso pulito HIGH:
Lo stesso pin viene utilizzato per leggere il segnale dal sensore.
Un impulso HIGH la cui durata è il tempo (in microsecondi) dall'invio del
ping alla ricezione dell'eco in ritorno dall'oggetto
La velocità del suono è circa 340 m/s o 29 microsecondi per centimetro.
Il segnale ping viaggia in andata e ritorno, per cui per ricavare la distanza
dell'oggetto prendiamo la metà della distanza percorsa.
// includiamo nel programma la libreria #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); const int pingPin = 11; //pin a cui è collegato il sensore void setup() { //imposto il numero di colonne ed il numero di righe di lcd //usando il metodo lcd lcd.begin(16, 2); // Scrive il messaggio sul display. lcd.setCursor(0, 0); lcd.print("Misuratore SONAR"); lcd.setCursor(0, 1); lcd.print("Distanza[cm]:"); } void loop() { // Variabili per stabilire la durata del ping, // il risultato della distanza in centimetri:: long duration, cm; pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // converte il tempo in distanza cm = microsecondsToCentimeters(duration); // Scrive sul display LCD il valore della distanza lcd.setCursor(13, 1); lcd.print(" "); lcd.setCursor(13, 1); lcd.print(cm); delay(100); } long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; } |
Elenco revisioni | |
21/09/2018 | Aggiornato pagina |
07/01/2013 | Inserito schema di collegamento, e aggiornato pagina |
25/04/2012 | Emissione preliminare |