Página 1 de 4

El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 22:12
por zx81
Resulta que, después de haber estado un tiempecillo dándole vueltas a eso de empezar a trastear a lo burro, la semana pasada me pedí unos cuantos cacharrillos, entre ellos, una pantalla LCD de 20x4 que va por I²C, un módulo de RTC, un sensor de presión, temperatura y humedad, un pack de componentes electrónicos variados, una breadboard...

De microcontrolador no sabía muy bien qué pillar y como los Uno y Mega me parecían un poco rácanos de potencia y memoria, me pillé esto:

https://www.pjrc.com/store/teensy40.html

Es un puñetero bicharraco que se programa con el mismo IDE que los Arduino (sigh!). Ahora quisiera empezar por conectar la pantalla LCD a la Teensy o, para empezar a una de mis PI. Y me ha surgido una duda que quizá los electrónicos del lugar me podáis ayudar. Resulta que el LCD se alimenta a 5V y tanto la PI como la Teensy no aceptan entradas en sus pines superiores a 3V3. Y yo pregunto, ¿si conecto las señales SCA y SCL por las buenas a la pantalla me zumbaré mis cacharillos?. ¿Cómo podría conectar la pantalla en ese caso?.

Algo he leído de poner unas resistencias de pull-up desde cada línea del I²C a 5V, pero no sé los valores más adecuados (tampoco tengo resistencias de todos los valores, solo unos pocos) ni estoy seguro de si me cargaría las placas igualmente.

¿Alguna recomendación, por favor?

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:04
por mad3001
zx81 escribió: 23 Feb 2020, 22:12 Resulta que, después de haber estado un tiempecillo dándole vueltas a eso de empezar a trastear a lo burro, la semana pasada me pedí unos cuantos cacharrillos, entre ellos, una pantalla LCD de 20x4 que va por I²C, un módulo de RTC, un sensor de presión, temperatura y humedad, un pack de componentes electrónicos variados, una breadboard...

De microcontrolador no sabía muy bien qué pillar y como los Uno y Mega me parecían un poco rácanos de potencia y memoria, me pillé esto:

https://www.pjrc.com/store/teensy40.html

Es un puñetero bicharraco que se programa con el mismo IDE que los Arduino (sigh!). Ahora quisiera empezar por conectar la pantalla LCD a la Teensy o, para empezar a una de mis PI. Y me ha surgido una duda que quizá los electrónicos del lugar me podáis ayudar. Resulta que el LCD se alimenta a 5V y tanto la PI como la Teensy no aceptan entradas en sus pines superiores a 3V3. Y yo pregunto, ¿si conecto las señales SCA y SCL por las buenas a la pantalla me zumbaré mis cacharillos?. ¿Cómo podría conectar la pantalla en ese caso?.

Algo he leído de poner unas resistencias de pull-up desde cada línea del I²C a 5V, pero no sé los valores más adecuados (tampoco tengo resistencias de todos los valores, solo unos pocos) ni estoy seguro de si me cargaría las placas igualmente.

¿Alguna recomendación, por favor?
Tienes 4 opciones:
1.-Probar:Ver si el lcd funciona con 3.3V.. es decir, en vez de alimentarlo a 5V hazlo a 3.3V, algunos son 5V tolerant pero tambien van con 3.3v
2.-Facil:Comprar un lcd que vaya a 3.3V
3.-Menos fecil:Intercalar un "Level Shifter" que hace el tránsito bidireccional entre 3.3V y 5V.... los tienes a patadas en los chinos (50 centimos) y en otros sitios (lo que quieran pedir)..
4.-Menos menos facil: mirar si el lcd tiene resistencias intercaladas para bajar la tension de 5v a 3.3v... hay muchos lcds de 5v que realmente son de 3.3v ... es cuestion de revisar bien la placa (o incluso si encuentras un esquema del mismo). No digo que el tuyo sea así, pero hay de todo en la viña del señor.
Ahí tienes un ejemplo:
oled_con_levelshift.jpg
Salu2

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:18
por wilco2009
Si el master es a 3v3 no hay ningun problema ya que el master pondra a 3.3v el bus mediante un pull-up y la comunicación consiste en meter ceros conectando el bus a masa.

Si el master fuera a 5v sí que habría problema.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:21
por dandare
i2c es un protocolo que usa señales open-collector / open-drain. Es decir, no usa "1" activos, sino que deja que los pull-ups pongan ese valor alto. Por tanto, si no existen pull-ups ya (no debería si es algo hecho con algo de cabeza), como 3,3v es reconocido como "1" tanto en lógica CMOS de 3,3v como de 5v. Pon pull-ups a 3,3v y listo.

Si ya existen pull-ups, y son a 5v, simplemente haz un divisor de tensión con "pull downs" :)

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:33
por wilco2009
dandare escribió: 23 Feb 2020, 23:21 i2c es un protocolo que usa señales open-collector / open-drain. Es decir, no usa "1" activos, sino que deja que los pull-ups pongan ese valor alto. Por tanto, si no existen pull-ups ya (no debería si es algo hecho con algo de cabeza), como 3,3v es reconocido como "1" tanto en lógica CMOS de 3,3v como de 5v. Pon pull-ups a 3,3v y listo.

Si ya existen pull-ups, y son a 5v, simplemente haz un divisor de tensión con "pull downs" :)
Lo mas habitual en una placa tipo arduino es que ya tenga un pull-up.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:43
por zx81
dandare escribió: 23 Feb 2020, 23:21 i2c es un protocolo que usa señales open-collector / open-drain. Es decir, no usa "1" activos, sino que deja que los pull-ups pongan ese valor alto. Por tanto, si no existen pull-ups ya (no debería si es algo hecho con algo de cabeza), como 3,3v es reconocido como "1" tanto en lógica CMOS de 3,3v como de 5v. Pon pull-ups a 3,3v y listo.

Si ya existen pull-ups, y son a 5v, simplemente haz un divisor de tensión con "pull downs" :)
Yo creo que pull-ups ya existen, aunque he leído que deberían ponerse siempre que se vayan a conectar más de un slave en el bus. He comprado cacharritos I²C como para montar un colegio (¿para eso es un bus, no?).

El caso es que pensando en lo que me ha dicho mad3001, he conectado sin más el LCD a 3V3 y el backlight se enciende igual que si lo alimentara a 5V. Otra cosa es si luego funciona bien o no. Lo de las resistencias está un poco más complicado porque el LCD es normal y luego lleva una plaquita adosada con un PCF8574T que es el que proporciona comunicación I²C. Ambas placas llevan resistencias en tirereta. A saber. EL LCD se supone que es un Hitachi 44780, que es bastante común por lo que he podido ver en l'Internec.

Mañana, lo mismo me tiro al pisto y lo conecto, a ver qué pasa. Hoy no puedo hacerlo bien porque pedí un kit de componentes que llevaba una breadboard de 840 puntos y un alimentador de 3V3-5V a la breadboard. Como no me fío ni de mi sombra, antes de conectar nada le dí alimentación y medí con el multímetro. Le entraban 9V y salían 8'64 por las dos salidas, la de 5 y la de 3,3. Si llego a conectar algo me fundo hasta el horno de la cocina.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:45
por dandare
wilco2009 escribió: 23 Feb 2020, 23:33
dandare escribió: 23 Feb 2020, 23:21 i2c es un protocolo que usa señales open-collector / open-drain. Es decir, no usa "1" activos, sino que deja que los pull-ups pongan ese valor alto. Por tanto, si no existen pull-ups ya (no debería si es algo hecho con algo de cabeza), como 3,3v es reconocido como "1" tanto en lógica CMOS de 3,3v como de 5v. Pon pull-ups a 3,3v y listo.

Si ya existen pull-ups, y son a 5v, simplemente haz un divisor de tensión con "pull downs" :)
Lo mas habitual en una placa tipo arduino es que ya tenga un pull-up.
Si, pero si los lleva, lo hace al voltaje adecuado que, según nos cuenta, es a 3,3v. Me planteaba si los lleva o no la pantalla, que es lo que creo que no debería. En cualquier caso, tienes razón, no había comentado nada de los posibles p/ups del teensy.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:47
por dandare
zx81 escribió: 23 Feb 2020, 23:43
Yo creo que pull-ups ya existen, aunque he leído que deberían ponerse siempre que se vayan a conectar más de un slave en el bus. He comprado cacharritos I²C como para montar un colegio (¿para eso es un bus, no?).
No, el I2C es "incapaz" de poner una señal a "1" y necesita que lo hagan unas resistencias conectadas a VCC: Los pull-ups. Da igual si conectas uno o 20 cacharros al bus.

En cualquier caso, verifica lo que ha dicho Wilco, que es muy posible que pase y el teensy tenga ya pull-ups a 3,3v, así que no tendrías nada más que hacer que enchufar.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:48
por wilco2009
Igual lo mas prudente es que conectes solo la tension y la masa al display y compruebes si las lineas del I2C tienen tension con un polimetro y así sales de dudas.

Re: El I²C, su mujer y otras cosas de meter

Publicado: 23 Feb 2020, 23:56
por zx81
wilco2009 escribió: 23 Feb 2020, 23:48 Igual lo mas prudente es que conectes solo la tension y la masa al display y compruebes si las lineas del I2C tienen tension con un polimetro y así sales de dudas.
Sí señor, en SCA/SCL tengo la tensión de entrada, tanto si lo alimento a 3V3 como a 5V. Eso sí, he visto que a 3V3 el backlight brilla mucho menos.