Forum: Mikrocontroller und Digitale Elektronik ATmega mit 3.3V, daran I2C-Display mit 5V, geht das?


von eddi (Gast)


Lesenswert?

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?

von Joachim B. (jar)


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

von Brain 2.0 (Gast)


Lesenswert?

Das geht, wenn du einen I2C-Levelshifter dazwischen baust.

von Crazy Harry (crazy_h)


Lesenswert?

z.B. den PCA9517

von Wolfgang (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

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

Doch hat er, insbesondere im I²C Modus. Leider darf man dort aber 
trotzdem nicht mehr Spannung anlegen, als VCC.

von c-hater (Gast)


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...

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> 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.

Was leider nicht der Fall ist. Vih(min) ist 0,7 * 5V = 3,5V

von Stefan F. (Gast)


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.

von Wolfgang (Gast)


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.

von Wolfgang (Gast)


Lesenswert?

Wolfgang schrieb:
> 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).

sorry, vertan - k.A. wie sehr so ein PCF8574 im wahren Leben auf diese 
3.5V beharrt oder ob es darunter auch noch geht.

von Falk B. (falk)


Lesenswert?

Mein Gott, ein gescheiter Pegelwandler für I2C besteht aus ZWEI 
kleinen MOSFETs im SOT23 Gehäuse! Da muss man nicht über deren 
Einsparung philosophieren!

von Bidos (Gast)


Lesenswert?

Falk B. schrieb:
> Mein Gott, ein gescheiter Pegelwandler für I2C besteht aus ZWEI
> kleinen MOSFETs im SOT23 Gehäuse! Da muss man nicht über deren
> Einsparung philosophieren!

Konkrete Schaltung?

Danke

von Bidos (Gast)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Bidos schrieb:
> Konkrete Schaltung?
>
> Danke

und warum wieder die Frage? (es wurde alles schon geschrieben, ist deine 
Scrolltaste oder dein Mausrad kaputt?)
Beitrag "Re: ATmega mit 3.3V, daran I2C-Display mit 5V, geht das?"

von eddi (Gast)


Angehängte Dateien:

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.

von Maxim B. (max182)


Lesenswert?

eddi schrieb:
> Also, habe hier noch einige Exemplare BS170 zur Hand. Die müsste man ja
> eigentlich für die Pegelwandlung nehmen können.

PCA9517 macht die Pegel sauberer. Auch SO-8 paßt auf Platine besser als 
zwei TO-92, für die man noch Löcher bohren muß.

von Sebastian S. (amateur)


Lesenswert?

Jain!

Aber da Du für das Display sowieso 5V brauchst, sollten ein Regler (5V 
-> 3.3V) und ein paar Levelshifter reichen.
Letztere kannst Du natürlich auch diskret aufbauen.

von Stefan F. (Gast)


Lesenswert?

Klar, wenn man 5V hat, sollte man sie nutzen.

von Falk B. (falk)


Lesenswert?

eddi schrieb:
> Also, habe hier noch einige Exemplare BS170 zur Hand. Die müsste man ja
> eigentlich für die Pegelwandlung nehmen können.

Nein, die Threshold Voltage ist zu hoch. Nimm einen BSS138 oder ähnlich.

von Joachim B. (jar)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.