J'aimerais savoir s'il est possible d'alimenter en 5V cc un écran OLED et interfacer son bus I2C avec des pullups 3.3V (compatible ESP32 ou Raspberry Pico 2). Faut il ou non des "level shifter"?
La notice n'est pas trés claire à ce sujet selon moi.
À mon avis la notice sous entend que si c’est alimenté en 5V la communication I2C se fait aussi en 5V et si c’est alimenté en 3.3V alors la communication est en 3.3V.
En I2C, les lignes SDA et SCL sont en open-drain. Ni le maître ni l’esclave ne peuvent mettre la ligne à haut, ils ne peuvent que la tirer vers le bas. La ligne est maintenue à Vcc par une résistance de pull-up. L’esclave peut tirer la ligne basse pour envoyer un 0, par exemple pour un ACK.
Donc si vos résistances de pullup vont à la tension d’alimentation 5V , les pins de votre arduino et de l’écran vont voir cette tension. L’écran semble supporter 5V sur ses pins, mais est-ce le cas de votre arduino ? (Si c’est un ESP32, non).
Après si les pullup vont à 3.3V et que l’écran est alimenté en 5V, sa logique interne va attendre 5V pour voir un HIGH mais il ne recevra que 3.3V (le GND étant le même que l’alimentation soit 3.3 ou 5V). La bonne nouvelle c’est que souvent ce 3.3V est suffisant pour être vu comme un HIGH et donc ça fonctionne mais on est un peu limite.
En bref : je ferai sans trop hésiter alim 5V, pullup vers 3.3V et ça devrait fonctionner entre votre ESP et OLED. Mais je ne suis pas un pro du hard… si ça fume, ne m’en voulez pas .
Tu veux utiliser un micro 3,3 V et un écran Oled alimenté, lui, sous 5V
Par pure curiosité pourquoi alimenter l’écran en 5 V ?
Il ne faut pas que le micro recoive des niveaux supérieurs à son Valim.
Sur ce point ta proposition de relier les résistances de collecteur au seul 3,3 V me parait correcte (en mon âme et conscience ).
Reste la compatibilité des niveaux en entrée d’oled.
Si quand il est alimenté en 5 V les niveaux de l’écran sont aux normes CMOS , c’est à dire niveau haut minimal égal à 70 % de Vdd, soit 3,5 V cela ne passera probablement pas, sauf à tomber sur un très bon lot de fabrication.
Lecture détaillée du CI de gestion de l’écran a prévoir.
Et de ses paramètres Vih et Vil
V Input Low et V Input High
Les pullups sont déjà sur le module.
Il possède un régulateur 5V →3.3V, le boîtier repéré U2 sur les photos.
Il faudrait juste vérifier si les pullups sont connectées sur la sortie du régulateur ou sur son entrée. Les photos sur le sur le site marchand ne permettent pas de le voir. Un coup d'ohmmètre devrait permettre de le savoir.
Si les pullups sont connectées à la sortie du régulateur alors le SSD1306 voit toujours 3.3V sur ses IOs.
J'ai envoyé ma réponse avant de lire celle de @fdufnews
Je faisais une évaluation, je suis sur un projet pour lequel j'envisage de faire un PCB avec plusieurs composants et entre autre une alim externe de 5V.
Le seul 3V3 que j'envisage d'utiliser serait celui fournit par l'ESP32.
Donc pour éviter de le charger, je regarde si je peux éviter d'alimenter mon écran en 3V3.
J'ai tout à fait compris la contrainte residée à
Ce n'est pas que je ne veuille pas m'y atteler mais je n'ai pas la doc de ce modéle précis, ce que je trouve, sur des modéles ressemblant, c'est Vih entre 0,7VDD ou 0,8VDD ,et comme je voudrais VDD = 5V,
3,3V < 0,7VDD (3,5V), ça peut tomber en marche, mais pas toujours.
Ce serait plus prudent de prendre VDD = 3,3V je pense.
Des sites avec une foultitude de doc de drivers graphiques.
Attention, le Vdd à prendre en compte c'est celui du driver d'écran et le SSD1306 fonctionne en 3.3V max (1.65≤ Vdd ≤ 3.3).
Il est clair que le régulateur ne va plus réguler. Il va délivrer 3.3V - Vdropout mais comme le SSD1306 fonctionne jusqu'à 1.65V il n'y a pas de problème.
L'écran, selon la doc du SSD1306, consomme 100μA par pixel allumé au maximum.
La consommation propre du driver est < 1mA.
Le multiplexage de l'afficheur est 1:64. Une ligne affichée à la fois.
Donc, pour un écran tout blanc au niveau max le courant consommé serait de:
128 x 100e-6 + 1e-3 = 0.0138 soit 14mA environ
Valeur à vérifier par une mesure, je n'ai pas d'écran comme ça actuellement sous la main.
Le site de GME12864-11 est conçu pour la commodité de l'utilisateur. Il fonctionne dans une plage de 3.3 à 5 V, avec un régulateur intégré et un convertisseur boost intégré pour une alimentation stable. Cela garantit la compatibilité avec les microcontrôleurs 3.3 V ou 5 V sans avoir besoin d'un décaleur de niveau.
Qui selon moi montre comment ils conseillent d'alimenter le module complet car le connecteur de droite porte la ref du module (c'est donc le connecteur d'entrée du module)
Perso, je ne sais pas quoi en conclure, si ce n'est que le mieux est de vérifier sur la bête à quel niveau de tension sont reliés les pullups sur le module, comme le suggére @fdufnews
Je ne comprends pas pourquoi tu continue à te prendre la tête.
L'écran ne consomme pas beaucoup de courant et il peut très bien être alimenté par le 3.3V de l'ESP32.
Vu le faible courant débité par le régulateur XC6206 ce dernier , alimenté en 3,3V , fluctuera entre 3,1V et 3,2V , valeur permettant au module afficheur de fonctionner.
Pour le niveaux de tension pour l’’I2C j’aii trouvé un schéma de module OLED à SSD1306 où l’on voit les résistances de pull-up reliées à VCC = sortie du régulateur 3,3v
Il faut que les personnes qui consulteront ce schéma sachent que tous les afficheurs de ce type ne sont pas configurés ainsi et j'en ai plusieurs qui n'ont même pas de régulateur. Il faut bien s'assurer, au dos du circuit, de la présence du régulateur.
D'ailleurs là je comprend que le XC6206P282MR du schéma post#13 est selon la doc du régulateur, un régulateur 2.8V et non 3.3V.
Ce n'est pas forcément celui qui est soudé sur le module EB096..., mais comme le montre le schéma, un régulateur mit entre un MCU et un module EB096...
C'est pour cela que moi, ça ne me paraît pas clair.