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!
Habs gefunden - Stichwort: Open Collector Beitrag "I2C von 5 auf 3,3V drosseln (Pegelwandler,Voltregulator;Dioden.)"
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.
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.
Klaus schrieb: > Sehe gerade, ein Erbsenzähler ist noch wach. Ein MPU ist keine hohe > Buslast und selbst 400kHz ist fast noch Gleichstrom. ;-)
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)?
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
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.
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
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.
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
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 :-)
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.
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
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
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.