Forum: Mikrocontroller und Digitale Elektronik Problem mit 128x64-OLED und Kontrast-Befehl


von Olaf (Gast)


Lesenswert?

Ich habe seltsame Probleme mit dem Kontrast-Befehl (der in Wirklichkeit 
ein Helligkeits-Befehl ist) von 0.96"-OLED-Diplays. Ich meine die 
128x64-Displays mit SSD1306:

Wenn man diesen Befehl schnell wiederholt (z.B. weil es einen 
Kontrast-Menupunkt gibt, der von einem Rotary Encoder bedient wird), 
schleichen sich Fehler in die Darstellung des OLED ein. Dann erscheint 
beispielsweise die letzte Zeile an der Stelle der ersten Zeile - und 
zwar dauerhaft bis zum nächsten Display-Reset.

Das ist mir mehreren Display reproduzierbar. Wenn ich grössere Pausen 
einfüge (z.B. 100ms), wird es weniger, aber das Riskio bei der Verwedung 
dieses Befehehls verschwindet nie ganz. Wenn ich spekulieren müsste, 
würde ich vermuten, dass das was mit der Ladungspumpe zu tun hat, 
vieleicht bricht beim Helligkeitswechsel lokal die Spannung ein? Ich 
habe einen 10uF direkt am Display.

Ich kann mir in meinem Code eigentlich keinen Fehler vorstellen, da 1. 
alles andere (Zeichnen) funktioniert und 2. dieser Befehl bei langsamer 
Ausführung äusserst selten Problem macht.

Hat jemand so etwas schon mal erlebt?

von Olaf (Gast)


Lesenswert?

> Ich kann mir in meinem Code eigentlich keinen Fehler vorstellen,

Das sagen sie alle. :)

Wie sieht denn die Qualitaet deiner SPI oder I2C signale auf dem Oszi 
aus? Gibt es eine Mindestwartezeit die du einhalten musst?

Ich selbst hatte mit so einem Display bisher noch keine Probleme. 
Allerdings gebe ich die Helligkeit auch nur einmal einstelle.

Macht es einen Unterschied ob du zwischen zwei geringen 
Helligkeitsleveln umschaltest oder zwischen zwei Leveln mit einem 
grossen Unterschied in der Helligkeit?

Olaf

von Olaf (Gast)


Lesenswert?

> Wie sieht denn die Qualitaet deiner SPI oder I2C signale auf dem Oszi
aus?

Es ist Hardware-SPI mit 5V-20MHZ-AVR. Ich habe kein Oszi. Die 
Signalqualität ist sicher nicht gut, da die Silikonlitzen 50cm 
unabgeschirmt durch die Luft gehen. Flachkabel oder abgeschirmtes Kabel 
kommt nicht in Frage, da es um einen heißen Ofen geht und 
hitzebeständiges Flachkabel unbezahlbar ist. Wenn ich die OLED-Litzen 
anfasse, kann ich Störungen provozieren. Egal ob das OLED mit ca. 10MHz 
oder der Hälfte oder einem Viertel davon läuft. Aber wenn es daran 
liegt, sollte doch nicht nur ein einzelner, spezieller Befehl gestört 
werden. Immerhin aktualisiere ich das Display fehlerfrei alle 40ms 
(25fps), kann es ein- und ausschalten, Befehle zum Setzen der 
Ausgabeposition setzen und die ganzen Befehle zum Initialisieren senden.

> Allerdings gebe ich die Helligkeit auch nur einmal einstelle

Das Problem habe ich auch erst bemerkt, als ich auf einen Drehencoder 
umgestiegen bin und es plötzlich möglich war, den Kontrast schnell zu 
ändern.

> Gibt es eine Mindestwartezeit die du einhalten musst?

Laut SD1306-Doku nicht. Zum OLED-Modul insgesamt habe ich kein 
Datenblatt.

> Macht es einen Unterschied ob du zwischen zwei geringen Helligkeitsleveln 
umschaltest oder zwischen zwei Leveln mit einem grossen Unterschied in der 
Helligkeit?

Nicht getestet. Ich habe aber den Eindruck, dass es mit hoher Helligkeit 
eher zu Störungen kommt; 1. Wenn ich mit der Hand an das Kabel gehe. 2. 
Wenn ich über einen Wippschalter 230V über zwei 60K an einen Opto auf 
meiner Platine gebe, kann es beim Schaltvorgang zu bleibenden Störungen 
kommen (das Mapping vom RAM zur Anzeige wird anscheinend gestört). Das 
wäre mir das nächste Rätsel: Wie kann ein 230V-Schaltvorgang mit einem 
Strom von weniger als 2mA ein OLED in ca. 20cm Entfernung stören? Das 
einzige was mir dazu einfällt ist, dass neben dem Opto noch das 
Neon-Lämpchen im Wippschalter eingschaltet wird.

von Olaf (Gast)


Lesenswert?

> wäre mir das nächste Rätsel: Wie kann ein 230V-Schaltvorgang mit einem
> Strom von weniger als 2mA ein OLED in ca. 20cm Entfernung stören?

Weil dein ganzer Aufbau so klingt als wenn er ziemlich uebler Mist waere 
der sowieso nur zufaellig laeuft. Ausserdem kann es sein das bereits 
alle Amateurfunker und Radiohoerer in deiner Nachbarschaft die Messer 
schaerfen. Pass auf wenn es bei dir an der Tuer klingelt. :-)


Mach mal direkt am Oled eine Serienschaltung von 100R+100pF an die 
SPI-CLK und die Datenleitung gegen GND und dann schau mal ob es besser 
wird.

> Egal ob das OLED mit ca. 10MHz oder der Hälfte oder einem
> Viertel davon läuft.

Die Uebertragungsrate ist irrelevant. Was zaehlt ist die Anstiegszeit 
der Signale. In den Flanken sind die Frequenzen versteckt, nicht in den 
Pausen zwischen den Flanken. Bessere (floet) Microcontroller erlauben es 
das du die Anstiegzeit/Treiberstrom einstellst. Das koennte auch eine 
Besserung bringen und haette dann vielleicht die Folge das du die 
Datenrate vermindern musst.

Wenn du so die Datenuebertragung in den Griff bekommst dann kannst du 
danach schauen ob du noch immer ein Problem mit der Helligkeit hast.

Olaf

von Olaf (Gast)


Lesenswert?

> Mach mal direkt am Oled eine Serienschaltung von 100R+100pF an die
SPI-CLK und die Datenleitung gegen GND und dann schau mal ob es besser
wird

Ich glaube so langsam driften die Antworten für mich in's Nutzlose. Der 
Kontrast-Befehl ist der einzige Befehl, der bei schneller Wiederholung 
(eigentlich gar nicht so schnell: mehrere 10ms Pause dazwischen) dieses 
Problem erzeugt. Ansonsten sende ich zigtausend Bytes und Befehle pro 
Sekunde stundenlang ohne erkennbares Probleme an das OLED (solange man 
nicht in das Kabebündel greift und damit herumspielt). Damit kann es mit 
ein bisschen Logik IMHO nicht an Reflexionen liegen. Davon wäre jede 
Datenübertragung betroffen. Pads für die AC-Terminierung sind im übrigen 
drauf, weil ich sie beim Vorgänger-Modul mit EA-LCD gebraucht hatte - 
aber ich bestücke sie nicht, weil die Funktion damit schlechter war 
(wenn ich mich richtig erinnere, ging damit gar nichts mehr, aber die 
erste Inbetriebnahme mit diesen Komponenten ist schon zu lange her). 
Getestet mit 68K und 150pF. An SCK, an MOSI; an beidem. Statt dessen 
verwende ich mittlerweile 4K7-Serienwiderstände in CLK, MOSI und RESET 
unmittelbar vor dem OLED - die haben die Stabilität verbessert. 
Besonders der 4K7 in der Resetleitung (was wohl daran liegt, dass diese 
OLEDs einen 3,3V-Chip enthalten, der nicht 5V-tolerant ist, aber als 
5V-OLEDs verkauft werden - ohne Pegelwandler in der Reset-Leitung: die 
Clamping-Diode soll es wohl richten).

Was das seltsame 230V-Problem betrifft: Die Schaltung befindet sich in 
einem Ofen. Von 3 SSR werden hohe Ströme (>6A) mehrmals pro Minute sowie 
ein kleiner Motor geschaltet. Null Probleme. Nur die lausige 
2mA-Steuerleitung, mit der nur die Stellung eines Schalters von einem 
Opto ausgewertet wird, der zur Zeit keinerlei 230V-Verbraucher schaltet, 
stört das OLED. Die einzige Besonderheit dieses Schalters ist die 
Neon-Lampe. Kann es sein, dass solche Lämpchen beim Zünden Störimpulse 
erzeugen?!

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.