Sensor de ultrasonidos con Arduino
Los sensores de ultrasonidos sirven, entre otras cosas, para detectar la distancia a la que se encuentran o pasan otros objetos. Su funciomaniento está basado en el sistema que emplean los murciélagos para no chocar contra ningún objeto cuando vuelan en la oscuridad. Los murciélagos emiten ultrasonidos. Dichos ultrasonidos rebotan contra los objetos que tienen delante y vuelven hacia el murciélago que los eschucha con sus sensibles oidos. En función del tiempo que tarda el sonido en rebotar y volver se calcula a la distancia a la que se encuentra dicho objeto.
El sensor de distancia por ultrasonidos PING de Parallax es capaz de detectar objetos hasta a 3 metros de distancia. El sensor cuenta con tres PINES, dos para la alimentación, y un tercero que se usa como entrada y salida digital.
El PIN dedicado a realizar las mediciones tiene que ser reconfigurado de entrada a salida de acuerdo a la hoja de especificaciones del sensor PING. En primer lugar tenemos enviar un pulso al PIN del sensor que hará que este emita un tono de ultrasonido y quedaremos a la espera del eco del mismo. Una vez que el tono es recibido de nuevo en el sensor, este envía un pulso a través del mismo PIN. La amplitud del pulso determinará la distancia al objeto.
El ejemplo que se muestra a continuación fué montado por Marcus Hannerstig, mientras que el código ha sido desarrollado por David Cuartielles. La placa está conectada como se explica, usando tan sólo los cables de un viejo PC.
Detalle del conexionado del sensor de distancia por ultrasonidos PING de Parallax
Código fuente /* Sensor de Ultrasonidos *------------------------ * * Lee valores (00014-01199) de un sensor de ultrasonidos (hasta 3 metros) * y escribe los valores en el puerto serie. * * http://www.xlab.se | http://www.0j0.org * copyleft 2005 Mackie for XLAB | DojoDave for DojoCorp * */ int ultraSoundSignal = 7; // PIN de señal de ultrasonidos int val = 0; // Variable auxiliar int ultrasoundValue = 0; // Valor del senros de ultrasonidos int timecount = 0; // Contador del eco int ledPin = 13; // LED conectado al PIN 13 void setup() { beginSerial(9600); // Configura la velocidad al puerto seria 9600 baudios pinMode(ledPin, OUTPUT); // Configura el PIN del LED como salida digital. } void loop() { timecount = 0; val = 0; pinMode(ultraSoundSignal, OUTPUT); // Conmuta el PIN de la señal a salida digital /* Envía un pulso bajo-alto-bajo para lanzar el pulso de activación del sensor * ---------------------------------------------------------------------------- */ digitalWrite(ultraSoundSignal, LOW); // Envía un pulso bajo delayMicroseconds(2); // Espera dos microsegundos digitalWrite(ultraSoundSignal, HIGH);// Envía un pulso alto delayMicroseconds(5); // Espera 5 segundos digitalWrite(ultraSoundSignal, LOW); // Se queda en espera /* En espera, escuchando el pulso de eco * -------------------------------------- */ pinMode(ultraSoundSignal, INPUT); // Conmuta el PIN de la señal a entrada digital val = digitalRead(ultraSoundSignal); // Recoge el valor del PIN de señal while(val == LOW) { // Espera a que el PIN de señal sea alto val = digitalRead(ultraSoundSignal); } while(val == HIGH) { // Espera a que el PIN de señal sea bajo val = digitalRead(ultraSoundSignal); timecount = timecount +1; // Cuenta el tiempo que dura el pulso alto (amplitud) } /* Escribe los valores resuktantes en el puerto serie * --------------------------------------------------- */ ultrasoundValue = timecount; // El contador es el valor obtenido por el sensor serialWrite('A'); // Escribe en el puerto serie el valor obtenido printInteger(ultrasoundValue); serialWrite(10); serialWrite(13); /* Enciende el LED si se ha recibido un pulso de eco * -------------------------------------------------- */ if(timecount > 0){ digitalWrite(ledPin, HIGH); } /* Delay del programa * ------------------- */ delay(100); }
Fuente: http://arduino.cc/es_old/Tutoriales/SensorUltrasonidos
|
![]() | 15 mayo 2011 en Electronica | tags: Arduino, Electronica |