Forum: Mikrocontroller und Digitale Elektronik SSD1306 I2C Problem


von Welle 🧐 S. (w3llschmidt)


Angehängte Dateien:

Lesenswert?

Ich habe ein blödes Problem und keine Ideen mehr :(

Ein 2.4" OLED via I2C am ESP32 (FreeRTOS). Ein bischen Uhr und ein paar 
DS18B20.

Das Display funktioniert ein paar Sekunden und fängt dann an Müll zu 
produzieren.

Der BUS schein ok zu sein, was mich wundert sind die 8.2khZ?

Hat jemand eine Idee???

von Johannes S. (Gast)


Lesenswert?

im Aufbau sind keine PullUp R zu sehen, sind die auf dem Display Board? 
Sonst mal zwei 2k2 R anklemmen.

von Welle 🧐 S. (w3llschmidt)


Angehängte Dateien:

Lesenswert?

Hi Johannes,

ja, danke! Ich hatte ich schon probiert. 4,7k  2k  1k - keine 
Besserung.

Komischerweise ändert sich das I2C Signal mit den PullUps auch nicht. 
SDA und SCL liegen wenn nichts kommt bretthart auf 3,3V - die daten 
ziehen dann den Pegel auf Ground. Das sollte ok sein?!

ratlos

Nachtrag: PullUps scheinen auf dem Board schon drauf zu sein.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Die gelbe Linie ist aber kein I2C Signal oder? Wenn ja, dann stimmt dort 
was nicht.

Ich sehe, dass du die Stromversorgung über das Steckbrett verteilst. 
Löte stattdessen mal Drähte direkt an die Module an. Die stark 
schwankende Stromaufnahme des ESP Moduls zusammen mit den 
Übergangswiderständen der Steckbrett-Kontakte kann hier der Knackpunkt 
sein.

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Stefan U. schrieb:
> Die gelbe Linie ist aber kein I2C Signal oder? Wenn ja, dann stimmt dort
> was nicht.

Hi Stefan, doch, doch oben ist SCA unten SCL. Ok, die Stufe sieht 
komisch aus, hast recht.

> Ich sehe, dass du die Stromversorgung über das Steckbrett verteilst.
> Löte stattdessen mal Drähte direkt an die Module an. Die stark

Hmm, ok -  kann ich das vielleicht lieber mitm Elko puffern?

> schwankende Stromaufnahme des ESP Moduls zusammen mit den
> Übergangswiderständen der Steckbrett-Kontakte kann hier der Knackpunkt
> sein.

Guter Hnweis! Mir viel auf: um so mehr ich darstelle, um so mülliger 
wird die Anzeige!

Wenn ich nur die Uhr laufen lassen, ist es relativ stabil.

von Stefan F. (Gast)


Lesenswert?

> kann ich das vielleicht lieber mitm Elko puffern?

Auf deinem Board müsste bereits ein Elko mit 47 bis 470µF drauf sein. 
Der hilft, aber nur wenn die Stromversorgung schon einigermaßen stabil 
ist.

Ich konnte mit einem Elko einen Ausfall pro Woche auf 0 pro Jahr 
reduzieren.

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Stefan U. schrieb:
> Löte stattdessen mal Drähte direkt an die Module an.

Gesagt, getan ... GND,VCC direkt vom Netzteil an das Display gelötet, 
keine Änderung :(

von Stefan F. (Gast)


Lesenswert?

Ich meinte eher, dass die Stromversorgung von deinem ESP Modul 
verbessert werden soll.

von Schlaat Plaan Lääsa (Gast)


Lesenswert?

Stefan U. schrieb:
> Auf deinem Board müsste bereits ein Elko mit 47 bis 470µF drauf sein.
> Der hilft, aber nur wenn die Stromversorgung schon einigermaßen stabil
> ist.
>
> Ich konnte mit einem Elko einen Ausfall pro Woche auf 0 pro Jahr
> reduzieren.

Ich unterstütze deine Hinweise, jedoch bleibt - wie so oft -
auch hier darauf hinzuweisen dass Steckbrettbauer auf diesem
Ohr sehr schlecht hören. Oft können sie diese sprachfremden
Texte auch gar nicht lesen, geschweige denn verstehen.

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Schlaat Plaan Lääsa schrieb:

Geh einfach weiter ...

: Bearbeitet durch User
von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Stefan U. schrieb:
> Ich meinte eher, dass die Stromversorgung von deinem ESP Modul
> verbessert werden soll.

Leider keine Verbesserung, ich habe den ESP32 und das OLED jeweils 
direkt an einem eigenen Netzteil gehabt, gelötet.

Ich versuche mal die I2C lib zu tauschen, die die ich aktuell benutze 
macht wohl nur Bitbanging. Der ESP32 muss das ja auch nativ können.

von Klaus (Gast)


Lesenswert?

Auf dem 3.Bild ist klar zu erkennen, daß der SSD1306 (der wohl eher ein 
SSD1309 ist) SDA beim ACK nicht richtig auf Low bekommt. Das könnte 
darauf hindeuten, daß der Pullup zu klein ist. Ich würd auch noch mal 
kontrollieren, ob R13 auch wirklich 0Ω ist, das Signal auf beiden Seiten 
identisch ist. Ich hatte da mal ein Problem und hab ihn durch eine 
Drahtbrücke ersetzt.

MfG Klaus

von Stefan F. (Gast)


Lesenswert?

> Das könnte darauf hindeuten, daß der Pullup zu klein ist.

Das dachte ich auch spontan, andererseits sieht man auf dem Foto 
deutlich 4,7k Ohm Widerstände. Und das ist ganz sicher nicht zu wenig.

Stelle mal dein Multimeter auf den 200mA Bereich und schließe es an SDA 
und GND an, während der ESP nicht mit dem Display kommuniziert. Das 
Multimeter müsste einen Strom von 0,7mA Anzeigen. Wenn das nicht der 
Fall ist, hängt noch irgend etwas an den Leitungen, was da nicht hin 
gehört.

Denkbar wäre auch ein Softwarefehler. In der fraglichen Zeit müsste er 
die SDA Leitung entweder als Eingang konfigurieren oder sie muss die 
ganze Zeit lang als Open-Drain Ausgang konfiguriert sein.

pinMode(scl_pin, OUTPUT_OPEN_DRAIN);

Wenn das nicht so ist, zieht der ESP sie vielleicht aktiv auf High 
während das Display sie zugleich auf Low zieht (Kurzschluss).

von Welle 🧐 S. (w3llschmidt)


Angehängte Dateien:

Lesenswert?

Es ist die Library!!! Oh, man ...

Damit läuft es 1A.

https://github.com/yanbe/ssd1306-esp-idf-i2c

Danke für eure Tips!

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

W3ll S. schrieb:
> Es ist die Library!!! Oh, man ...

Wie sehen denn jetzt die Signale aus, ist das Problem auf der SDA 
Leitung jetzt weg?

MfG Klaus

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
Noch kein Account? Hier anmelden.