Tabla de contenido:

Pantalla LCD de 5V con Arduino Due 3.3V I2C: 5 pasos
Pantalla LCD de 5V con Arduino Due 3.3V I2C: 5 pasos

Video: Pantalla LCD de 5V con Arduino Due 3.3V I2C: 5 pasos

Video: Pantalla LCD de 5V con Arduino Due 3.3V I2C: 5 pasos
Video: ✅ No conectes una LCD I2C con esp sin ver este video | curso IOT con ESP32 y ARDUINO (No6) 2024, Mes de julio
Anonim
Pantalla LCD de 5V con Arduino Due 3.3V I2C
Pantalla LCD de 5V con Arduino Due 3.3V I2C

Esta publicación tiene como objetivo explicar una forma más fácil de usar Arduino Due (u otra placa de 3.3V) con la popular pantalla LCD 16x2 con el módulo adaptador I2C.

El problema inicial es que la pantalla LCD necesita 5 V para que su luz de fondo funcione correctamente, pero los pines SCL y SDA deberían funcionar a 3,3 V para comunicarse con el Arduino Due sin causar daño. Para resolver esto, encontré dos opciones:

La solución más mencionada es utilizar un convertidor de nivel lógico bidireccional, que de hecho resuelve el problema. Pero también agrega otro componente a su lista y conexiones de cableado adicionales en su circuito

La otra forma que he encontrado es simplemente desoldar 2 resistencias pullup en la "mochila del adaptador I2C" de la pantalla LCD. Además de ser mucho más fácil, tiene otras ventajas explicadas en la comparativa al final. Este método es el enfoque principal de esta publicación

Suministros

Arduino Due

Pantalla LCD 16x2 con módulo adaptador I2C

Soldador

Bomba para soldar o mecha para soldar

Pinzas

Paso 1: origen de la solución

La solución no fue inventada por mí, vi una muy buena sugerencia y explicación en el Foro Arduino en el enlace a continuación, que reproduciré en esta publicación.

forum.arduino.cc/index.php?topic=553725.0

Respuesta de: david_prentice

No pude encontrar ningún tutorial completo en Internet y, dado que es un problema muy común, estoy tratando de presentar la solución aquí en detalle, ser testigo de que realmente funciona y agregar información que podría mitigar cierto escepticismo sobre sus resultados.

Paso 2: Explicación

Dispositivos

Para que funcione la comunicación I2C, se requieren resistencias pullup conectadas a los pines SDA y SCL. Eso es porque los dispositivos solo ponen estos pines en BAJO mientras se comunican. Para representar un ALTO, solo tiene que no enviar un BAJO, y gracias a los pullups pasa a ALTO. (esta comprensión será muy importante más adelante)

La "mochila I2C" LCD tiene dos resistencias pull-up 4K7 que cumplen con el requisito I2C. Pero como están conectados a Vcc, si usa 5 V, llevarán SDA y SCL a 5 V.

Si observa la hoja de datos, puede ver que, a diferencia de otras placas, la Due ya tiene resistencias pull-up 1K5 integradas en sus pines principales SDA, SCL, que las lleva a 3.3 V.

Pruebas

  • Pantalla LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5 V
  • SDA -> SDA
  • SCL -> SCL

Si solo conecta la pantalla LCD en el Due (siguiendo el cableado anterior), los pullups Due 1k5 (o 1k0) conectados a 3.3V y los pullups LCD 4K7 conectados a los 5 V resultarán en líneas I2C inactivas a 3.7 V (3.6 V con 1k0). Eso no es bueno, ya que la hoja de datos Due estipula un voltaje máximo de 3.6 V para sus líneas de E / S.

Al probar este escenario, solo con la pantalla LCD, obtuve 3, 56 V. Al agregar un módulo EEPROM al mismo SDA y SCL, subió a 3.606 V. En ambos casos todo funcionó normalmente, pero esos están lejos del voltaje ideal niveles considerando el máximo estipulado de 3.6 V.

Entonces, sí, existe la posibilidad de que funcione como lo hizo el mío sin hacer ninguna alteración. Pero el nivel de voltaje aún está lejos de ser ideal y alguna discrepancia en el Due o el LCD pullup puede hacer que supere el límite de 3.6 V. (Sería recomendable al menos probar antes con un potenciómetro de 20K o 100K cuál es la resistencia más baja entre los pines 5 V y SCL / SDA antes de que lleguen a 3.6 V, aunque el resto de la solución es mucho más seguro y probablemente más fácil)

Solución

La solución presentada es simplemente quitar las resistencias pull-up de la mochila LCD, que intentan tirar de la línea hasta 5 V. Luego, solo quedarán las resistencias pull-up incorporadas Due, tirando de las líneas SCL y SDA a 3.3V. ¡Funcionó perfectamente, manteniendo los pines inactivos en alrededor de 3.262 V!

Las conexiones siguen siendo las mismas:

  • Pantalla LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5 V
  • SDA -> SDA
  • SCL -> SCL

Si se pregunta si la pantalla LCD no tirará de la línea a 5 V para representar un ALTO al comunicarse, recuerde que en I2C los dispositivos solo tiran de las líneas BAJO, siendo la señal ALTA representada cuando no interfiere, que serán los 3.3 V de dominadas a bordo del Due.

Además, los 3.3 V son suficientes para que la mochila I2C se considere como una señal ALTA.

Paso 3: identificar y quitar las resistencias

Identificar y quitar las resistencias
Identificar y quitar las resistencias
Identificar y quitar las resistencias
Identificar y quitar las resistencias

La imagen de arriba muestra en rojo las resistencias pullup que encontré en mi módulo.

Identificar

Como la mochila del adaptador LCD I2C puede variar, es posible que las resistencias no tengan la misma configuración. Para identificar las resistencias pullup, puede usar un multímetro con una prueba de continuidad. Cada resistencia pull-up debe tener un extremo conectado al pin SCL o SDA y el otro extremo a Vcc.

En mi caso, había tres de las resistencias 4K7 (472 en código SMD) en la placa. Solo dos de ellos cumplieron con los requisitos anteriores, ¡señalando que estos son los pullups que estábamos buscando!

Por precaución adicional (si por alguna razón no eran 4K7), también probé las otras resistencias y confirmé que ninguna de ellas cumplía con los requisitos para ser pull-ups.

Eliminar

¡Ahora, todo lo que tienes que hacer es desoldarlos! Es más fácil si tiene una bomba de soldadura o una mecha de soldadura y pinzas para ayudar.

Paso 4: Comparación entre soluciones

Convertidor de nivel lógico bidireccional (LLC)

Pros:

No requiere ningún equipo o habilidad de soldadura

Contras:

Anuncios más cables y la LLC a su lista de componentes de lista

Conexiones más desordenadas con los componentes adicionales

Un poco más caro

Desoldar las resistencias pull-up de la pantalla LCD

Pros:

Resultado final más limpio

Probablemente pueda hacerlo de inmediato, sin tener que esperar a la LLC

Especialmente bueno si desea reducir la variedad de componentes y la complejidad del ensamblaje en un proyecto complejo o que desea replicar

Contras:

Altera el circuito LCD (Si lo quieres "listo para usar" con el Uno, ya teniendo los pullups 4K7, puedes deshacer los cambios resolviéndolos)

Paso 5: Consideraciones finales

Espero que este tutorial arroje algo de luz sobre este problema de compatibilidad y algunas de sus posibles soluciones.

Si tiene alguna idea de mejora, mejores explicaciones, nuevas soluciones o encontró algún error en la publicación, ¡dígame en los comentarios!:)

Recomendado: