OLED Display Kabel zu lang

Hallo,

ich möchte gerne den Arduino R3 über 6 Tasten und ein OLED-Display stueern, die ca. 2 Meter entfernt vom Arduino angebracht sind.

Wenn ich das mit den kurzen Kabeln am Breadbord teste funktioniert das auch und ich habe eine Anzeig auf dem Display.

Setze ich aber meine 2 Meter Kabellänge dazwischen bleibt das Display schwarz.

Weiß jemand dafür eine Lösung?

Vielen Dank

Michael

noiasca:
Wenn das OLED ein i2c OLED ist - Arduino zum OLED setzen und Tasten absetzen.

Ja, es ist ein i2c OLED. Aber der Sinn ist schon, dass ich Tasten und OLED zusammen habe und2 Meter entfernt vom Arduino.

schneeloch:
Weiß jemand dafür eine Lösung?

Das mit der doch ziemlich langen Strecke wurde ja schon genannt.

Ich würde andere Kabel testen. Z. B. ein Netzwerkkabel zweckentfremden.

Gruß

Gregor

Pullupwiderstände verringern. Aber nicht unter 2,2kOhm.
Eine Kabel mit weniger Leitungskapazität verwenden.
I2X Extender verwenden zB P82B715
I2C Accelerator verwenden
Grüße Uwe

uwefed:
I2X Extender verwenden zB P82B715

Was das ist, konnte ich auf die Schnelle nachsehen.

I2C Accelerator verwenden

Aber was ist das?

Gruß

Gregor

Aber was ist das?

z.B. LTC4311

Ergänzend zu #5: I2C-Busfrequenz senken.

Ein I2C Accelerator ist praktisch ein Transistor den den Bus überhalb einer bestimmten Spannungsschwelle aktiv auf HIGH zieht und bei Erreichen von fast HIGH wieder ausschaltet. Dadurch wird die Leitung schneller HIGH.
Unten Grafik mit Pullup (Sägezahn) und mit Accelerator (Rechteck).

Grüße Uwe

Hallo,

@Uwe und wo kommt das Ding dann hin ? Irgendwo in die Mitte oder ehr auf der Slave Seite ?

Heinz

Hallo an Alle,

vielen Dank für Eure Antworten. Ich hatte mich gestern Abend noch weiter mit dem Thema auseinandergesetzt und auch schon die Lösungsansätze mit dem Netzwerkkabel und dem I2C Extender P82B175 gefunden. Damit soll man sogar Kabellängen bis 100 m realisieren können.
Das mit dem LTC 4311 ist für mich neu. Und von Pullupwiederständen (verringern) hatte ich auch schon etwas gelesen. Aber da ist mir nicht klar, wie das praktisch funktioniert.
Auf jeden Fall bin ich jetzt sicher, dass es eine Lösung gibt und das ist zunächst mal das wichtigste.

Michael

Aber da ist mir nicht klar, wie das praktisch funktioniert.

Die I2C Devices ziehen die Leitungen nur auf Masse (Open Collektor bzw Open Drain Ausgänge). Irgendwie muß die Leitung dann aber wieder auf HIGH. Das macht der Pullupwiderstand. Der muß aber die Leitungskapazität füllen und Strom für die I2C Device-Eingänge liefern. Das sind zwar kleine Kapazitäten (max 400pF zulässig) und kleine Eingangsströme aber der das Laden muß schnell geschehen; Je nach Taktfrequenz auch unter 02µS. Ein kleinerer Widerstand bringt da einfach mehr Strom. Zu klein darf der Widerstand dann aber nicht sein weil die Ausgangstransistoren den Strom über den Pullupwiderstand vertragen müssen.
Ein Accelerator macht das aktiv; ein Extender hat einfach mehr Mum.
Grüße Uwe

@Uwe und wo kommt das Ding dann hin ? Irgendwo in die Mitte oder ehr auf der Slave Seite ?

Ich zwar nicht uwe, aber hier meine Antwort:

Das ist egal.
wichtig ist, das die Bedingungen aus dem Datenblatt eingehalten werden.
Während ein "normaler" Bus pullups nach gutdünken kann (Begrenzung wurde schon genannt), sollte schon ein wenig mitgerechnet werden.
Im Datenblatt (siehe oben) ab Seite 7 gibt es die Application-Infos.

Wichtig ist, das die Kapazitäten nicht ins "unendliche" gehen, damit der dynamische pullup das Signal zeitgerecht aufbereiten kann.

Hi

Sonst hat man sich schnell eines Oszillator gebaut - und Das geht billiger mit einem NE555 :wink:

MfG

Oszillator schließe ich aus. Ich bin kein Elektroniker und auch nicht wirklich ein Programierer. Ich kann nur googeln und zusammensetzen. Mein aktueller Test mit einem 5 Cat_Kabel hat noch keinen Erfolg gebracht. Jetzt bliebe noch die Lösung mit den den Pullups. Aber dafür bräuchte ich einen Schaltplan oder ein Fritzing, weil ich das immernoch nicht verstanden habe.
Danke!
Michael

Pull-UP = Ziehe Hoch
Ein Pull-Widerstand ist, wie der Name vermuten lässt, ein Widerstand, Der die Leitung 'irgendwohin' zieht.
Der 'Up' zieht die Leitung nach Oben - also Vdd, der 'Dn' zieht nach Unten, also GND.

Bei I²C sind die zwei Leitungen SDA und SCL per Pull-UPs nach oben gezogen - die Bus-Teilnehmer können selber die Leitungen NUR nach Unten ziehen (mit GND verbinden).
Diese 'GND-Impulse' sieht dann der andere Teilnehmer (Master oder Slave) und 'liest den Kram mit'.

Um die Pull-UPs zu verkleinern, packst Du irgend welche Widerstände ZUSÄTZLICH auf die zwei Bus-Leitungen nach Vdd.
Egal, wie groß Du diese Widerstände wählst, der sich ergebende Gesamt-Widerstand ist danach kleiner, als vorher (weil durch alle Widerstände, egal wie groß, immer noch Strom durch geht - und die Menge an Strom vergrößert sich durch jeden weiteren parallelen Widerstand).

Nimm Was in der Größe 2k2...4k7...10k0 und stecke Diese von DSA->Vdd bzw SCL->Vdd.
Wenn danach gar Nichts mehr klappt, war der Wert zu gering - also sinnvoll oben anfangen.
Wenn 10K funktioniert, 4k7 vll. noch probieren, aber nicht mehr tiefer.
Wenn erst die 4k7 Erfolg zeigen, kann man noch die 2k2 versuchen - aber man kann hiermit auch unter das Limit drunter kommen - was Dir auch einer der Slaves übel nehmen kann.

MfG

schneeloch:
Ja, es ist ein i2c OLED. Aber der Sinn ist schon, dass ich Tasten und OLED zusammen habe und2 Meter entfernt vom Arduino.

Hallo,

und warum nicht den Arduino dahin wo Display und Taster sind ?

Heinz

postmaster-ino:
Sonst hat man sich schnell eines Oszillator gebaut - und Das geht billiger mit einem NE555 :wink:

Dabei geht es nicht nur um billiger.
Das macht spannende Seiteneffekte.
50cm freier Draht werden zu einer wunderbaren Sendeantenne.

So, mit den 10K Pullups und zwingend Netzwerkkabel funtioniert es jetzt bei mir.

Vielen Dank an alle!

Michael