Vreemd gedrag OLED display

Bavelt

Golden Member

Ik heb voor het tonen van data weer een paar OLED schermpjes (0,96 Inch, SPI) van stal gehaald.

Ten eerste valt me op dat de schermpjes die ik in een tijdschakeling had gebruikt, min of meer zijn ingebrand. Je ziet nl de oude datum/tijd die ooit werd getoond, er vastgebakken in staan.
Branden die dingen zo snel in? Of is dat weer een kwaliteits issue?

Dan nog iets vreemds: af en toe springt de display naar een modus, die de inhoud ondersteboven en in spiegelbeeld toont.
Heel raar.

Is dit wellicht ook een euvel (het verspringen gebeurt vrijwel altijd als de schakeling iets inschakelt (in dit geval een 5V relais).
Overgevoelig?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Is een bekend verschijnsel, na 2 weken dezelfde tekst op een nieuw display zijn de 'aan' pixels denk ik 15% zwakker geworden.
Daarom worden dit soort displaytjes meestal voor maken van instellingen gebruikt: daarna kunnen ze in rust weer uit. (gebruik ik ze ook voor)

Is wat minder te maken door het hele display op 'aan' te zetten voor een week of 2, dan branden alle pixels even ver in.
De fosforlaag op de pixels degradeert gewoon vrij snel, net zoals bij CRT's en afstemogen.

Oled tv schermen hebben er ook last van, daarom draaien die regelmatig een correctieprogramma om de pixels zo goed als mogelijk gelijk te maken.
(dat doen ze door de stroom per pixel anders in te stellen)

Dat gaat ook maar beperkt: als je vaak naar zenders als CNN kijkt brandt het zeer zichtbaar in (bij CNN staat alles op vaste plaatsen op het scherm)

https://img-9gag-fun.9cache.com/photo/aO7A8e3_460s.jpg

Ondersteboven beeld heb ik nog nooit gehad met die 0.96 en 1.3" Oled'jes...
Voor displays waarop lang dezelfde tekst staat kun je beter een grafisch lcd/tft nemen, of een e-paper display (maar die laatste is weer erg traag met updaten)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 17 januari 2023 01:50:15 schreef Bavelt:
Dan nog iets vreemds: af en toe springt de display naar een modus, die de inhoud ondersteboven en in spiegelbeeld toont.

De grafische schermpjes waar ik mee gewerkt heb hadden allemaal een paar bitjes in de instellingen die dit (recht/links, onder/boven wisselen) instellen.

Zet jij die bitjes voor jouw scherm goed?

ondersteboven of roteren is vaak 1 bitje dat je met omzetten. misschien dat die omvalt bij het schakelen.
normaal kan je die enkel instellen bij initialisatie, de storing moet dat tamelijk sterk zijn dat het bitje in het scherm omvalt. zet een een kleine condensator over de voedingsdraden van het display misschien. ik heb het alvast nog nooit gehad dat tijdens gebruik de boel nog wisselt.

voor inbranden van monochroom oled, kan je af en toe het scherm invert gebruiken. bv witte achtergrond met zwarte letters, en daarna weer zwarte letters met witte achtergrond. dan slijten de pixels die altijd zwart zijn, toch weer wat meer

gebruik nu al een aantal jaar oleds in de auto en daar zie ik niks van inbranding

ik hou van werken ..., ik kan er uren naar kijken

Je hebt het over schakelen van een relais.
Deze kunnen bij op en afschakelen rare pulsen opwekken.
Blusdiode? M.a.w diode over relaisspoel.

Arco

Special Member

gebruik nu al een aantal jaar oleds in de auto en daar zie ik niks van inbranding

Als er genoeg 'variatie' in de positie van de weer te geven tekst zit valt het ook niet op. (maar alles wordt wel degelijk zwakker, alle oleds branden in)
Vooral bijv. bij een vaste tekst of een klok (meestal in 00:00:00 format) valt het vrij snel op als je afwijkende tekstposities gaat gebruiken.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

dit zit in mijn auto (wel ingebouwd in een schakelaar behuizing, deze foto is de enige waar de tekst leesbaar is). toont telkens hetzelfde.
van 50liter naar 1liter en weer terug,
de te rijden autonomie,
motor temperatuur,
en accuspanning

http://www.cwad.be/projectpics/digi2c.jpg

vorige display heeft een jaar of 4 gewerkt (auto is weg)
http://www.cwad.be/projectpics/golf-digdash.jpg
http://www.cwad.be/projectpics/golf-klokje.jpg

men volvo had zo een LPG meter. daar staan toch urenlang hetzelfde op hoor
http://www.cwad.be/projectpics/LPG-1b.jpg

ik hou van werken ..., ik kan er uren naar kijken
Arco

Special Member

Zoals gezegd, alle displays worden vrij snel zwakker, hoe meer wisselende tekst, hoe minder het opvalt. Zwakker worden ze allemaal.
@fcapri: is dat trouwens geen TFT display? (2e foto). Op Ali worden veel TFT displays als zijnde Oled aangeprezen...(simpel te zien: wel of geen backlight)

Als je het hele display op wit zet zie je bij oled na een paar weken zeker degradatie...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 17 januari 2023 08:34:18 schreef tuxie:
Je hebt het over schakelen van een relais.
Deze kunnen bij op en afschakelen rare pulsen opwekken.
Blusdiode? M.a.w diode over relaisspoel.

Een diode doe ik er inderdaad altijd over; om de transistor die het relais aanstuurt te beschermen.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Op 17 januari 2023 10:10:08 schreef Arco:
Zoals gezegd, alle displays worden vrij snel zwakker, hoe meer wisselende tekst, hoe minder het opvalt. Zwakker worden ze allemaal.
@fcapri: is dat trouwens geen TFT display? (2e foto). Op Ali worden veel TFT displays als zijnde Oled aangeprezen...(simpel te zien: wel of geen backlight)

Als je het hele display op wit zet zie je bij oled na een paar weken zeker degradatie...

Ik heb iets dergelijks: een kleuren TFT (Oled?) schermpje. Ook SPI, maar ik heb het ding nooit aan de praat gekregen. Bij iedere pixel moet je ook nog eens de kleur aansturen.

Dan wordt het wel wat ingewikkeld lijkt me.

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Je hebt daarvoor in ieder geval een stuk meer geheugen nodig om tekst/afbeeldingen op te slaan (wil je er wat zinnigs mee kunnen doen)
Of het oled is, kun je simpel zien: dan is er geen backlight, bij tft wel... ;)

Gezien de opdruk 'IPS' zal het wel een tft schermpje zijn...

[Bericht gewijzigd door Arco op dinsdag 17 januari 2023 12:50:42 (13%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 17 januari 2023 06:54:37 schreef blurp:
[...]

De grafische schermpjes waar ik mee gewerkt heb hadden allemaal een paar bitjes in de instellingen die dit (recht/links, onder/boven wisselen) instellen.

Zet jij die bitjes voor jouw scherm goed?

Dat wordt geregeld in deze routine:

pic basic code:

'===============================================================================
Sub Procedure Display_Init()
'===============================================================================
  Lcd_WrCmd(0xAF)                                 'Turn OLED panel off
  Lcd_WrCmd(0xA8)                                 'Multiplex ratio set to
  Lcd_WrCmd(0x3F)                                 '63
  Lcd_WrCmd(0xD3)                                 'Display offset RAM counter
  Lcd_WrCmd(0x00)                                 'none
  Lcd_WrCmd(0x40)                                 'Start line address
  Lcd_WrCmd(0xA1)                                 'Set segment remap rotation to left
  Lcd_WrCmd(0xC8)                                 'Common output scan direction
  Lcd_WrCmd(0xDA)                                 'Common signals pad
  Lcd_WrCmd(0x12)                                 'value
  Lcd_WrCmd(0x81)                                 'Contrast control
  Lcd_WrCmd(0xFF)                                 'value
  Lcd_WrCmd(0xA4)
  Lcd_WrCmd(0xA6)                                 'Normal display
  Lcd_WrCmd(0xD5)                                 'Clock ratio:oscillator frequency
  Lcd_WrCmd(0x80)                                 'oooo:rrrr
  Lcd_WrCmd(0x8D)
  Lcd_WrCmd(0x14)
  Lcd_WrCmd(0x00)                                 'Set lower column address
  Lcd_WrCmd(0x10)                                 'Set higher column address
  Lcd_WrCmd(0xD9)                                 '15 clocks, discharge 1 clock
  Lcd_WrCmd(0xF1)                                 'dddd:pppp
  Lcd_WrCmd(0xDB)                                 'Common output voltage
  Lcd_WrCmd(0x40)                                 'level
  Lcd_WrCmd(0x20)                                 'Addressing mode
  Lcd_WrCmd(0x02)                                 'value  
End Sub

Ik zet deze routine nu maar even voor iedere write naar het display.
Niet fraai, maar wellicht 'herstelt' dit een foute modus/status.

En een boel ontkoppel C-tjes van 0,1 uF over de voeding en dicht bij het display gezet.

Wat ik daarnaast ook heb gemerkt: het geheel wordt gevoed uit zo'n goedkope 5V adapter. Die dingen wegen zo ongeveer niks, ik vermoed dat dat geschakelde voedingen zijn.

Met name bij deze voedingen is het veel storing gevoeliger.
Pak ik een echte lab voeding bij dan is het veel stabieler.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Op 17 januari 2023 12:48:14 schreef Arco:
Je hebt daarvoor in ieder geval een stuk meer geheugen nodig om tekst/afbeeldingen op te slaan (wil je er wat zinnigs mee kunnen doen)
Of het oled is, kun je simpel zien: dan is er geen backlight, bij tft wel... ;)

Maar hoe kom ik daar achter?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Backlight is normaliter een aparte pin... (vanwege de 'IPS' opdruk lijkt het een TFT, maar er staat wel vaker onzin op die printjes gedrukt... ;) )

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
benleentje

Golden Member

Je hebt daarvoor in ieder geval een stuk meer geheugen nodig om tekst/afbeeldingen op te slaan

Het display heeft zijn eigen geheugen. Voor enkel wat tekst en wat lijnen heb je dan eigenlijk zo goed als geen geheugen nodig.
Een foto kan je in het programma geheugen zetten en kost je geen sram geheugen.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Arco

Special Member

Een foto kan je in het programma geheugen zetten

Ja, da's natuurlijk ook de bedoeling (in ram lukt helemaal niet qua grootte en is ook volatile)

Maar programmageheugen heb je ook een slok van nodig bij plaatjes en in RGB:
Een plaatje kost je al gauw 3k en ascii karaktertabellen hakken er ook flink in. (kleine micro's hebben maar 2...56kB geheugen...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Maar als ik op zo'n displaytje gewoon wit wil weergeven moet ik dus toch 4 kleuren aansturen?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ja, da's een scherm met alle R,G, en B pixels aan... (3 kleuren dus)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
KGE

Golden Member

Ach het lukte zelfs op een 8080 met 1 kByte RAM om zo'n SPI (hier OLED) schermpje aan te sturen (bit-bangen via de 8255)

Met de juiste library kun je met Arduino ook met weinig RAM prima zo'n schermpje aansturen.
De modernere microcontrollers als de ESP32 en Raspberry Pi Pico hebben RAM en ROM zat en kosten ook weinig dus..

Arco

Special Member

RPi is wel heeel overdreven... (zoiets als een muis verdelgen met een atoombom... :) )
Alleen een paar kleurenbandjes kost weinig geheugen, maar je hebt er normaliter ook weinig aan...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 17 januari 2023 03:32:54 schreef Arco:

Ondersteboven beeld heb ik nog nooit gehad met die 0.96 en 1.3" Oled'jes...

Ik las dat iemand anders hetzelfde probleem had: een verticale 'flip' van het Oled-display.
Een antwoord suggereerde dat je moet oppassen om de write naar het display niet te laten onderbreken door een timer interrupt.
Ik heb dus wel een timer interrupt.

Nu dacht ik het volgende:

pic basic code:



TMR2IE_bit = 0
  
  Lcd_String_8x16(0,0, Teken1 +  "Tijd " + Hours[1] + Hours[2] + ":" + Minutes[1] + Minutes[2] + ":"   + Seconds[1] + Seconds[2])
  Lcd_String_8x16(0,2, Teken2 + "Ref: " + RefTempL[1] + RefTempL[2] + "-" + CurTemp[1] + CurTemp[2]+ "-" + RefTempH[1] + RefTempH[2])
  Lcd_String_8x16(0,4, " Aan: " + PumpOnHrs[1] + PumpOnHrs[2] + ":" + PumpOnMin[1] + PumpOnMin[2])
  Lcd_String_8x16(0,6, " Uit: " + PumpOffHrs[1] + PumpOffHrs[2] + ":" + PumpOffMin[1] + PumpOffMin[2])
  
  TMR2IE_bit = 1

Dus de timer disabelen terwijl je schrijft.

Maar is dit nu wel een fraaie oplossing om de Timer-interrupt zo te stoppen?

[Bericht gewijzigd door Bavelt op dinsdag 17 januari 2023 23:52:42 (29%)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Het 'flippen' is overigens met een commando aan te sturen:

pic basic code:

 Lcd_WrCmd(0xC8)                                 'Common output scan direction

Waarbij C8 is normaal en C0 is 'geflipt'

Dat bitje zal dus wel door een of andere verstoring worden geset/gereset.

Ik zou dus ook regelmatig (of voor iedere write)

pic basic code:

 Lcd_WrCmd(0xC8)                                 'Common output scan direction

kunnen toevoegen. Maar het blijft rommelig...

[Bericht gewijzigd door Bavelt op woensdag 18 januari 2023 00:13:08 (26%)

Fouten zijn het bewijs dat je het probeert..
benleentje

Golden Member

Op 17 januari 2023 17:41:42 schreef Bavelt:
Maar als ik op zo'n displaytje gewoon wit wil weergeven moet ik dus toch 4 kleuren aansturen?

Volgens mij ondersteund de driver chip meerdere kleur indelingen. De hoogste instelling is 18 bit kleuren dus voor elke kleur 6 bits, maar je kan ook lagere instellingen maken bv 5R 6G 5B en dan gebruik je 16 bit. 16 bit is net wat vriendelijker dat past in 2 bytes. Weet niet of er ook bv een 8 bit modus is maar als je de driver chip weet kan je dat zo opzoeken.

en ascii karaktertabellen hakken er ook flink in.

Ja dat was ik even vergeten. Bij arduino gaat dat meer op de achtergrond maar uiteraard zal je altijd minimaal 1 ascii tabel nodig hebben.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
benleentje

Golden Member

Ach het lukte zelfs op een 8080 met 1 kByte RAM

Bij een C64 stonden de karakters in een (E)prom, op jouw 8080 zal er iik wel een eprom zijn waar tenminste de software instaat toch?

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Arco

Special Member

Zolang er in de interrupt geen variabelen worden gewijzigd die ook door de oled routines worden gebruikt kan dat niet uitmaken.
(lengte van SPI data/clockpulsen is niet kritisch, zolang er tenminste geen delays in de interrupt staan...)

Al eens met tragere instelling voor de spi bus geprobeerd?

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com