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.
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.
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.
> 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)
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
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?
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.
> 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.
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.
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.
> 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.