Páginas

martes, 21 de agosto de 2012

El sensor ultrasónico HC-SR04, compatible con PICAXE

Debido a la bajada de precio, en parte a la oferta existente, los sensores ultrasónicos se han convertido en la mejor opción a la hora de configurar nuestro robot.

Las ventajas que obtenemos frente a los infrarrojos Sharp analógicos son:
- Mejor precio. En estos momentos Un ahorro de 3 a 8 euros por unidad.
- Linealidad, obtenemos un valor proporcionalmente exacto a la distancia. Con dos operaciones aritméticas calculamos el valor exacto en cm o pulgadas.
- Rango largo de medida, desde 2 o 3 cm hasta varios metros.
- Inmunidad al color de la superficie que están sensando.

Existe gran variedad de módulos ultrasónicos, se pueden clasificar atendiendo al número de elementos, el método de comunicación, conexión hardware, etc. 

Una de las mejores opciones que tenemos es el sensor HC-SR04, a la izquierda, que podemos obtener en España entre unos 7 a 9 euros IVA incluido. Haciendo una comparativa con otros modelos análogos la medida de distancias es idéntica y el precio inmejorable.

El HC-SR04 se alimenta a 5V, mide distancias entre 2 cm y más de cuatro metros, consume 15 mA en funcionamiento y unos 2,5 mA en reposo y abarca 15 grados de ángulo de apertura.

El HC-SR04 debe recibir del microcontrolador un impulso positivo de al menos 10 useg de anchura por la entrada 'Trigger', y devuelve un impulso al micro de ancho variable en función de la distancia por la salida 'Echo'. Este ancho de impulso en useg dividido entre 58 da el valor de la distancia en cm al obstáculo.

Para probar este sensor con Picaxe:
---------------------------------------------------------------------------------------------
'Prueba de la compatibilidad de un Picaxe 08M y 08M2 con medidor ultrasonico HC-SR04
'Agosto de 2012. JCO-Robotics

symbol dispa = c.2 'Pin de salida para el disparo (evitamos usar c.0, ocupado por debug)
symbol respu = c.1 'Pin de entrada para la respuesta
symbol Distancia = w1 'Distancia medida



main:

do
pulsout dispa,2 'Produce pulso de disparo de 20 microseg
pulsin respu,1,Distancia 'Mide la distancia en pasos de 10 uS pro flanco de subida

'Convierte a cm
let Distancia = Distancia * 10 / 58 'multiplica por 10 y divide por 58
debug Distancia                     'Presenta la magnitud en pantalla por debug

pause 10 'Tiempo de pausa entre medidas

loop 'Bucle indefinido
-----------------------------------------------------------------------------------------------
'Prueba de la compatibilidad de un Picaxe 28X2 con medidor ultrasonico HC-SR04
'Agosto de 2012. JCO-Robotics

symbol dispa = a.0 'Pin de salida para el disparo
symbol respu = a.1 'Pin de entrada para la respuesta
symbol Distancia = w1 'Distancia medida


main:

do
pulsout dispa,2 'Produce pulso de disparo de 20 microseg
pulsin respu,1,Distancia 'Mide la distancia en pasos de 10 uS pro flanco de subida

'Convierte a cm
let Distancia = Distancia * 5 / 58 'multiplica por 5 y divide por 58
debug Distancia                     'Presenta la magnitud en pantalla por debug

pause 10 'Tiempo de pausa entre medidas

loop 'Bucle indefinido

9 comentarios:

  1. Muy buenas, saludos... Importante informacion solo una pregunta porque para el 8M2 se multiplica la distancia por 10 y para el 28X2 por 5?

    si yo implemento un 40x2 trabajando a 64MHZ cual seria la formula? muchas gracias de antemano. luisnavas9@gmail.com

    ResponderEliminar
    Respuestas
    1. Hola amigo, hasta el momento no he encontrado el porqué o tal vez no he buscado bien. Cuando tuve el montaje hecho estuve experimentando con la velocidad del reloj y siempre obtuve el mismo resultado. En cuanto lo pueda volver a probar te comento algo. Un saludo.

      Eliminar
  2. Buen día saludos, muy interesante, con una consulta me podrías ayudar con algo similar en código para poder probar el sensor con el PICAXE 20X2???

    ResponderEliminar
    Respuestas
    1. Hola, el programa se probó en un 28x2 pero es valido para toda la serie X2, el código es el mismo para todos ellos. Puedes elegir cualquiera de los pines que tengas disponibles para 20x2, por ejemplo b.0 y b.1. Un saludo.

      Eliminar
    2. muchas gracias lo realice y fue un exito, tengo una consulta haz manipulado teclado flexible 4x4 con picaxe, necesito saber como manipularlo con el 20x2 y guardar el valor ingresado en una variable para luego reutilizarla???

      Eliminar
    3. Hola, en breve voy a publicar un articulo acerca del tema. Quizás en lunes o martes. Un saludo.

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Hola,
    Soy un profesor de tecnología en Francia. Su ejemplo me ha dado la solución a mi problema con los estudiantes.
    Muchas gracias.
    Johan rungette

    ResponderEliminar
    Respuestas
    1. Gracias a Ud. Perdone que no haya visto antes el mensaje. No vi aviso. Si esta en Facebook puede unirse al grupo Picaxe Inside NUEVO, donde hay otros usuarios algunos de ellos profesores.

      Eliminar