Verschiedene I2C Geräte verwenden

Hallo zusammen,

ich stehe bei meinem Aktuellen Projekt total auf dem Schlauch. Habe mir selbstverständlich schon einiges dazu im Internet angeschaut, aber so wirklich rum gekommen ist dabei nichts.
Es geht im Grunde einfach nur darum zwei I2C Module an einem Arduino Uno zu verwenden. Die beiden Module ist das 3-Achsen Gyroskop mit dem MPU6050 und ein einfaches HD44780 LCD inklusive I2C Modul. Einzeln funktionieren beide Dinge perfekt aber zusammen geht das irgendwie nicht. Ich habe schon etwas über PullUp Widerstände gelesen, der nächste sagt dann aber dass die nicht nötig seien, da auf solchen I2C Modulen diese PullUps bereits verbaut sind, der nächste sagt dann wieder dass man die I2C Adressen der Module ändern muss und so weiter....
Leider blicke ich da nicht ganz durch und hoffe hier einen einfachen Rat zu erhalten.
Vielen dank schon mal!

Du kannst da selbst nachmessen: alles betriebsbereit machen und nit einem Amperemeter den Kurzschlußstrom von SCL bzw. SDA nach GND messen. Bei mehr als 3mA müssen Pullups entfernt werden.

Es geht auch, wenn man die Pullup-Widerstände selbst misst.
Mit einem Widerstandsmessgerät SCL und SDA gegen VCC messen, aber ohne Spannung.
Wenn jeweils 10k drauf sind, macht das kein Problem.

Mit einem I2C-Scanner kannst du die jeweilige Adresse ermitteln.

  1. kontrolliere die I2C Adressen der beiden Module zB Arduino I2C scanner Einzeln und dann beide Module zusammen.

Die I2C Geräte haben als Ausgang einen Transistor, der die Leitung (SDA bzw SCL) auf Masse ziehen kann, also LOW Signal darstellt.
HIGH wird durch Widerstände realisiert, die die beiden Leitungen auf HIGH ( Versorgungsspannung ) zieht. Der Widerstand muß nicht nur auf High ziehen, sondern auch dies in einer gewissen Zeit nach einem LOW Signal machen, damit das nächste LOW gesendet werden kann. Diese Aufladezeit hängt von den Pullupwiderständen aber auch von der Anzahl der I2C Geräte und von der Länge und Kapazität der Verbindungskabel ab.

Zusammenfassend: Pullupwiderstände braucht es immer. Manche Geräte haben Pullupwiderstände auf dem Modul, aber auch der Arduino aktiviert seine internen Pullupwiderstände. Für einige Anwendungen und kurzen Verbindungskabel können die vorhandenen Pullupwiderstände ausreichen, für andere nicht.

Grüße Uwe

In den Beispielprogrammen der Arduino-IDE gibt es einen Sketch namens
I2C_scanner.ino

Schließe nur eines der beiden Module an und lasse dir im seriellen Monitor anzeigen
welche I2C-Adresse das Modul hat.

Es müssen unterschiedliche Adressen sein. Sonst wollen bei gleichzeitigem Anschluss beider Module auch beide antworten.

Ansonsten wäre hilfreich den kompletten Sketch zu posten und die Datenblätter zum LCD und zum MPU6050

vgs

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.