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

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Avatar de Usuario
zx81
Aspirante a demonio
Aspirante a demonio
Mensajes: 499
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 10 times
Been thanked: 2 times
Contactar:

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

Mensaje 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?
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
Avatar de Usuario
mad3001 !Atari
Demonio segundo orden
Demonio segundo orden
Mensajes: 1921
Registrado: 25 Nov 2015, 00:15
Ubicación: Mostoles(Madrid)
Has thanked: 81 times
Been thanked: 113 times

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

Mensaje 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
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Volviendo a los origenes... programa en assembler
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 101 times

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

Mensaje 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.
Última edición por wilco2009 el 23 Feb 2020, 23:33, editado 1 vez en total.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

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

Mensaje 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" :)
Imagen
Imagen
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 101 times

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

Mensaje 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.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
zx81
Aspirante a demonio
Aspirante a demonio
Mensajes: 499
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 10 times
Been thanked: 2 times
Contactar:

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

Mensaje 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.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

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

Mensaje 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.
Imagen
Imagen
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

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

Mensaje 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.
Última edición por dandare el 23 Feb 2020, 23:48, editado 1 vez en total.
Imagen
Imagen
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 101 times

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

Mensaje 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.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
zx81
Aspirante a demonio
Aspirante a demonio
Mensajes: 499
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 10 times
Been thanked: 2 times
Contactar:

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

Mensaje 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.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator
Responder

Volver a “Proyectos de hardware abiertos”