Omet navegació

12.- Sensor d'eco-ultrasònic

1.- Esquema elèctric.


Esquema Arduino Eco Radar

2.- Funcionament.

El sensor per mesurar distàncies que anem a utilitzar es el emissor receptor de so de Parallax que emet polsos de 5 microsegons precedits d'un silenci de 2 microsegons i després escolta el so de retorn (eco) i compta el temps que tarda el so en anar i tornar.

Pols sonor eco ultrasons

3.- Programa.

 

			//Copyleft(2011)= Michael Margolis
			//Modificat: C.Ferrando
			// Ping))) Sensor que escolta l'eco dels ultrasons
			// mesura la distància 
			//
			const int pingPin = 10;
			void setup()
			{
			Serial.begin(9600); //definisc el monitor sèrie
			}
			void loop()
			{
			int cm = ping(pingPin) ;
			Serial.print("Distancia en cm="); //Imprimesc el rètol
			Serial.println(cm); //Imprimesc la distància
			delay(cm * 10 ); // cada centímetre afegeix 10 milisegons de retard per mostrar més temps el missatge
			}
			//
			// funció que calcula la distància en cm escoltant el eco del so emés
			// basat en el codi de http://www.arduino.cc/en/Tutorial/Ping
			int ping(int pingPin) // funció que retorna la distancia en cm
			{
			// establiment de les variables de la duració del pols de so
			// i la distància calculada en centimetres
			long duracio, cm;
			// El eco PING))) és generat per un pols apagat de 2 o més microsegons.
			// seguit dun pols engegat (així el pols és net) de 5 microsegons:
			pinMode(pingPin, OUTPUT); //definim el sensor d'eixida
			digitalWrite(pingPin, LOW); //fem un pols apagat de 2 microsegons
			delayMicroseconds(2);
			digitalWrite(pingPin, HIGH); //fem un pols engegat de 5 microsegons
			delayMicroseconds(5);
			digitalWrite(pingPin, LOW); //apaguen el pols 
			pinMode(pingPin, INPUT); //definim el sensor d'entrada
			duracio = pulseIn(pingPin, HIGH); //escoltem el sensor per oir l'eco
			cm = microsegonsAcentimetres(duracio); //cridem la funció que convertirà el temps en centímetres
			return cm ; //retorna la distància en cm al programa principal
			}
			//
			//funció per convertir el temps de microsegons en centímetres
			long microsegonsAcentimetres(long microsegons)
			{
			// La velocitat del so és de 340 m/s o de 20 microsegons per centímetre.
			// El so s'emet i retorna en forma de eco , per això la distància a l'objecte
			// és la meitat del temps total d'anada i tornada.
			return microsegons / 29 / 2; // retorna el valor de la distància en microsegons
			}