ATmega mit 3.3V, daran I2C-Display mit 5V, geht das?

#6446877
Lesenswert?

kurze Antwort, es kommt wie immer darauf an welche I2C OC sind, der 
ATmega hat keine OC open collector Ausgänge.

In einem solchen Fall sind Pegelwandler bi-direktional von Vorteil, die 
typische Mosfet Schaltung als diskrete mit BS138/170
https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Bidirektionaler_pegelumsetzer_wikide.svg/220px-Bidirektionaler_pegelumsetzer_wikide.svg.png

oder als Modul z.B.
https://eckstein-shop.de/SparkFun-Logic-Level-Converter-Bi-Directiona-Shifter-Pegelwandler
https://elektro.turanis.de/html/prj146/index.html
Gast #6446896
Lesenswert?

Joachim B. schrieb:
> ... der ATmega hat keine OC open collector Ausgänge.

Stimmt, der ist in CMOS aufgebaut. Dort heißen die Dinger Open Drain. 
Der Rest wäre eine Frage der Programmierung, wenn einem nicht 
Schutzdioden einen Strich durch die Rechnung machen würden. Daraus 
ergeben sich die unter Absolute Maximum Ratings genannten 
Spannunggrenzen für alle Pins (außer RESET).
Guck mal im Kapitel "I/O-Ports" im Datenblatt, insbesondere die 
Abbildungen "I/O Pin Equivalent Schematic" und "General Digital I/O" an, 
die zusammen die Beschaltung an einem I/O-Pin darstellen.
Gast #6446921
Lesenswert?

eddi schrieb:

> Hi, Frage, kann man ein LC-Display samt seinem I2C-Treiber (PCF8547) mit
> +5V betreiben und über GND, SCL und SDA direkt mit einem ATmega
> verbinden, der mit +3,3V läuft?

Kommt auf den PCF8547 an. Wenn der 3.3V (mit gutem Sicherheitsabstand, 
also eher so was bei 3.0V) sicher als High akzeptiert, dann geht das.

Die Pullups der beiden I2C-Signale dürfen einfach nur mit der 
3.3V-Versorgung des ATmega verbunden sein und alles ist schick.

Notfalls kann man auch noch eine wenig nachhelfen, und die 
Pullupspannung ein paar Zehntelvolt höher legen, indem man sie sie von 
den 5V ableitet und z.B. auf 3.6..3.8V begrenzt. Das ist billiger (und 
schneller!) als bidirektionale Pegelwandler. Aber hat schon ein 
Geschmäckle...
Gast #6446928
Lesenswert?

c-hater schrieb:
> Notfalls kann man auch noch eine wenig nachhelfen, und die
> Pullupspannung ein paar Zehntelvolt höher legen, indem man sie sie von
> den 5V ableitet und z.B. auf 3.6..3.8V begrenzt. Das ist billiger (und
> schneller!) als bidirektionale Pegelwandler. Aber hat schon ein
> Geschmäckle...

Oder man betreibt das Display mit 3,3V und legt eine negative 
Konstrastspannung im Bereich 0 bis -2V anstelle des sonst üblichen 
Potentiometers an. Diese kann man mit PWM und einer Dioden/Kondensator 
Kombination erzeugen.
Gast #6446930
Lesenswert?

Stefan ⛄ F. schrieb:
> Doch hat er, insbesondere im I²C Modus. Leider darf man dort aber
> trotzdem nicht mehr Spannung anlegen, als VCC.

Wenn man den I2C-Bus mit 3.3V laufen lässt, liegt der High-Pegel über 
dem garantierten Minimalwert des PCF8574 von 3.5V (V_IH min = 0.7*VDD).
Das ist kein sauberes Design, aber wenn nicht gerade irgendwelche 
Sicherheitstechnik dran hängt, hat man gute Chancen, dass es 
funktioniert.
Wichtig ist dann, dass die Spannung des ATmega wirklich nicht kleiner 
als die 3.3V ist und die 5V wirklich nicht größer.
Man kann den Bus auch mit einer etwas höheren Spannung laufen lassen, 
ohne die VDD+0.5V beim ATmega zu überschreiten. Dann gewinnt man etwas 
Störabstand.
Gast #6447823
Lesenswert?

Vielen Dank für die vielen und teilweise sehr ausführlichen Antworten!

Stefan ⛄ F. schrieb:
> Oder man betreibt das Display mit 3,3V und legt eine negative
> Konstrastspannung im Bereich 0 bis -2V anstelle des sonst üblichen
> Potentiometers an. Diese kann man mit PWM und einer Dioden/Kondensator
> Kombination erzeugen.

Ich musste schmunzeln, clevere Idee! :)


Also, habe hier noch einige Exemplare BS170 zur Hand. Die müsste man ja 
eigentlich für die Pegelwandlung nehmen können.
Deshalb habe ich aus dem Link oben einen Schaltplan zusammengestrickt 
mit den Anschlüssen für den BS170.
Vielleicht kann noch mal jemand drübergucken, ob das so ok ist, bevor 
ich es zusammenbaue.
Angehängte Dateien:
#6447885
Lesenswert?

Falk B. schrieb:
> Nein, die Threshold Voltage ist zu hoch. Nimm einen BSS138 oder ähnlich.

mag sein, aber 25 Stk. BS170 über ebay bestellt bis jetzt keine 
Probleme.
So groß scheint die Nichtfunktionsgefahr nicht zu sein!

Bevor ich zu den kleinen Modulen wechselte, denn für eine WS2812B 
Ansteuerung vom ESP32 war mir das Modul zu groß, wer natürlich noch I2C 
zu 5V benötigt und WS2812B ansteuern mag ist mit den Modulen besser 
bedient

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren