Hallo zusammen, Ich habe folgendes Problem: Einerseits habe ich einen Lego Mindstorms NXT Ultraschallsensor - ein I2C Sensor. Dieser hat intern einen 82k Pullup und einen 4k7 Serienwiderstand auf beiden Datenleitungen. Diesen Sensor würde ich gerne mit einem RPI ansteuern. Dieser hat einen 1k8 Pullup an den Datenleitungen. Dazu habe ich noch einen zweiten 4k7 Widerstand in Serie geschaltet als Schutz (den zu brücken löst das Problem nicht). Nun habe in meinen Messungen festgestellt, dass es dem Sensor nicht möglich ist SDA auf Low zu ziehen so das diese Info beim Pi ankommt. Er versucht z.b. seine Adresse zu ACK, kommt aber nicht durch - Fehler bei der Übertragung. Ich habe versucht das zu simulieren und meine Befürchtungen bestätigt (siehe Anhang). Jetzt kann ich leider weder den Pullup noch den Serienwiderstand im Sensor entfernen. Auch am Pi will ich nicht löten. Gibt es eine Möglichkeit das Problem elegant zu lösen?
Evtl. mit einem Philips Levelschifter.
Stefan H. schrieb: > Dieser hat intern einen 82k Pullup und einen 4k7 > Serienwiderstand auf beiden Datenleitungen. Mit so großen Serienwiderständen kriegt man eigentlich jeden Wired-Or Bus kaputt. Da hilft auch kein Levelshifter. Und wenn man sich dann noch die bei I2C zulässigen 400pF zusammen mit 82k Pullups vorstellt, bewegt sich garnichts mehr. MfG Klaus
Stefan H. schrieb: > Gibt es eine > Möglichkeit das Problem elegant zu lösen? Nimm 2 GPIO, an denen kein Pullup dran hängt und mach Bitbanging I²C.
Stefan H. schrieb: > Dieser hat intern einen 82k Pullup und einen 4k7 Serienwiderstand auf > beiden Datenleitungen. Und das soll I2C sein?
Klaus schrieb: > Stefan H. schrieb: >> Dieser hat intern einen 82k Pullup und einen 4k7 >> Serienwiderstand auf beiden Datenleitungen. > > Mit so großen Serienwiderständen kriegt man eigentlich jeden Wired-Or > Bus kaputt. Da hilft auch kein Levelshifter. Und wenn man sich dann noch > die bei I2C zulässigen 400pF zusammen mit 82k Pullups vorstellt, bewegt > sich garnichts mehr. > > MfG Klaus Rufus Τ. Firefly schrieb: > Stefan H. schrieb: >> Dieser hat intern einen 82k Pullup und einen 4k7 Serienwiderstand auf >> beiden Datenleitungen. > > Und das soll I2C sein? Die Sensoren bzw der Bus wurde von den Lego-Ings so entwickelt. Jetzt versuche ich damit klar zukommmen. Die Baudrate ist auch nur 9.6 kHz und das ganze funktioniert im Original auch zuverlässig. Matthias Sch. schrieb: > Stefan H. schrieb: >> Gibt es eine >> Möglichkeit das Problem elegant zu lösen? > > Nimm 2 GPIO, an denen kein Pullup dran hängt und mach Bitbanging I²C. Das ist schon Plan B, ich hoffte es gibt noch einen Plan A.
:
Bearbeitet durch User
Rufus Τ. Firefly schrieb: > Und das soll I2C sein? Wenigstens kann man dann die ggf. am US-Sensor vorhandenen Schutzdioden nicht überlasten, egal wie paddelig man den Sensor verdrahtet.
Stefan H. schrieb: > Wäre ein PCA9515 eigentlich eine Lösung für das Problem? Ja Vorrausgesetzt du kannst den I2C RPi auf kleiner 10 kHz einstellen. Mit den normalen 100 kHz oder gar 400 kHz geht es nicht.
Lattice User schrieb: > Stefan H. schrieb: >> Wäre ein PCA9515 eigentlich eine Lösung für das Problem? > > Ja > > Vorrausgesetzt du kannst den I2C RPi auf kleiner 10 kHz einstellen. Mit > den normalen 100 kHz oder gar 400 kHz geht es nicht. Habs gerade getestet. Funktioniert super. Vielen dank.
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.