OLED: Viele Pixel an = dunkler; Abhilfe?

Gast #5594915
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.
Angehängte Dateien:
#5594997
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.
Gast #5595247
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
Gast #5595271
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?
Gast #5595274
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.
Gast #5595280
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.
Gast #5595385
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.
Gast #5598078
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren