Forum: Mikrocontroller und Digitale Elektronik OLED: Viele Pixel an = dunkler; Abhilfe?


von s&c (Gast)


Angehängte Dateien:

Lesenswert?

Bei meinem kleinen OLED sind Zeilen, in denen viele Pixel leuchten (z.B 
invertierte Zeilen) spürbar dunkler. Siehe Bild.

Es ist eines dieser typischen ebay-128x64-Module mit SSD1306/SH1106 für 
5V - mit Nutzung einer Charge-Pump für die Erzeugung der höheren 
Spannungen. Ich nehme einfach mal an, dass diese Charge-Pump (oder der 
3V-Regulator?) bei vielen leuchtenden Pixeln hintereinander in die Knie 
geht.

Weiss jemand, ob man diesen Effekt durch Spielen mit der Initialisierung 
wegbekommt? Im Controller-Datenblatt gibt es Befehle wie "Set 
Dis-charge/Pre-charge Period" und "Set Display Clock Divide 
Ratio/Oscillator Frequency", die sich interessant anhören, aber nicht 
weiter dokumentiert sind.

von Alex G. (dragongamer)


Lesenswert?

Deine eigene Versorgung des Displays hast garantiert die richtige 
Spannung unter Last?

von Joachim B. (jar)


Lesenswert?

Alex G. schrieb:
> Deine eigene Versorgung des Displays hat garantiert die richtige
> Spannung unter Last?

tja, wie sagte mal ein weiser Mann:
"ohne Hafer kann das beste Pferd nicht pupsen."

VCC messen, ggfs. puffern, abblocken, stärkerer Treiber für die VCC 
falls sie aus einem µC Port kommt.

: Bearbeitet durch User
von Zarkov (Gast)


Lesenswert?

Ist nur eine optische Täuschung.

von Andre R. (ltisystem)


Lesenswert?

Auf dem Bild sieht es so aus wäre es einfach eine andere Farbe? Sollen 
Buzzer und WiFi die gleichen Fabren sein?

von Rolf M. (rmagnus)


Lesenswert?

Zarkov schrieb:
> Ist nur eine optische Täuschung.

Dann hat sich die Kamera bei dem Bild aber ziemlich gut täuschen lassen.
Ich würde auch vermuten, dass da irgendwo "die Puste ausgeht", denn was 
man an dem Block mit den vielen hellen Pixeln erkennen kann, ist, dass 
die Pixel von oben nach unten immer dunkler werden. Da liegt auch nicht 
an der Aufnahme, denn das Wort "Cancel" darunter hat wieder etwa die 
selbe Helligkeit wie das Wort "Buzzer".
Auch scheint das Problem stärker zu sein, wenn alle Pixel in einer Zeile 
an sind, denn auch der Strich unter "Setup" ist deutlich dunkler als das 
Wort selbst.

von s&c (Gast)


Lesenswert?

> Auf dem Bild sieht es so aus wäre es einfach eine andere Farbe?

Ist ein einfarbiges Display, der Eindruck einer anderen Farbe kommt von 
der Absenkung der Helligkeit.

> Versorgung des Displays hast garantiert die richtige Spannung unter Last?

Ich bin noch nicht darauf gekommen, das nachzumessen. Die Spannung kommt 
direkt vom Schaltnetzteil (HLK-PM01 5V 0,8A). Da ist sicher ein dicker 
Elko drin. Sie geht über 30cm Kabel zum Display. Am Display hatte ich 
keine Stabilisierung. Jetzt habe ich mal einen 22uF-Elko drangehalten, 
das macht keinen Unterschied.

Dieses Display ist grösser (1,2") als meine bisherigen (0.96"). Neben 
dem kleineren Panel hatten die auch einen anderen Controller (SSD1306) 
als das 1.2"-Display (SH1106). An den kleinen 0,96"-Displays war ein 
10uF-Kerko dran. Mit den kleinen Displays sehe ich den Effekt nicht. 
Gleicher Init:
1
oled_reset();
2
3
oled_command(OLED_COMMAND_DISPLAYOFF);           // display off
4
5
oled_command(OLED_COMMAND_SETVCOMDETECT);        // set VCOMH deselect level
6
oled_command(0x20);                              // ~0.77 x VCC
7
8
oled_command(OLED_COMMAND_SETMULTIPLEX);         // set multiplex ratio to suggested value
9
oled_command(0x3F);
10
11
oled_command(OLED_COMMAND_SETDISPLAYOFFSET);     // set mapping of display start line to 0 (no offset)
12
oled_command(0);
13
14
oled_command(OLED_COMMAND_SETSTARTLINE);         // set display start line to 0
15
16
oled_command(OLED_COMMAND_MEMORYMODE);
17
oled_command(0);                                 // choose horizontal addressing mode (only supported by SSD1306)
18
19
if (DISPLAYRotated)                              // display rotated (upside down)?
20
{
21
        oled_command(OLED_COMMAND_SEGREMAP | 0); // set segment re-map: column address 0 is mapped to SEG0
22
23
        oled_command(OLED_COMMAND_COMSCANINC);   // set COM output scan direction to normal mode: scan from COM0 to COM[N –1]
24
}
25
else
26
{
27
        oled_command(OLED_COMMAND_SEGREMAP | 1); // set segment re-map: column address 127 is mapped to SEG0
28
29
        oled_command(OLED_COMMAND_COMSCANDEC);   // set COM output scan direction to remapped mode: scan from COM[N-1] to COM0
30
}
31
32
oled_command(OLED_COMMAND_SETCOMPINS);           // set COM pins hardware configuration to alternative configuration; disable left/right remap
33
oled_command(0x12);
34
35
oled_command(OLED_COMMAND_SETCONTRAST);          // choose contrast
36
oled_command(OLEDContrast);
37
38
oled_command(OLED_COMMAND_DISPLAYALLON_RAM);     // output follows RAM content
39
40
oled_command(OLED_COMMAND_NORMALDISPLAY);        // non-inverse display
41
42
oled_command(OLED_COMMAND_SETDISPLAYCLOCKDIV);
43
oled_command(0x80);                              // set display clock divider to suggested value
44
45
oled_command(OLED_COMMAND_SETPRECHARGE);
46
47
#ifdef OLED_EXTERNALVCC
48
  oled_command(0x22);
49
#else
50
  oled_command(0xF1);
51
#endif
52
53
oled_command(OLED_COMMAND_CHARGEPUMP);           // charge pump must be enabled by the following commands: 8Dh (charge pump setting), 14h (enable charge pump) and AFh (display ON)
54
55
#ifdef OLED_EXTERNALVCC
56
  oled_command(0x10);
57
#else
58
  oled_command(0x14);
59
#endif
60
61
oled_command(OLED_COMMAND_DISPLAYON);            // turn on oled panel

von s&c (Gast)


Lesenswert?

Wenn man den Kontrast äusserst niedrig setzt (0-10), das Display also 
sehr dunkel ist (bei OLED: Kontrast = Helligkeit), flackert die 
abgedunkelte Zeile.

Das Fehlverhalten auch bei minimaler Helligkeit müsste doch bedeuten, 
dass es eher ein Init-Issue als ein fehlender/unterdimensionierter 
Kondensator ist?

von Stefan F. (Gast)


Lesenswert?

Für mich sieht das so aus, als wären an der Ladungspumpe zu kleine 
Kondensatoren angeschlossen. Oder du hast die Ladungspumpe durch zu 
hohen Strom überlastet. Den Strom (Kontrast) kannst du per Software 
einstellen.

von Stefan F. (Gast)


Lesenswert?

> Wenn man den Kontrast äusserst niedrig setzt (0-10), das Display
> also sehr dunkel ist, flackert die abgedunkelte Zeile.

Der Kontrast wirkt sich auf das ganze Display aus, nicht nur auf eine 
Zeile.

Wenn da etwas flackert, dann würde ich auf zu kleine Kondensatoren, 
instabile Versorgungsspannung oder unerwünschte Schreibzugriffe tippen. 
Normalerweise flackert da im Ruhezustand gar nichts.

> Das Fehlverhalten auch bei minimaler Helligkeit müsste doch bedeuten,
> dass es eher ein Init-Issue als ein fehlender/unterdimensionierter
> Kondensator ist?

Diesen Schluss würde ich nicht ziehen.

von m.n. (Gast)


Lesenswert?

Du könntest auch noch eine durchgehende senkrechte Linie zeichnen 
lassen, um zu sehen, ob das Problem nur bei ganzen Zeilen oder auch bei 
ganzen Spalten existiert.

Ferner könntest Du noch unterschiedlich lange Zeilen zeichen, ob erst ab 
einer bestimmten Länge die Helligkeit abfällt.

von Timmo H. (masterfx)


Lesenswert?

Also ich verwende 2.2µF an C1 und C2 und kann mit einem 1.3" OLED (weiß) 
dieses Phänomen nicht beobachten, habe aber die Platine auch selbst 
gemacht, von daher "namhafte" Kerkos dran.

von Tippgeber (Gast)


Lesenswert?

Wie lange benutzt Du das OLED schon? Das könnten auch Einbrenneffekte 
sein.

von Joachim B. (jar)


Lesenswert?

Tippgeber schrieb:
> Das könnten auch Einbrenneffekte
> sein.

sagen wir eher Verbrauchseffekte, OLED verbraucht sich

von s&c (Gast)


Lesenswert?

> Wie lange benutzt Du das OLED schon? Das könnten auch Einbrenneffekte
sein

Das Display ist einerseits neuwertig (war nur wenige Minuten an) und 
anderseits einige Jahre alt - es lag bis jetzt im Karton, um irgendwann 
mal als Testobjekt mit SH1106 zu dienen Es könnte sein, dass die 
Displays damals schlechter konstuiert waren. Ich kann mich noch grob 
erinnern, dass auch die 0.96"-Displays mal ähnliche Effekte hatten. 
Deshalb hatte ich einen Fortschittsbalken in meiner Firmware auch 
%01010101-gerastert statt solid gemacht (im Menü, mit Text, sieht dass 
aber zu grob aus). Mittlerweile sehe ich den Effekt bei 0.96"-Displays 
nicht mehr.

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.