Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 5 visitas.| 3431950 Visitas (desde Dic. 2011), hoy: 476 Visitas 1108 Pag. Vistas , ultimos 36 dias: 14558 Visitas. 35326 Pag. Vistas. Tu IP: 3.236.83.14
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

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

Escribe un comentario

Tu comentario