Programació d'automatismes i robots amb Arduino, Processing i Android
12.- Sensor d'eco-ultrasònic
1.- Esquema elèctric.
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.
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 } |
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0