Como utilizar Sensor Ultrasónico SRF05 con Arduino

Este sensor ultrasónico, mostrado en la figura tiene 2 maneras para funcionar [7]:
• Modo 1 – Señal de activación y de eco en diferentes pines
En este modo se utilizan terminales independientes para la señal de activación y para la señal de retorno del eco. Para activar este modo se debe dejar la terminal de modo sin conexión .

Figura 2. 8: Modo de conexión 1

Figura 2. 8: Modo de conexión 1

El primer modo es el más fácil de utilizar viéndolo desde la óptica de la programación ya que se cuenta con terminales independientes para la entrada y para la salida, sin embargo si se ve desde el punto de vista de conexiones, implica que salgan dos cables y no uno solo desde el Arduino hacia el sensor SRF05.
Tiempos modo 1

• Modo 2 – Señal de activación y eco diferente

En este modo se utiliza un solo pin para las señales de activación y eco lo que nos permite reducir el número de terminales que deben utilizarse en el microcontrolador. Para utilizar este modo es necesario conectar la terminal de modo a la tierra del Arduino.
Modo de conexión 2

En este modo la señal de operación y la señal del eco se envían por la misma terminal, por lo tanto es necesario configurar el pin como emisor y receptor teniendo en cuenta el tiempo que se toma para enviar y recibir el pulso. Este pin en un principio debe ser declarado como emisor y solo puede ser cambiado a receptor hasta 700µS después de haber finalizado la señal de activación.

Para poder medir la distancia en el Arduino se utiliza una función llamada “Pulse In” la cual lee un pulso en estado HIGH o LOW sobre la terminal apropiada, y según la programación, espera a que el pin se ponga en estado lógico ‘1’ o ‘0’ es decir detecta un cambio de flanco positivo o negativo y cuando éste llega se inicia una cuenta que se parará en cuanto se detecte otro cambio, entonces la función entregará como resultado un valor en microsegundos. Esta instrucción funciona correctamente entre valores de 10µs a 3 minutos [8].

El funcionamiento básico de la instrucción “Pulse in” es el siguiente:
int pin = 7;
unsigned long duration;

void setup()
{
pinMode(pin, INPUT);
}

void loop()
{
duration = pulseIn(pin, HIGH);
}

A partir de esta función se puede calcular la distancia, para esto es necesario tener en cuenta que el eco que se recibe es un pulso por lo tanto su ancho es proporcional a la distancia con respecto al objeto, este sensor si no detecta nada en 30µs su nivel cambia a estado bajo. Para calcular la distancia en cm se debe tener en cuenta que la velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
El sonido llega hasta el objeto, rebota y regresa como eco por lo que se toma el tiempo en milisegundos y se divide entre 29 para obtener la distancia y después dividimos entre dos porque solo queremos la distancia que a el pulso le tomo regresar o en llegar, no las 2 [9].

Para calcular la distancia en pulgadas es necesario seguir un proceso similar, pero es necesario revisar las hojas de datos, estas nos proporcionan dos datos importantes: el sonido viaja a 1130 pies por segundo y se recorren 73.746 microsegundos por pulgada, por lo tanto para obtener una distancia en pulgadas es necesario dividir la señal que nos da entre 74 para obtener la distancia total y finalmente dividir entre 2 para obtener la distancia del sensor al objeto .

En el código del programa solo es necesario aplicar las siguientes fórmulas para obtener las distancias en centímetros y en pulgadas.

long msPulgadas(long microsegundos)
{
return microsegundos / 74 / 2;
}

long msCentimetros(long microsegundos)
{

return microsegundos / 29 / 2;
}

El resultado de estas mediciones se nos da por medio del puerto serial por lo que solo es necesario activar la función de monitoreo serial en la interfaz del programa del Arduino.

-
-
-
-
-
-

Código completo utilizado para el control del sensor ultrasónico SRF05

int ultrasonico = 7;

void setup()
{
Serial.begin(19200);
}

void loop()
{
long duracion, pulgadas, cm; // se utilizan datos long debido a la respuesta del ultrasonido

//Se manda un pulso bajo de 5 microsegundos para asegurar que siempre se inicie en bajo
//después se manda un pulso alto de 15 microsegundos que sirve para iniciar las mediciones

pinMode(ultrasonico, OUTPUT);
digitalWrite(ultrasonico, LOW);
delayMicroseconds(5);
digitalWrite(ultrasonico, HIGH);
delayMicroseconds(15);
digitalWrite(ultrasonico, LOW);

//Se utiliza el mismo pin para recibir el eco así que lo cambiamos de salida a entrada
//y utilizamos la variable duracion para recibir el valor que nos da el ultrasonico

pinMode(ultrasonico, INPUT);
duracion = pulseIn(ultrasonico, HIGH);

// convertimos el tiempo que nos da el pulse in en distancia

pulgadas = msPulgadas(duracion);
cm = msCentimetros(duracion);

Serial.print(pulgadas);
Serial.print(“in, “);
Serial.print(cm);
Serial.print(“cm”);
Serial.println();

delay(100);
}

long msPulgadas(long microsegundos)
{
//De acuerdo a las hojas de datos se recorren 73.746 microsegundos por pulgada
//El sonido viaja a 1130 pies por segundo, así que para obtener una distancia en
//pulgadas solo es necesario dividir la señal que nos da entre 74 para obtener la
//distancia total y finalmente dividir entre 2 para obtener la distancia del sensor
//al objeto
return microsegundos / 74 / 2;
}

long msCentimetros(long microsegundos)
{
//la velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
//El sonido llega hasta el objeto, rebota y regresa como eco por lo que
//solo es necesario tomar la distancia así que primero dividimos entre 29
//y posteriormente entre 2

return microsegundos / 29 / 2;
}

-
-
-
-
-

Bibliografía
[7] Súper Robótica, INTPLUS. http://www.superrobotica.com/S320111.htm.
[8] Arduino. http://www.arduino.cc/en/Reference/PulseIn.
[9] Arduino. http://arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor.

Arduino Quadcopter Componentes Utilizados

Este proyecto realiza 3 acciones principales sobre este vehículo, las cuales son:
• Control de sensores
• Control de motores
• Sistema de procesamiento de información

La parte de los sensores comprende de un medidor ultrasónico SRF05 que permite determinar distancia; se tiene también un acelerómetro el cual se obtuvo de un control Nunchuk de Wii el cual nos permite saber su inclinación de cada uno de los ejes.
Los actuadores son básicamente 4 motores de corriente directa que hacen girar unas hélices de paso invertido para poder levantar el vehículo del suelo.
Finalmente el sistema de procesamiento de información es un Arduino (microcontrolador) que nos permite manejar los datos obtenidos de los componentes anteriores y generar una acción de control proporcional simple realizado en base a la experimentación.

Componentes Utilizados

Microcontrolador
Arduino Duemilanove
Programado en versión Arduino 0013

Sensores
Ultrasónico SRF05: Capaz de medir 4 metros de distancia
Acelerómetro: Desmontado del control Nunchuk de Wii
Sensor Ultrasonico

Motores
Motores Sin Cepillado (Brushless) marca “HIMAX” modelo “HC2812-0650”
Potencia: 150 W
I del ESC: 10 A
Peso: 64 gr
Diámetro: 28 mm
Largo: 40 mm

Motores sin cepillado

Controles Electrónicos de Velocidad (Electronic Speed Controller)
Modelo: “Phoenix 25” de la marca “Castle Creations”
Voltaje 12.6 a 19.2 V
Corriente: 25 A
Conmutación: 11 000 Hz
Peso: 17 gr
dimensiones: 3.5 x 2 x .4 cm

Algunas Páginas que consulte que te pueden ser interesantes
[2] SRF05 – Ultra-Sonic Ranger, Technical Specification.

http://courses.cit.cornell.edu/ee476/FinalProjects/s2008/cl457_yft2/cl457_yft2/datasheets/SRF05.pdf.

[3] Wiimote/Extension Controllers/Nunchuk.

http://www.wiili.org/index.php/Wiimote/Extension_Controllers/Nunchuk.

[4] Arduino. http://www.arduino.cc/.
[5] Dragan Fly, Innovations Inc. http://www.rctoys.com/.
[7] Súper Robótica, INTPLUS. http://www.superrobotica.com/S320111.htm.
[8] Arduino. http://www.arduino.cc/en/Reference/PulseIn
[9] Arduino. http://arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor.
[10] Dimension Engineering, Robots Radio Control Power Electronics.

http://www.dimensionengineering.com/accelerometers.htm

[14] Castle Creations, Phoenix-25 Brushless Motor Control.

http://www.castlecreations.com/products/phoenix-25.html.

[17] gestaltung fh-wuerzburg

http://gestaltung.fh-wuerzburg.de/blogs/exint_ws06/?p=505.

[19] Arduino. http://www.arduino.cc/en/Reference/DigitalWrite.
[20] Arduino. http://www.arduino.cc/en/Reference/AnalogWrite.

Arduino + Ultrasonico SRF05 + Nunchuck + Brushless motors = QuadCopter

Como utilizar Sensor Ultrasónico SRF05 con Arduino

http://jsadalid.wordpress.com/2009/08/15/como-utilizar-sensor-ultrasonico-srf05-con-arduino/


Arduino Quadcopter Componentes Utilizados

http://jsadalid.wordpress.com/2009/08/15/arduino-quadcopter-componentes-utilizados/

La idea de este proyecto surgió gracias a un amigo de la escuela el cual me enseño el video de un dispositivo de vuelo similar a un helicóptero pero con 4 motores y 4 hélices  fabricado en Alemania para realizar monitoreo aéreo.  Las ganas de realizar algo similar no faltaban, pero parecía un proyecto muy distante ya que no soy un profesional en el área de programación  y mucho menos en el área de los dispositivos aéreos.

Despues de mucho pensar me decidí a realizar este proyecto con los siguientes componentes: Un Arduino: Por ser una gran herramienta de programación, además de ser de fácil uso, un acelerómetro el cual fue tomado de un control Nunchuk de wii (sugerido por Mau, el editor de Make en Español), un Sensor Ultrasonico SRF05, 4 motores sin cepillado especiales para este tipo de aplicaciones y 4 helices de paso invertido.

El camino fue largo porque no había trabajado con ninguno de estos dispositivos anteriormente, pero después de varias horas de programación y de andar jugando con los dispositivos fue que finalmente logre hacer funcionar todos los dispositivos de manera correcta para que este vehículo lograra hacer su primer vuelo.

Hacer lograr volar este vehiculo no es nada sencillo ya que son muchas variables las que intervienen en su funcionamiento, el aire, el peso, la distribución de los componentes, las hélices y su giro, el sistema de control, etc. Así que para realizar las pruebas y tener una mayor seguridad construí unas guías de acero inoxidable que restringían el vuelo del vehículo a una cierta posición y una vez que estuve seguro de que este tendría un buen desempeño sin ellas me decidi a probarlo, pero sucedió algo que no tenía pensado, lo cual se puede ver en el siguiente video.

Este vehículo aun no está terminado, pero creo que desde que esta idea surgió hasta este momento se ha realizado un gran avance, ya que cuando buscaba en internet trabajos relacionados no había mucha información y muchos menos que fuera proporcionada por personas de México.  Este proyecto me hace sentir feliz ya que nunca antes había realizado algo parecido y pues ahora puedo compartir los códigos usados por si alguien tiene interés en ellos, ya que son componentes interesantes y que pueden ser utilizados en una infinidad de cosas. Y solo me basta agradecer a los amigos que me ayudaron en mucho, Luis Suarez, Mauricio Gomez, Francisco Castañeda y a todos mis amigos de la escuela que estuvieron ahí.

Las pruebas realizadas con el dispositivo reflejaron que se pudo levantar un peso de 1.2 Kg a una distancia aproximada de 1.80 metros


Seguir

Get every new post delivered to your Inbox.