I2C 3,3 und 5 Volt Devices mit Sparkfun Pegelwandler

  • Hallo zusammen,
    bevor ich Euch mit meinen Fragen fordere möchte ich Euch als Newbie im Forum herzlich begrüßen :exclamation:
    Vielleicht bekommen wir das Eine oder Andere Problemchen zusammen gelöst.

    Seit geraumer Zeit, hänge ich an einem I2C-Problem. Ich bastle gerade an einer Aquaruim-Steuerung und habe mich dadurch für den I2C-Bus entschieden.
    Ich verwende das LCD-Modul 2004 von EXP-Tech und die HSRel5 - I²C-Bus-Relaisplatine von CCTools. Beide haben einen Signalpegel von 5 Volt.
    Bis jetzt verwendete ich Pull-Up Wiederstände um den Pegel zu wandeln. Nachdem ich den Temperatursensor TMP102 direkt an die 3,3 Volt Leitung mit an den Bus gehängt habe,
    verschwand das Relaismodul bei der Kontrolle im i2cdetect obwohl der Adressbereich weit auseinander liegt.

    OK, dachte ich mir, die vertragen sich nicht gemeinsam auf dem Bus, kaufst Du Dir einen Logik-Level-Konverter von Sparkfun um das Problem eventuell zu umgehen.
    Nur das hat leider nichts geholfen. Temperatursensor dran - Relaismodul weg. Hat hierzu jemand noch eine Idee wo ich den Fehler suchen kann?

    Hatte vorher noch einen DS1620 Temperatursensor ohne Probleme parallel an der Leitung. Komisch das es mit dem TMP102 nicht funktioniert.

    Für Eure Antworten vielen Dank im Voraus!

    Viele Grüße,
    Helle62

  • I2C 3,3 und 5 Volt Devices mit Sparkfun Pegelwandler? Schau mal ob du hier fündig wirst!

  • Wo hast Du überall PullUp-Widerstände sitzen?
    Der PI hat selbst welche gegen 3,3Volt. Mehr brauchst Du nicht, damit ist der Buspegel auf 3,3Volt festgelegt, egal wie die ICs danach versorgt werden.
    Die Relaiskarte hat nach Schaltplan keine Widerstände, von dem LCD-Treiber finde ich nur Bilder. Wenn der auch keine hat brauchst Du keinen Pegelwandler.
    Leider hat der Temperatursensor welche, die zu klein sind (1k). Mit denen vom PI (3,3k) ergeben sich 767Ohm und damit ein Busstrom von 4,3mA. Zulässig sind aber nur maximal 3mA.

    Ich würde jetzt nachsehen ob der Displaytreiber PullUps hat und wenn ja die entfernen und R1 und R2 vom Temperatursensor entfernen. danach kannst Du alles ohne Pegelwandler auf den Bus hängen.

  • Hallo Orb - Super, perfekt - vielen Dank!
    Das war kein Ansatzpunkt zur Fehlersuche sondern die Lösung!

    Ich habe die Widerstände vom TMP102 entfernt und alles ist gut. I2cdetect erkennt nun alle drei Devices.
    Zu dem LCD-Display von Arduino habe ich auch keine Informationen gefunden ob PullUp-Widerstände vorhanden sind. Bei den meisten Berichten werden welche verwendet.
    daraus schließe ich das keine verbaut sind. Messbar ist auch kein Widerstand an den Datenleitungen zu Vcc.

    Schaden kann es doch nicht wenn ich den Pegelwandler eingebaut lasse, oder? Mir ist nicht ganz wohl in der Haut ihn wegzulassen.
    Am liebsten wäre mir ein totale Trennung vom Raspberry zu den externen Modulen.

    Zitat


    Zulässig sind aber nur maximal 3mA.

    Sind das wirklich nur 3mA? Ich habe mal etwas von 50 mA gelesen. Da ich aber auch kein Fachmann dafür bin, kann ich das auch mit etwas anderem verwechseln.

    Nochmals vielen Dank und einen schönen Abend,
    Helle62

  • Zitat von Helle62 pid=6609 dateline=1361829770

    Sind das wirklich nur 3mA? Ich habe mal etwas von 50 mA gelesen. Da ich aber auch kein Fachmann dafür bin, kann ich das auch mit etwas anderem verwechseln.


    Du hast Recht, es sind nicht 3mA Maximum sondern 3mA Minimum die spezifiziert sind. (http://www.nxp.com/acrobat_downlo…98/39340011.pdf)
    Man sollte auch in die Datenblätter sehen und nicht nur auf sein Gehirn vertrauen
    Also: Es sind 3mA minimum nötig um bei maximaler Busauslastung (400pF) noch Fastmode mit 400kBit/s hinzubekommen. Für Highspeed (3,4MBit/s) sind 12mA nötig.
    Maximum ist von den eingesetzten Bauteilen äbhängig, beim Pi sind es 12mA, mehr können die Portpins nicht abführen.

    In der Praxis hab ich allerdings festgestellt, daß der Bus zwischen 1 und 3 mA am stabilsten läuft und man nur an einer Stelle PullUps einsetzen sollte.

    Du kannst auch den Pegelwandler drinlassen. Dabei mußt Du dann aber im Fehlerfall bedenken, daß der auch wieder Pullups mitbringt, allerdings mit 10k relativ große.
    Die Schaltung findest Du übrigens auch in den NXP-Spezifikationen (Seite 43).

    Einmal editiert, zuletzt von orb (26. Februar 2013 um 11:58)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!