miércoles, 7 de octubre de 2009

Uso de dispositivos I2C desde un PC con LabVIEW

Introducción
El I2C se ha convertido en un bus muy popular para la conexión de periféricos a microcontroladores, sobre todo en robótica doméstica por la aparición de numerosos sensores y actuadores que usan este tipo de comunicación.
Se trata de un bus donde un maestro (un PC ó microcontrolador principal) controla los accesos a los diferentes dispositivos esclavos que se pueden conectar al mismo bus. El maestro selecciona el dispositivo, la dirección del registro base dentro del dispositivo y el número de bytes que se desean escribir o leer. Los dispositivos esclavos deben poseer diferentes direcciones y se pueden conectar hasta 128 por bus.
El bus normalmente funciona con señales de 0 y 5V y la velocidad de trasferencia la marca el maestro, que puede tener una frecuencia entre 100 y 400 KHz.


Montaje chapucero del adaptador i2C y un SFR02

Para utilizar dispositivos I2C desde un PC necesitamos un adaptador de USB a I2C maestro. El que usa todo el mundo es el "Devantech USB I2C module". Es bastante económico ( veintitantos €) y fácil de usar, ya que implementa un puerto serie sobre USB (con drivers de FTDI) con un protocolo sencillo y además proporciona una salida de 5V que puede usarse para alimental ciertos dispositivos.
La conexión maestro-esclavos es muy fácil:

  • GND con GND
  • SCL con SCL
  • SDA con SDA
  • +5V ... depende
La entrada adicional que tiene el módulo adaptador sirve para otras cosas. Yo no la uso.
La salida de 5V se puede enviar por el bus, quedando entonces una conexión de cuatro líneas.
En la figura siguiente se muestra un ejemplo de conexionado, en la que el último dispositivo posee su propia alimentación y le basta con 3 hilos del bus (SCL-SDA-GND).


Ejemplo de uso:
Medida de distancias con un sensor sónar Devantech SFR02. La conexión es totalmente directa y no se ve el bus como tal.


Panel del programa de lectura

El programa de toma de medidas por sónar requiere de las inicialización del puerto serie con los parámetros adecuados para el adaptador concreto. En el bucle principal se realiza la lectura del registro lsb de distancia y se inicia una nueva medida mediante la escritura en el registro de comandos del SFR02.

Programa principal de lectura de sonar.


Librería de funciones I2C creada por El Hombre Mecatrónico para LabVIEW:
El programa anterior está basado en la siguiente librería de funciones para uso del bus I2C en labVIEW y que está incluida para descarga en el ejemplo anterior.




Función de Inicialización: I2CInit.vi



Función de Escritura: I2CWrite.vi



Función de Lectura: I2CRead.vi

Espero que este ejemplo le sirva a alguien.
Un saludo a todos los mecatrónicos.

4 comentarios:

  1. Muy interesante y sencillo. Se podría utilizar por ejemplo para dotar con un anillo de sónares a un pequeño robot móvil (controlado con un EEEPC).

    ResponderEliminar
  2. Hola:
    No puedo descargar la librería. Pudieras mandármela por correo?:nilohdez@gmail.com

    GRACIAS.

    ResponderEliminar
  3. Hola, Anónimo.
    Los archivos están para descargar desde mi blog nuevo en
    http://www.hombremecatronico.es/?p=15
    Éste está descontinuado.

    Lo tengo un poco abandonado, pero habrá nuevos artículos pronto.

    Jesús.

    ResponderEliminar
  4. hola amigo podria pasarme la libreria

    ResponderEliminar