«

»

Oct 18

Medidor de distancia por ultrasonidos con PIC16F886

Medir de ultrasonidosVamos a partir de un módulo muy extendido, muy barato y muy sencillo de manejar el HC-SR04, una placa entrenadora basada en un 16F886 y un display LCD de 16×2 caracteres con un registro de desplazamiento 74LS164, para construir un medidor de ultrasonidos bastante preciso con un alcance de entre 3 y 4 metros y una distancia mínima de detección de unos 2 cm.

El circuito que hagamos puede servirnos simplemente para sustituir al flexómetro,o como base para otras muchas aplicaciones: robótica móvil, medición del nivel de líquidos (el agua de la pecera por ejemplo), o detección de presencia en un antirobo.

Aprovechando la ocasión, veremos como escribir datos en un LCD de texto utilizando sólo dos pines del PIC y las funciones de salida estándar de C.

El módulo HC-SR04 tiene sólo cuatro pines que conectar, los dos de alimentación (va a 5 voltios), un “trigger” que mantenemos a 1 durante al menos 10 us para empezar a medir y una señal de retorno “echo” que se pondrá a 1 durante un tiempo equivalente al que tarda el sonido en ir y volver. En el aire a 22ºC, la velocidad del sonido es de unos 344 m/s, por lo que sólo hay que medir el tiempo del pulso y dividir por dos la distancia resultante (medimos la ida y la vuelta). Simplificando, podemos dividir los us que dura el eco por 58 para sacar la distancia recorrida en cm.

Por otro lado vamos a visualizar la medida con un display LCD de 16×2. Para hacer la conexión completa necesitamos 8 pines para los datos y otros 3 para las señales RS, R/W, y E. En realidad casi no necesitaremos leer registro del LCD, con lo que podemos prescindir de la señal R/W, tampoco necesitamos las ocho líneas de datos, se pueden enviar en bloques de cuatro bits, así que nos bastan 6 señales. Para enviar estas 6 señales podríamos utilizar 6 pines del PIC, pero en su lugar introducimos un registro de desplazamiento de 8 bits, que necesita solamente una señal de datos y otra de reloj.

Así queda el cableado:

En el programa enviamos continuamente el trigger, medimos el tiempo de respuesta con un temporizador, lo pasamos a cm y lo representamos en la pantalla utilizando la librería “flexlcd” junto con las funciones de entrada/salida estándar de C, como se ve en el ejemplo.

Fichero sólo visible para usuarios registrados

6 comentarios

Ir al formulario de comentarios

  1. dealermichael

    Hola, soy estudiante de electronica,quisiera saber si es posible obtener el archivo .asm
    Gracias .

  2. David

    Descarga el proyecto en C en el enlace que hay al final de la entrada. Al compilarlo obtienes el binario .HEX que puedes desensamblar para obtener un fichero .ASM
    Otra opción dentro del compilador CCS es pulsar en el icono “C/ASM List” en el menú “Compile”, para ver el equivalente en ensamblador de cada línea de programa en C.

  3. AstC

    hola una pregunta, que versión de CCS manejas? tengo la 4.104 y me da bastantes problemas..

    1. David

      La versión que uso es la 4.13, si no recuerdo mal. Ha mejorado algunas cosas, pero aun así el compilador sigue dando guerra. A veces es un poco imprevisible con la conversión de tipos (casting) y por ejemplo en el DSPIC tiene problemas con la instrucción printf y los números en coma flotante si no se incluye la directiva #build (stack=256) al principio del programa. Luego el wizard no va muy bien dependiendo del modelo de PIC.
      Te recomiento el foro de ccs http://www.ccsinfo.com/forum/ para encontrar soluciones a los problemas más habituales.
      Un saludo.

  4. Nterranova

    Hola, acabo de aterrizar en el blog, mis conocimientos en estos temas no son muy avanzados pero si tengo muchas ganas de aprender por lo que me he decidido a registrarme y poder optar a las publicaciones que haces con objeto de seguir ahondando en la electrónica. Bien, ya presentado me he interesado por este medidor de distancia por ultrasonido, en la actualidad andaba enredando con este asunto, ¿sería posible obtener el programa para el PIC? Gracias y un saludo.

    1. David

      Sólo tienes que acceder con tu usuario y pinchar en el enlace que aparece al final de la entrada. Un saludo y bienvenido.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies