GxEPD2 - Power Consumption with powerOff();

Hello,

this is my first post in this forum. I have read through the guidelines and hope that I have described my problem in a way that you can help me.

I am running my Waveshares EPD (1.02 inch, GDEW0102T4) with an Attiny3216. With the GxEPD2 library and the Arduino IDE this is possible without any problems. Many thanks to Marc Zingg for the enormous help.
Since I run my system with a coin cell I am interested in the required currents.
In fullrefresh my 1.02 inch EPD needs about 5-7 mA with a supply voltage of 3.3V.
Afterwards it is switched off with the method powerOff(); by default. Nevertheless the display needs a current of about 3mA in this following "power off -phase". Of this, 2.5mA runs permanently through the RST connector.

With the original Waveshares code the display needs only 20µA in sleep mode. Here, in the EPD_Sleep(void) method, the RST pin is set to LOW.
Waveshares Code

void EPD_Sleep(void)
{
    EPD_SendCommand(0X02);  	//power off
    EPD_WaitUntilIdle();
    EPD_SendCommand(0X07);  	//deep sleep
    EPD_SendData(0xA5);
    DEV_Digital_Write(EPD_RST_PIN, 0);  // Module reset => RST LOW
}

I can also set the RST to LOW after refresh in the Arduino Sketch but this results in a reset of the UC8175 as in the original Waveshares code. The current consumption in this case is about 100µA.

I used the default GxEPD2_Example sketch and adjusted it to my EPD. Also I use the recommended wiring of my EPD with the AVR microcontroller.
I would appreciate any advices on how I could use less power in power off mode.

Many greetings
Josh :slight_smile:

Hi Josh, welcome to the forum!

Yet another occasion and need for improvement of GxEPD2...

GxEPD2 has an init() method instead of a begin() method like many other Arduino driver classes.
It would have an end() method if it had a begin(), but as I didn't like begin(), the end() is missing.

The next version of GxEPD2 will have an end() method, if I don't forget.
The end() method will call SPI.end() to release SPI pins, and reset all other control pins to INPUT.

For your Waveshare board with "clever" reset circuit, you would need this end() method.
In the meantime you need to implement this yourself.
PowerOff() or hibernate() don't switch off the level converter and RST transistor base resistor of the Waveshare board.
Of course you then need to call init(...) again to continue; init(...) with the shortened reset pulse.

Jean-Marc

In the Displays section of the forum, links to the devices are recommended (at least by me):

https://www.waveshare.com/product/displays/e-paper/epaper-3/1.02inch-e-paper-module.htm
https://www.waveshare.com/wiki/1.02inch_e-Paper_Module
https://www.waveshare.com/w/upload/4/4a/1.02inch_e-Paper_Module_SchDoc.pdf

Take a look at the schematics for the "clever" reset circuit, and its unreasonable low base resistor value!

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.