Scaner I2C-Bus.

Scaner I2C-Bus.

Utilidad que detecta la dirección de un dispositivo I2C.

PRESENTACIÓN.

En muchas ocasiones nos encontramos ante un proyecto que requiere un número importante de puertos y esta labor se la encomendamos a unos dispositivos que ya conocemos como son el sistema I2C-Bus, el cual nos da una solución sencilla y rápida de servicio, en esos casos, la cuestión es direccionar cada dispositivo, es decir, utilizar las distintas direcciones únicas para cada uno.

Normalmente, ante una tabla de direcciones, podemos elegir la correspondiente a cada dispositivo y habremos solucionado el contratiempo. Sin embargo, la cuestión es que, cada dispositivo tiene una dirección única y sin la cual no podemos acceder al dispositivo. En cuantas ocasiones nos encontramos ante esta situación o que, después de un tiempo o en caso de una fortuita ampliación del sistema, tenemos que conocer la dirección del nuevo dispositivo.

direccionesFig. 1 Referencia Direcciones

En esta página, vamos a dar respuesta a esta situación con un código libre que se puede encontrar en distintos sitios. El código es muy sencillo y no hace «nada más», sólo nos muestra la dirección que le corresponde a cada dispositivo I2C que estamos interrogando.


Fig. 2

Este circuito ya vimos como funciona, en este sitio. Actualmente se encuentran en el mercado unos módulos económicos que sirven para minimizar los puertos de salida del Arduino junto con un LDC, el problema es conocer la dirección del circuito para poder utilizarlo.


Fig. 3

Este módulo, dispone de tres pares de isletas para que el usuario interconecte las que considere necesarias para así obtener la dirección que necesite. Y para eso tenemos es siguiente boceto.

Scaner para I2C-Bus.

Código para reconocimiento de la dirección de un dispositivo I2C-Bus.

Copie y pegue usted este código, compile y súbalo a su Arduino. El circuito es el siguiente.


Fig. 4

Ahora, abra la ventana del monitor serie, para ver los mensajes que se producen en cada captura. Recuerde que un dispositivo I2C utiliza lógica inversa, esto quiere decir que, la señal que procesa debe estar permanentemente en H (alto), si necesita más información al respecto visite este enlace. Si usted no ha conectado ningún dispositivo I2C o si estuviera en mal estado, se mostraría la siguiente imagen.

scan1Fig. 5

En el caso de tener conectado un dispositivo I2C en buen estado, le mostrará un mensaje similar al siguiente, en el que se aprecia la dirección única de dicho dispositivo.

scan2Fig. 6

En ciertas ocasiones podemos encontrarnos ante un proyecto en el que utilicemos varios dispositivos conectados al mismo Bus-I2C. En ese caso, si conectamos este sencillo programa al bus, podemos encontrarnos ante una respuesta en la que aparecerán lo valores de las direcciones correspondientes a cada uno de los dispositivos I2C que tengamos en el Bus, como se aprecia en la siguiente imagen.

scan3Fig. 7

Esta es una aplicación de ayuda que se puede considerar una herramienta para facilitar la tarea del programador, cuando se tienen varios dispositivos y desconocemos su ID, así nos podremos servir de un dispositivo que utiliza este protocolo de I2C-bus. La siguiente es una foto del ejemplo de utilidad del escaner que hice para comprobar su efectividad con un circuito integrado PCF8574 y un LCD2004.

escaner_i2cpFig. 8

Queda demostrada su efectividad. Si le ha servido de ayuda me consideraré complacido. Esto es todo, por este simple tutorial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.