2021-04-02
LCD por I2C con PCF8574
Para conectar un display lcd a nuestro Arduino basta con comprar un backpad I2C, soldarlo al display, coger el programa y ya tendremos funcionando nuestro LCD, pero ¿qué ocurre si queremos hacer nosotros un circuito que no sea un backpad?
Aquí empiezan los problemas, buscas en la red, y aparecen esquemas que tienen todos el mismo defecto: el led de retroiluminación no lleva resistencia limitadora. Así que dudas del correcto funcionamiento...
Por lo tanto, la solución es montar un esquema propio, y probar librerías hasta dar con alguna que funcione bien.
El expansor PC8574
El PC8574 es un expansor de 8 E/S que podemos controlar con el bus I2C. Su patillaje es el siguiente:
Es el mismo chip que usan los backpad, pero en estos usan el encapsulado SMD que es más difícil de manejar que el clásico DIP
No voy a entrar en detalles de funcionamiento del chip, dejaré el datasheet como descarga para poder consultar posteriormente, pero si hay dos cosas a tener en cuenta:
- Aunque es un chip de E/S, su funcionamiento real es distinto. Su pines son salidas de drenador abierto que pueden ser leídas desde el chip. Por eso se dice que sus salidas son cuasi direccionales
- Podemos encontrar dos modelos de chip: PCF8574 y PCF8574AP. Son exactamente iguales, la única diferencia es la dirección del bus i2c. Para el PCF8575 la dirección es la 0x28 y para el PCF8574AP la dirección base es la 0x38
El esquema del circuito
Las resistencias R1 a R3 sirven para establecer la dirección del bus I2C. Si no deseamos ponerlas basta con llevar dichos pines a GND con lo que la dirección será la base (0x20 o 0x30).
La resistencia R4 sirve para el contraste del LCD, un valor de 2k a 3k es bastante bueno. No obstante, si queremos regular el contraste de la pantalla bien deberemos usar un potenciómetro de 10K, creando un divisor resistivo cuyo centro lo llevaremos a VEE.
Hay que prestar especial atención a donde llevamos los pines PX del chip al lcd, si no lo hacemos correctamente el lcd no se verá.
El pin P3 es el encargado de la luz de fondo. Su salida mediante una resistencia (R5) de unos 2 a 3k ataca la base del transistor Q1 haciendo que este conduzca o no. La resistencia R6 es la resistencia limitadora y un valor alrededor de los 330 ohm será suficiente. El transistor Q1 puede ser un transistor de pequeña potencia como el BC547 o el 2N2222.
El software.
Aquí es la parte más peliaguda, dado que hay varias librerías y cada una de ellas trata los pines de manera diferente.
Lo recomendable es buscar la librería correcta y probarla. En las referencias dejo un enlace a la librería que he usado para esta conexión