[I2C] PCF8574: Descripción

Data sheet (Philips) Data sheet (Texas Instruments)

El PCF8574 es un expansor de entradas y salidas digitales por bus I2C fabricado por Philips. Puede conectarse a un procesador como Arduino para controlar más dispositivos empleando con menos pines debido a que Arduino posee también bus I2C.

El PCF8574 incorpora 8 pines cuasidireccionales basados en salidas CMOS en configuración drenador abierto. Esto significa que pueden ser empleados tanto como entradas como salidas.

La corriente máxima que puede suministrar cada pin, cuando actúa como salida, es de:

25 mA (10 mA mínimo) cuando actúa como sink (sumidero, la corriente fluye hacia el PCF8574) → Si estamos sacando un 0.

30 µA mínimo a 300 µA máximo, cuando actúa como source (fuente, la corriente fluye desde el PCF8574) → Si estamos dando un 1.

Por tanto, la configuración normal es como sink. Todas las salidas disponen de Latches, es decir, mantienen el estado por sí mismas sin necesidad de acciones desde Arduino. Únicamente debernos actuar cuando queramos modificar el estado de unas de las salidas.

La comunicación se realiza a través del bus I2C. En él cada dispositivo se distingue por una dirección. El integrado dispone de 3 pines para completar su dirección I2C, lo que da 8 integrados posibles conectados al mismo bus I2C. Por tanto, es posible controlar 64 dispositivos usando únicamente los 2 pines del bus I2C: SCL y SDA.

La dirección I2C del PCF8574 se completa con los puentes A0, A1 y A2; situados debajo del potenciómetro, por defecto vienen sin cerrar en la placa del módulo. Del PDF indicado arriba obtenemos la información de la imagen adjunta. En ella vemos que las direcciones pueden ir de 0x20 a 0x27 en el PCF8574 y de 0x38 a 0x3F en el PCF8574A. Es decir, podemos poner en el mismo bus 8 PCF8574 y 8 PCF8574A.

También dispone de una línea de interrupción (INT) que puede ser empleada para detectar una variación en uno de sus pines. Conectada a un pin de interrupciones de Arduino podemos detectar la recepción de datos sin necesidad de monitorizar constantemente por el estado de las entradas.

La tensión de alimentación del PCF8574 es entre 2.5V y 6V. Por otro lado su consumo en stand-by es muy bajo, inferior a 10 µA.

Podemos emplear el PCF8574 para ampliar el número de entradas y salidas digitales disponibles, y controlar 8 dispositivos (o hasta 64 si usamos varios módulos) únicamente con 2 pines. Esto es especialmente útil en modelos de Arduino con menor número de pines, como el Attiny85 empleado en placas Digispark.

Conexión de cargas

Al conectar las cargas a cada uno de los 8 pines tendremos en cuenta ciertas consideraciones. Como hemos dicho cada pin cuasibidireccional tiene configuración de drenador abierto. A modo resumen algo simplificado, dentro de cada pin tenemos un transistor CMOS junto con una débil resistencia de pull-up, que impone una intensidad de corriente de 100 uA cuando el transistor está activado.

Cuando el pin actúa como salida el PCF8574 actúa como sumidero de corriente, es decir, la corriente fluye hacia dentro, y la lógica de las salidas está negada.

Cuando la salida está en LOW el voltaje visto por la carga vale Vdd, y por tanto no conduce corriente.

Cuando la salida está en HIGH la carga queda conectada a Gnd, y puede pasar hasta 25 mA.

Cuando el pin del PCF8574 actúa como entrada deberemos ponerlo siempre a HIGH. En estas condiciones, la resistencia interna de pull-up limita la corriente de pérdidas a 100 uA. Al conectar una carga, deberemos usar una resistencia de pull-up, igual que hacemos siempre que leemos un pulsador.

Cuando la carga externa está cerrada, la tensión en el pin pasa a GND.

Cuando la carga externa está abierta, la tensión en el pin pasa a Vdd.