TTGO T5 E-Ink Panel Degradation
How to avoid degradation of the TTGO T5 E-Ink panel when using partial updates.
Normal E-Ink Updates
On E-Ink screens a normal full screen update takes about three to four seconds and has the display flicker two or three times. While this is annoying it does keep the screen in pristine condition. I've had one such device running for over a year and it still looks as good as new.
However for a new project I wanted to reduce the amount of screen flicker so looked into partial (or fast) screen updates. I'm not going to go into detail here on this approach, suffice it to say, some displays can update without any flicker.
There are problems with this approach, from the Pervasved Displays Fast Update Application Guide:
...Fast Update looks like it is
sending new image to screen directly.
However, there is neither compensation nor reset stages in between.
Such operations will cause the particles in FPL to be overdriven in an
unbalanced state. Over a long period of time, ghosting image may
appear, and at worst, the EPD module will have a short lifetime or even
cause damage that cannot be recovered to original optical
performance
The linked white paper on fast update and the Pervasved Displays Fast Update Application Guide give an overview and in-depth description of the technology and the problems I'm alluding to.
The upshot is that one shouldn't:
- Have more than 15 fast updates, or,
- Allow more than 30 seconds to elapse since a partial update
without performing a Global Update (a full update with all the flicker).
Does This Work?
For me, the answer was no.
I wrote some test code, using the GxEPD library, that updated a display every 20 seconds.
Any use of fast updates, that is using the
display.updateWindow(...)
command rather than the
display.update()
command, resulted in visible degradation of the panel after only a few minutes' running.
I tried doing a Global Update every second screen update, but this still caused visible degradation.
Aside; Fixing the Degradation
I was able to restore my panel to as new condition by changing the test code to do a Global Update every 20 seconds and leave it running for an hour.
It looks like this only works if you catch the degradation quickly. There are references online to totally destroyed panels caused by partial / fast updates.
Can we fix it? Yes we can...
From the linked application note, and other search results online, it appears that the damage is caused by the high voltage supply, necessary to change the display state, being left on too long. Again, refer to the linked notes for information on this.
When doing a Global Update the high voltage is turned off after the update.
Fast / Partial updates leave the high voltage on. The reason for this is that it takes time to build up the voltage and that affects the speed with which you can perform updates. Leaving the power on allows more frequent updates. Unfortunately leaving the power on also damages the display.
I don't need frequent updates, I just want occasional flicker free updates. So I tried powering down the high voltage immediately after doing a fast update.
display.updateWindow(0, 0, display.width(), display.height(), true);
display.powerDown();
This appears to work.
I've been running a test program that updates the screen every 20 seconds, one in four updates is a Global Update, the other three as fast updates, as per the above code. So far the display shows no signs of degradation.
There is slight ghosting when black pixels turn white in the fast update, but the Global Update removes this.
For reference, Global Updates turn off the power when they're done.
Take Away
This needs further testing, but I'm going to adopt the following guidelines:
- For single, infrequent updates, turn off the power after the fast update.
- For a scenario that involves multiple, frequent fast updates (e.g. response to user input) turn off the power as soon as possible after the interaction.
- After multiple updates, perform a Global Update as soon as possible.