@ZinggJM
Hello, I have a new display type direct from a Shenzhen producer. It is a 4 inch b/w display with 400x300 pixcel resolution. The integrated controller is a UC8276. In your actual lib I found only a b/w/r display with a UC8276. Can you add this display type to your lib?
I can you send a donation for development. How can I send you the display?
Please note that I need to be rather selective concerning e-paper display I support with GxEPD2.
Originally I supported only panels sold by Dalian Good Display. These panels are well documented since quite some time. But now e.g. Waveshare sells displays with panels from other sources, therefore I am willing to support other panels as well, if they are well documented, and come with demo examples and are of the same kind using SPI interface.
Here is some more information about motivation. I'm currently in the process of building multifunctional displays. The open source project for the OBP60 is already very advanced. The hardware has been completely revised. The display is intended for outdoor use on boats.
So far I have used displays from Waveshare or GoodDisplay. Due to delivery difficulties, Waveshare now also uses other E-Ink displays, but they are significantly more expensive than the old types. Since I intend to commission larger production of the multifunctional displays, I am looking for alternative manufacturers of such displays in order to remain able to deliver in the event of delivery difficulties.
In China I found several manufacturers who copy GoodDisplay displays under license. These are not sales companies. It's really the manufacturers. But there are also manufacturers with their own developments that use other display controllers. Mechanically and electrically, the displays are compatible with the old Waveshare GDEW042T2 displays and can be used with the adapter boards. However, different types are used as display controllers. These are UC8176, UC8276C and SSD1683. GoodDisplay also uses these controllers in its own displays. You have already written display drivers for all types. I assume that the e-ink displays can be integrated into your library. In the meantime I have found 3 alternative 4.2" displays, two of which I was able to test on my own. I'm still waiting for the last one. One display, the GY-E042A87, works with the GDEY042T81 driver in your library and uses SSD1683. This works in my electronics Display too. But I'm not entirely happy with the type of control and would like to make some changes to the driver. In the partial refresh mode, there are strong ghost images after prolonged use despite regular full refreshes. VCOM seems to be set too high at 20V to be. The controller uses the default settings after switching on. I have already tried to adjust the settings during initialization. Unfortunately, the controller does not adopt the settings. There is no driver for b/w for the other display SE0420NQ04-A0 with the UC8276C Displays in the GxEPD2. This would have to be completely readjusted, but it shouldn't be too much of a problem. I received detailed documentation for all displays. I also have an example code for the last display with the UC8276. I'm attaching this here as a zip file. Let me know how I can send you the displays.
Thank you, Norbert, for the background information and the details information.
The displays with actual controllers usually come with waveform tables and most settings programmed in OTP. But this is manufacturer-dependent.
It should be possible to get these displays to work with GxEPD2. I have some experience with this kind of work, and I am interested to get this working.
I will look at the details next week.
I post a personal message with my address, and look forward to receive the panel(s) donated.
I can't promise any schedule. But I would like to know how urgent this is for you.
I have added support for your two display panels to GxEPD2 Version 1.5.6:
version for ongoing fixes and additions
added support for GYE042A87 4.2" b/w 400x300
added support for SE0420NQ04 4.2" b/w 400x300
Version 1.5.6 will only be declared released (tagged on GitHub) after more additions.
And it will require intense release tests.
Note that GYE042A87 requires a RESE resistor value of 2 or 3 Ohms, like most SSD controllers, for the voltage booster circuit for panel driving voltages.
SE0420NQ04 should have a RESE resistor value of 0.47 Ohms, like for most Ultra Chip controllers.
I noticed severe ghosting on the SE0420NQ04. It gets worse after power off and disconnect.
You can try to improve this by changing the waveform tables. I may try to use charge balanced waveform tables for differential refresh later, when I have time.
The driver class for GYE042A87 is an identical but renamed copy of the driver class for GDEY042T81. This allows independent modifications or optimizations.
I intend to start some long-time refresh tests soon.
That's great. Many thanks for your support. I'll try Lib 1.5.6 with both displays straight away.
Why is the RESE resistor needed? Does it have to be inserted in the external circuit to the charge pump? If so, where does it have to be integrated into the circuit? Where can I find information about the RESE resistor?
What's with the waveforms? I haven't really understood that yet. The waveform tables are already integrated into the driver chip. But you can also overwrite them from outside. What exactly are you optimizing when you adjust the waveform tables? How do you test the results and what should you pay attention to? I'm not quite into the topic yet. I would be grateful for tips.
The GYE042A87 has all waveform tables in OTP, same as GDEY042T81. You can replace them (temporarily) by writing a waveform table to registers.
The GYE042A87 doesn't have waveform tables in OTP. I had to copy them from the text file from the zip-file you provided. How to optimize them is out of the scope of this answer.
Many thanks for the answer. I found the RESE resistor. It was described in more detail in the Waveshare circuit diagram. It is a kind of shunt for measuring current for the charge pump. This presumably regulates the voltage and keeps it constant. If you change the resistance, then the voltage for VGL and VGH also changes. But this should also work with VCOM, as the voltages can be adjusted. But that doesn't seem to work or they didn't want to use the software for other displays. I actually have the wrong resistor installed in the circuit. Instead of 3 ohms, only 0.47 ohms are installed. I'll change that.
My 4 inch display SE0420NQ04 works. Great! It's not as good as the GY-E042A87. After full update I see ghosting in the background. I also see a pumping white background. I use the display continuously with the partial refresh every second. After 100 seconds I do a full refresh. I'll leave the display running overnight and look at the results in the morning. This is a test for burn-in effects.
No, the voltages are regulated separately, very precisely if the booster works correctly.
The RESE (seems to be for RESistor to Earth, as often the earth symbol is used for ground) shunt is important for booster soft start and booster stability, I believe.
-jz-
Do you have a specification of the life-expectancy for the SE0420NQ04? Usually one million refreshes or 5 years is specified. With one refresh per second this limit is reached quite fast.
I had only done a very long-time test with the GDEP015OC1. With one differential refresh per second, one full refresh every 6 hours (as far as I remember). It started degrading after more than one year. Without recalculating, this is about 10 times the specs. Other early e-paper panels (2.9") degraded faster, allowed on one refresh every 2 seconds, needed full refresh after 2 hours.
I did not do any longtime checks with current panels. I expect them to live longer.
The differential waveform tables for SE0420NQ04 don't look ok. They are inconsistent (size) and have no charge-balancing at all. Currently I have not enough time to improve this; the GDEW042T2 had taken a lot of time and effort when I did. And newer GDEW042T2 panels were different.
Jean-Marc
What exactly are you changing about the differential waveform tables? The GDEW042T2 is currently the best display I have used. It shows little ghosting and was also long-term stable and showed no aging after more than a year of use. I also assume that the displays will survive well over 1 million cycles. But I do full refreshes much earlier, every 10 minutes. This keeps ghosting within limits.
The ghosting seems to depend on the drive voltage. Some of the charge adds up over time. If you leave the display without power for more than 1 hour, the ghost effect will disappear when you switch it on. That's probably what you mean by charge balancing.
How to adjust the differential waveform tables? What tests do you do for this and what are the criteria for the adjustment? I would also like to adapt it myself if I know what to do. You wrote that you spent a lot of time on the GDEW042T2. Under the microscope you can clearly see the alignment of the color particles, even in time, if you take time-lapse photos. You can also see what the distribution and stratification looks like. The particle thickness appears to be several times the particle size.
There was a time I had much more time for detailed analysis and experimentation.
At that time there were only few users of my libraries, and much less posts to answer.
You told me you would like to have drivers for your displays soon, as you want to know if they work before ordering manufacture of you display board. I provided drivers for your panels. I wanted to make sure you know the difference of RESE values needed for these panels.
I just received 5 interesting big panels from @laskakit I want to play with and get working.
And I have begun some work for my library GxEPD2_4G I would like to continue.
I may have time for optimization of the waveform tables for SE0420NQ04 afterwards.
There are some comments in there. I would use the same technique for charge balancing.
I use GxEPD2_RefreshTests to check ghosting effects.
-jz-
Lesson learned: I should only provide drivers for panels that have demo examples of good quality, such as from Good Display or Waveshare. As I have stated many times.
I am grateful to you that the SE0420NQ04 works. So I now have 4 independent suppliers for 4.2 inch E-Ink displays. Even if the SE0420NQ04 doesn't work optimally, you can at least use it. You can do the optimization later if you have time. I've looked at the LUT and would like to understand for myself what you need to do to optimize a display for fast refresh. I'm looking at your code and trying to understand what you're doing with the test program.
I'm contacting the manufacturer for the SE0420NQ04 again and trying to get better LUTs for the fast refresh mode. Maybe there is even better sample code.
I once again adjusted the LUT for the Waveeforms for the SE0420NQ04. You took 5S mode from the sample code for the full update. I took the part of GC from the example. This makes ghosting a little better for a long time. However, the wavetable does not seem to be complete, since no inverse representation of the content is used as a charge compensation. Only an orientation of the pixels is controlled. I will continue to test this and modify something. What I noticed, the voltages for VGH (21.5V) and VGL (-19.7V) are not exactly the same. This then causes significant charging shifts. The LUT in the OTP is apparently not sensibly programmed. If you use them, the display doesn't work at all.
I have updated the GxEPD2 driver class GxEPD2_420_SE0420NQ04 with improved waveform tables for full refresh and differential refresh. The waveform tables are copied from class GxEPD2_420 (panel GDEW042T2) and adapted to the format of controller UC8276C.
No attempt to optimize the waveform for panel SE0420NQ04 has been done, as this would be (another) time consuming task. But it seems the panel is quite the same as the GDEW042T2, except for the newer controller.
-jz-
I did further testing with the modified code. I adjusted the RESE resistor to 2.2 ohms. The voltages VGL and VGH are now much more stable, but still have a voltage difference of approx. 0.4V. You can see a different behavior in the display, especially during a full refresh. After 8 hours of continuous operation with continuous updates once per second, the same problems with the display appear again. The white background turns gray and the numbers lose contrast despite a regular full refresh every 100s. The result is similar to before. There will also be irreversible burn-in effects.
I suspect that rejects were sold through Alibaba that did not meet the intended specification. I am currently clarifying the issues with the manufacturer.