Forum: Mikrocontroller und Digitale Elektronik I2C ohne Pegelwandler


von Telko (Gast)


Lesenswert?

Hallo,

habe verschiedenen Sketches zum z.B. MPU6050 + Arduino gefunden. 
Bezüglich dem I2C Bus habe ich eine verständnisfrage. Im Sketch 
(http://images.google.de/imgres?imgurl=http%3A%2F%2F42bots.com%2Fwp-content%2Fuploads%2F2014%2F03%2FMPU6050-Arduino-Uno-Connections.jpg&imgrefurl=http%3A%2F%2F42bots.com%2Ftutorials%2Farduino-uno-and-the-invensense-mpu-6050-6dof-imu%2F&h=328&w=572&tbnid=aYdLEZXuSar_0M%3A&docid=JNmBbXz6N_PvvM&ei=RZWyVrrdA8uNsgHzhLuoBg&tbm=isch&iact=rc&uact=3&dur=1140&page=1&start=0&ndsp=15&ved=0ahUKEwj6k7Sx59zKAhXLhiwKHXPCDmUQrQMIHTAA) 
wurde geschrieben "Based on what I have read online and what I saw on my 
tests, the 3.3V SDA / SCL lines of the IMU work fine connected directly 
to the corresponding Arduino 5V I2C pins. If you want to be absolutely 
safe, you could use a level shifter, voltage divider, or an inline 10k 
resistor to protect the MPU6050 I2C lines. I opted for simplicity over 
safety, in my set-up and (so far) all is well." Mir ist leider jetzt 
überhaupt nicht verständlich, warum wird der MPU nicht durch den 
5V-Spannungspegel vom Ardunio beschädigt?

Danke Euch!

von Telko (Gast)


Lesenswert?


von Nobody (Gast)


Lesenswert?

Telko schrieb:
> warum wird der MPU nicht durch den
> 5V-Spannungspegel vom Ardunio beschädigt?

Ohne den das gelesen zu haben.....

Wenn die Pullups gegen 3,3V gezogen werden, dann kommen nie 5V auf die 
Leitung.
Aber: die 3,3V reichen nur knapp über die Schaltschwelle eines 5V AVR.

Also, für hohe Buslast, oder/und hohe Frequenzen ist das nix.

von Klaus (Gast)


Lesenswert?

Warum sollten SCL oder SDA auf 5V gehen? I2C Signale sind Open-Collector 
Signale. Das High entsteht rein durch die Pullups. Binde ich diese an 
3,3V, z.B. die Versorgung des Sensors, kommen auch nicht mehr als 3,3V 
vor. Die Frage ist dann nur, ob der 5V Chip die 3,3V als High erkennt. 
Auch wenn Erbsenzähler gern auf das Datenblatt verweisen, in der Praxis 
reicht das.

Benutze ich die internen Pullups des 5V Prozessors, dann sind die 
relativ hochohmig. Sie schaffen es daher nicht, gegen die Substratdioden 
der MPU die Signale signifikant über 3,3V zu ziehen. Je nach Chip können 
die 5mA bis 20mA vertragen. Bei 30k und (5-3,3)V fließt da nicht 
wirklich viel.

MfG Klaus

Sehe gerade, ein Erbsenzähler ist noch wach. Ein MPU ist keine hohe 
Buslast und selbst 400kHz ist fast noch Gleichstrom.

von Nobody (Gast)


Lesenswert?

Klaus schrieb:
> Sehe gerade, ein Erbsenzähler ist noch wach. Ein MPU ist keine hohe
> Buslast und selbst 400kHz ist fast noch Gleichstrom.

;-)

von Telko (Gast)


Lesenswert?

Klaus schrieb:
> Warum sollten SCL oder SDA auf 5V gehen? I2C Signale sind Open-Collector
> Signale. Das High entsteht rein durch die Pullups. Binde ich diese an
> 3,3V, z.B. die Versorgung des Sensors, kommen auch nicht mehr als 3,3V
> vor. Die Frage ist dann nur, ob der 5V Chip die 3,3V als High erkennt.
> Auch wenn Erbsenzähler gern auf das Datenblatt verweisen, in der Praxis
> reicht das.

Wenn ich das richtig verstanden habe, dann liefert das Arduino Board 
überhaupt nicht automatische die 5V-Bus-Versorgungsspannung!?

Jetzt muss ich nachfragen :-) nehme ich jetzt zum Beispiel einen 
MPU(http://www.sainsmart.com/zen/documents/20-011-926/MPU-6050/GY521mpu-6050/MPU6050-V1-SCH.jpg) 
+ 
BMP(http://www.haoyuelectronics.com/Attachment/GY-65/GY-65-SCH.jpg)(Beide 
liefern die Versorgungsspannung für den I2C Bus) dann fließt dort ein 
Ausgleichstrom, zwischen beiden Spannungsquellen (falls sie es 
vertragen)?

von Joe F. (easylife)


Lesenswert?

Klaus schrieb:
> Auch wenn Erbsenzähler gern auf das Datenblatt verweisen, in der Praxis
> reicht das.

Richtig so. Erbsenzähler. Datenblätter sind für Pussies...
Furane beim Grillen? Professorengeschwätz! Die Wurst hat immer schon 
geschmeckt.

: Bearbeitet durch User
von Nobody (Gast)


Lesenswert?

Telko schrieb:
> Wenn ich das richtig verstanden habe, dann liefert das Arduino Board
> überhaupt nicht automatische die 5V-Bus-Versorgungsspannung!?
Einige 5V Arduino Boards haben 5V Pullups.
Damit grillst du deinen 3,3V Sklaven.(vermutlich/vielleicht)

Tipp:
Pegelwandler sind nicht ohne Grund erfunden worden.

Du hast 3 Möglichkeiten/Chancen/Risiken:
1. Es tuts
2. Ein Slave(oder beide) werden gegrillt
3. Von sporadischen Datenfehlern bis zum totalem Versagen




Klaus schrieb:
> Ein MPU ist keine hohe
> Buslast
Jetzt sinds schon 3 auf dem Bus.

von Gerhard O. (gerhard_)


Lesenswert?

Das I2C Pegelwandlungkonzept nach Philips funktioniert einwandrei und 
braucht nur zwei billige MOSFETS und zwei extra Pullup Widerstände. 
Damit kann man ohne irgendwelche Nachteile verschiedene 
Betriebspannungen miteinander anpassen. Warum immer alle diese 
grenzwertigen Risiken eingehen? Schaltungen nach professionellen 
Gesichtspunkten konzipiert geben meist weniger Nackenschläge aus.

Hier ist das ganz gut beschrieben:

https://www.adafruit.com/datasheets/an97055.pdf

http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter

Ich verwende diese  Schaltung in meinen Projekten oft und es 
funktioniert absolut einwandfrei.

BSS138 sind gut geeignet.

Mfg,
Gerhard

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Nobody schrieb:
> Einige 5V Arduino Boards haben 5V Pullups.
> Damit grillst du deinen 3,3V Sklaven.(vermutlich/vielleicht)

"Vermutlich" und "vielleicht" sind keine guten Ratgeber. "Manchmal" wäre 
allenfalls geeignet, um ein Fehlerbild zu beschreiben ;-)

Dir scheint überhaupt nicht ganz klar zu sein, wie "grillen" 
funktioniert - jedenfalls bestimmt nicht, indem du einen 3V3-Slave an 
einen 5V I2C-Bus hängst. Der Eingang hat u.a. seine Eingangsschutzdiode 
nach +3.3V, d.h. so ab 3.8V fängt die an zu leiten. Bei einem Pull-up 
von 2,2kΩ nach +5V fließen dann knapp 600µA.

Und jetzt sag mir mal, welche Diode bei 600µA die Empfindung hat, auf 
dem Grill zu liegen.

von Klaus (Gast)


Lesenswert?

Wolfgang schrieb:
> Und jetzt sag mir mal, welche Diode bei 600µA die Empfindung hat, auf
> dem Grill zu liegen.

Richtig. Und ich würde gerne mal eine Messung sehen, bei der ein 5V CMOS 
Eingang 3,3V nicht als high erkennt.

Und da es hier ziemlich offensichtlich nicht um das Design eines 
Massenproduktes geht ...

MfG Klaus

von WehOhWeh (Gast)


Lesenswert?

Klaus schrieb:
> Warum sollten SCL oder SDA auf 5V gehen? I2C Signale sind
> Open-Collector
> Signale. Das High entsteht rein durch die Pullups. Binde ich diese an
> 3,3V, z.B. die Versorgung des Sensors, kommen auch nicht mehr als 3,3V
> vor. Die Frage ist dann nur, ob der 5V Chip die 3,3V als High erkennt.
> Auch wenn Erbsenzähler gern auf das Datenblatt verweisen, in der Praxis
> reicht das.

Na, dann lesen wir mal das hier:
https://de.wikipedia.org/wiki/RC-Glied

Und dann berechnen wir mal, wass eine Schaltschwelle von 3,2V bei einer 
Versorgung von 3,3V eigentlich für die Schaltverzögerung bedeutet, die 
wegen der parasitären Kapazitäten im Bus auftritt.

Und dann denken wir mal drüber nach, was das für das Timing bedeutet, 
und kucken uns mal die Setup-und Holdzeiten im Datenblatt der 
beteiligten Busteilnehmer an.

Weiteren interessanten Lesestoff könnte man unter dem Suchbegriff 
"Störabstand" finden. Da könnte man sich beispielsweise überlegen, was 
es für die Zuverlässigkeit bedeuten könnte, wenn man nur 100mV 
einkoppeln muss, um das ganze System in den Limbus zu befördern :-)

von Sascha (Gast)


Lesenswert?

Nobody schrieb:
> Telko schrieb:
>> warum wird der MPU nicht durch den
>> 5V-Spannungspegel vom Ardunio beschädigt?
>
> Ohne den das gelesen zu haben.....
>
> Wenn die Pullups gegen 3,3V gezogen werden, dann kommen nie 5V auf die
> Leitung.
> Aber: die 3,3V reichen nur knapp über die Schaltschwelle eines 5V AVR.
>
> Also, für hohe Buslast, oder/und hohe Frequenzen ist das nix.

AVR Datenblatt sagt 0,7*Vcc, das wären in dem Fall 3,5V. Ist also reines 
Glück wenn die Bits auf dem Bus richtig erkannt werden.

von Michael U. (amiga)


Lesenswert?

Hallo,

ganz praktisch schalten die AVR mit etwas Offset bei Ub/2, also bei ca. 
2,5V wie es bei CMOS so üblich ist. Ganz praktisch waren meine AVr 
bisher mit den H-Pegeln von 3,3V-Quellen immer zufrieden. Auch bei SPI 
von SD-Card mit maximalem SPI-Clock.

Solange es also die übliche Hobby-Bastelei ist, wo nicht das Leben von 
abhängt, sehe die Probleme da nicht.

Das heißt nicht, daß das Datenblatt lügt, man kann sich bei Atmel nicht 
beschweren, wenn es mal nicht klappt. Bei Atmel muß es aber über den 
kompletten Temperatir-/Takt- und Spannungsbereich immer klaüüen. Deshalb 
die 0,7 * Vcc

Gruß aus Berlin
Michael

von Klaus (Gast)


Lesenswert?

Sascha schrieb:
> AVR Datenblatt sagt 0,7*Vcc, das wären in dem Fall 3,5V. Ist also reines
> Glück wenn die Bits auf dem Bus richtig erkannt werden.

Telko schrieb:
> wurde geschrieben "Based on what I have read online and what I saw on my
> tests, the 3.3V SDA / SCL lines of the IMU work fine connected directly
> to the corresponding Arduino 5V I2C pins.

@Telko
Da muß der, der den Text verfasst hat, immer Glück gehabt haben (ne 
Hasenpfote in der Tasche?). Aber möglicherweise hast du als Bastler ja 
auch soviel Glück (immer schön auf Holz klopfen). Bei Zweiflern wie 
Sascha wird das natürlich nichts nützen.

nothing for ungod

MfG Klaus

von Nobody (Gast)


Lesenswert?

Wer Schaltungen auf "Glück" aufbaut und dieses dann als den "Wahren 
Jakob" weiter empfiehlt, gehört geteert und gefedert.

Michael U. schrieb:
> Solange es also die übliche Hobby-Bastelei ist, wo nicht das Leben von
> abhängt, sehe die Probleme da nicht
Der Arme Hobbybastler....

Liest die Glücksempfehlung und die Schaltung versagt.
Frustration und Hobbyaufgabe....

Was ein Schwachsinn.
Die Zusatzkosten für einen Levelschifter bringen einen wahrlich nicht 
um.

von Sascha (Gast)


Lesenswert?

Also für nen BMP180 hab ich letztens den 1 BJT Minimallevelshifter 
gebaut, der ist ja peinlich einfach.

Und warum soll man auf gutmütiges Verhalten hoffen wenn man es ganz 
einfach erzwingen kann. Das ist Elektronik hier und nicht gewaltfreies 
Töpfern mit Sieglinde.

von Joe F. (easylife)


Lesenswert?

Nobody schrieb:
> Liest die Glücksempfehlung und die Schaltung versagt.
> Frustration und Hobbyaufgabe....
>
> Was ein Schwachsinn.
> Die Zusatzkosten für einen Levelschifter bringen einen wahrlich nicht
> um.

Sascha schrieb:
> Also für nen BMP180 hab ich letztens den 1 BJT Minimallevelshifter
> gebaut, der ist ja peinlich einfach.
>
> Und warum soll man auf gutmütiges Verhalten hoffen wenn man es ganz
> einfach erzwingen kann. Das ist Elektronik hier und nicht gewaltfreies
> Töpfern mit Sieglinde.

Volle Zustimmung euch beiden.

Dazu kommt, dass man nicht darauf vertrauen sollte, dass die 
Schutzdioden des Slaves die 5V auf 3.3V runterbringen.
Was ist denn, wenn das 3.3V Supply nicht niederohmig ist (disabled, oder 
abgestöpselt)?

Dann liegen am Slave 5V an, die werden auf die 3.3V Rail weitergeleitet 
und durch die 2 parallelen 2.2K können dann auch bis zu 4.5mA fließen.
Als harmlos würde ich das nicht bezeichnen.

von Andi B. (Gast)


Lesenswert?

Ich habe schon mehrfach die Erfahrung machen müssen (mit Schaltungen 
welche nicht von mir entwickelt wurden ;-)), dass Ströme über die 
internen Schutzdioden Funktionen eines µC beeinträchtigen können. Und 
zwar in ganz anderen Peripherieteilen. Von "falschen" Meßwerten vom ADC 
bis zu sporadischen UART Bitfehlern. Nur so als Hinweis, dass zwar fast 
überall Schutzdioden drinnen sind, aber diese niemals im Normalbetrieb 
zum Leiten gebracht werden sollten. Außer unwissende Bastler und 
Masochisten macht das keiner.

I²C Schutzdioden - gerade da dürften im IC diese NICHT drinnen sein. 
Zumindest nicht die primitive "Diode auf VCC" Variante. Eine I²C 
Anforderung ist nämlich auch, dass ein nichtversorgter Busteilnehmer den 
Bus nicht stören darf. Also wenn der Hersteller seine Hausaufgaben 
gemacht hat, dann ist an den I²C Pins KEINE simple Diode gegen VCC. Eher 
irgendwas was bei >5V leitend wird. Zugegeben, dies beachtet nicht jeder 
Möchtegern-µC Hersteller und schreibt trotzdem I²C rein.

von (prx) A. K. (prx)


Lesenswert?

Bei Anmeldung steht kein I2C drin.

von Wolfgang (Gast)


Lesenswert?

Andi B. schrieb:
> Ich habe schon mehrfach die Erfahrung machen müssen (mit Schaltungen
> welche nicht von mir entwickelt wurden ;-)), dass Ströme über die
> internen Schutzdioden Funktionen eines µC beeinträchtigen können.

Es macht sicher einen Unterschied, ob man da 100µA drüber schickt oder 
versucht, eine Schaltung hinten rum mit 100mA zu versorgen.

Selbst Atmel nutzt die Schutzdioden als stromdurchflossenes Bauelement 
und hat offensichtlich keine Sorgen, dass sich der µC deswegen 
ungebührlich benimmt.

Guck dir mal die App-Note AVR182 an.

von Nobody (Gast)


Lesenswert?

Wolfgang schrieb:
> Selbst Atmel nutzt die Schutzdioden als stromdurchflossenes
Das mag bei den recht robusten AVRs gehen.
Aber bei vielen ARMen geht da deutlich weniger.


Was solls...
Man schaut sich das Datenblatt des I2C Partners an!
Steht da 5V Tolerant drin, ist das Thema sowieso abgehakt.

Und steht es da nicht drin, dann gilt der alte Spruch:
> Wenn es dem Esel zu gut geht,
> dann geht er aufs Eis.
Oder er investiert in Levelshifter.

So und damit ist hier auch gut für mich....
Ich habe meinen Part zum Glaubenskrieg beigetragen, mehr kann ich nicht 
tun.
Jeder muss seine eigenen Entscheidungen selber treffen.

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.