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.
Deine eigene Versorgung des Displays hast garantiert die richtige Spannung unter Last?
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
Auf dem Bild sieht es so aus wäre es einfach eine andere Farbe? Sollen Buzzer und WiFi die gleichen Fabren sein?
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) |
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 |
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.
Tippgeber schrieb: > Das könnten auch Einbrenneffekte > sein. sagen wir eher Verbrauchseffekte, OLED verbraucht sich
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.