sábado, 27 de agosto de 2011

I2C-bus


Sigo trabajando con el Arduino exactamente en un circuito multi-IO que sirve para controlar diferentes entradas y salidas, similar al Loco IO. Este circuito esta basado en el I2C-bus.
Este es un bus basado en un protocolo de comunicación serie desarrollado por Philips Semiconductors usado por muchos circuitos integrados para comunicarse entre ellos. Lo que lo hace realmente interesante es que para su funcionamiento requiere sólo dos líneas, una de reloj (SCL) y otra de datos (SDA) junto a dos resistencias de pull-up con cada una de estas líneas.



En el I2C-bus existe un rol para el dispositivo maestro y otro rol para el dispositivo esclavo El dispositivo maestro inicia/termina la comunicación y es quien debe generar una señal de reloj (SCL) para sincronizar todos los dispositivos conectados al bus. En cuanto a la línea de datos (SDA) es del tipo bidireccional (el maestro puede mandar o recibir), por lo general sólo suele haber un maestro (el micro-controlador, en este caso el Arduino) aunque el protocolo soporta más de uno. Todos los circuitos integrados conectados a este bus tienen una dirección física distinta de la de  los demás, para que la comunicación solo se establezca de forma inequívoca con un esclavo/maestro determinado.
He utilizado el circuito integrado llamado PCF8574P , un chip de bajo coste que tiene un puerto cuasi bidireccional de 8 bit, la idea es expandir las pocas salidas que tiene el Arduino con estos chips, y de esta forma con solo dos lineas del I2C-bus podré expandir las lineas para E/S.
El PCF8574 tiene un consumo muy bajo de corriente e incluye las salidas tipo latch con capacidad de producir más corriente para conducir directamente LEDs. Por ultimo tiene una linea de interrupción (INT), que puede ser conectada a la lógica del micro-controlador Mediante el envío de una señal de interrupción sobre esta línea, la E/S remota puede informar al micro-controlador que hay datos entrantes en sus puertos sin necesidad de comunicarse a través del I2C-bus.

Utilizar este chip como expansor de 8 bits viene de un circuito creado por John Plocher. Ya he comentado en anteriores entradas sobre la página web de John. Ultimamente he visto que estaba en una convención X2011 anual de la NMRA en Sacramento, California realizando una presentación sobre aplicaciones de Arduino para el modelismo ferroviario. También tiene una página web donde nos podemos bajar la presentación completa que mostró en la convención X2011.
En el circuito de John aparece también el integrado 74LS244 un buffer octal para separar las lineas y dar nivel TTL a las lineas de E/S.
En la imagen se puede observar que he comenzado primero con el PCF8574P montada sobre la protoboard atacando a un paquete de 10 Leds. Inicialmente ha funcionado pero la intensidad del LED era muy baja- Voy a hacer los cambios y añadir el otro circuito para ver como funciona.




No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.