🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    M5Paper EPD power consumption

    Cores
    11
    54
    202.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • felmueF
      felmue
      last edited by

      Hi guys

      As @fonix232 pointed out the charging / charging complete signals (NSTDBY / NCHRG) of the battery charger are not hooked up in M5Paper.

      So I was wondering, what other external indicator are you guys using to know that the battery has been fully charged? What I mean is how to tell the battery is full w/o running some code checking for the battery voltage every now and then.

      Thanks
      Felix

      GPIO translation table M5Stack / M5Core2
      Information about various M5Stack products.
      Code examples

      1 Reply Last reply Reply Quote 0
      • felmueF
        felmue @tatar-andrei
        last edited by

        @tatar-andrei said in M5Paper EPD power consumption:
        ... and without any previous state (unless written to FLASH/SD)...

        you can also save data into M5Papers EEPROM (FM24C02 - 2K-bit(256x8)-EEPROM) during shutdown.

        Thanks
        Felix

        GPIO translation table M5Stack / M5Core2
        Information about various M5Stack products.
        Code examples

        1 Reply Last reply Reply Quote 0
        • felmueF
          felmue
          last edited by

          @fonix232 said in M5Paper EPD power consumption:

          battery cutoff voltage for charging seems to be 4.2V

          Hello @fonix232

          I also thought the charger is only set for 4.2V cutoff voltage due to the fact that the charger IC in the M5Paper schematics is marked as SLM6600. However the charger IC in my M5Paper actually is a SLM6635 which by default has a charging termination voltage of 4.35V according to its data sheet.

          Thanks
          Felix

          GPIO translation table M5Stack / M5Core2
          Information about various M5Stack products.
          Code examples

          F 1 Reply Last reply Reply Quote 0
          • F
            fonix232 @felmue
            last edited by

            @felmue then how do you explain that charging voltage is 4.35V until the battery reaches 4.2V, when the charging voltage drops to 4.2V as well?

            1 Reply Last reply Reply Quote 0
            • felmueF
              felmue
              last edited by

              Hello @fonix232

              a very good question indeed to which I don't have an explanation (yet).

              Another question is how accurate the voltage reported by the ESP32 ADC actually is. There also is a voltage divider and some SCALE factor in the factory test firmware. Interestingly the SCALE factor seems to have changed over time:

              #define SCALE 0.5//0.78571429
              

              Just curious - did you also verify the battery voltage with a multimeter directly connected to the battery?

              Thanks
              Felix

              GPIO translation table M5Stack / M5Core2
              Information about various M5Stack products.
              Code examples

              1 Reply Last reply Reply Quote 0
              • felmueF
                felmue
                last edited by felmue

                Hi guys

                today I did a charging experiment with a fully depleted M5Paper battery. After about 2 hours the charger IC switched from charging to standby (according to the two LEDs I've soldered to the corresponding charger IC outputs).

                I used a multimeter (connected directly to the battery) to measure the battery voltage. The voltage from the internal ADC, read via M5.getBatteryVoltage(), was about 5% higher than the voltage read by the multimeter for voltages below 4.2V. Above that the two values were pretty close. The reason for that is the voltage divider (3k / 11k) which when fed with 4.2V produces about 3.3V to the ADC input which is about the maximum a GPIO can take.

                The highest voltage I've seen on the multimeter was 4.31V before the charging stopped. After which the voltage dropped back to 4.25V. I think that means the charger IC actually is setup for a 4.35V battery, but for some reason doesn't go all the way up to 4.35V.

                Update: a possible reason is explained in the datasheet (Google translated):

                ==========
                _______________Charge termination voltage setting The default full termination voltage V FLOAT set inside the chip is approximately 4.35V, but due to the large charging current, the internal resistance of the battery and the line Loss will cause the actual full-charge termination voltage to be lower than this value, resulting in battery failure The law is full enough. SLM6635 by an external resistor RPV to increase V FLOAT of Voltage, used to compensate various losses, or to satisfy different applications Special requirements for voltage.The compensation voltage can be calculated by the following formula:

                Delta V = I bat (Standby mode) * RPV

                If there is no need to compensate the V FLOAT voltage, it is recommended that RPV be set to 1kΩ.

                ==========

                Thanks
                Felix

                GPIO translation table M5Stack / M5Core2
                Information about various M5Stack products.
                Code examples

                1 Reply Last reply Reply Quote 2
                • felmueF
                  felmue
                  last edited by

                  @tatar-andrei said in M5Paper EPD power consumption:

                  I did play around more with power down states and I managed to get a light sleep mode with fast wakeup from touch at around ~9mA.

                  Hello @tatar-andrei

                  I tried to get the touch into sleep mode by applying the steps outlined in the GT911 programming guide but I don't see any reduction in power consumption.
                  The steps are:

                  • switch ESP32 interrupt GPIO from input to output and set it low
                  • issue command 0x05 to address 0x8040

                  is there anything else that needs to be done? I'd appreciate your insight on that.

                  Thank you very much in advance.

                  Cheers
                  Felix

                  GPIO translation table M5Stack / M5Core2
                  Information about various M5Stack products.
                  Code examples

                  1 Reply Last reply Reply Quote 1
                  • M
                    mikeluan
                    last edited by

                    @tatar-andrei said in M5Paper EPD power consumption:

                    months on a battery charge"

                    registered a new account for replying this.. not currently a M5Paper owner but will buy one soon!
                    I happened to be involved in a ESP + 8951 epaper project months ago, the target is months on battery charge (3xAAA battery).
                    Main env is done using arduino, and scriptable via Lua. UI is rendered on server, send down to the device during idle & stitched with Lua (it's a calendar kind of device).

                    repo is @ https://github.com/luan007/em_playbook
                    hope some code / impl provides some reference ..

                    1 Reply Last reply Reply Quote 0
                    • felmueF
                      felmue
                      last edited by

                      Hi guys

                      I just discovered that the voltage divider used to feed the battery voltage into the ADC uses different values from what's listed in the M5Paper schematic.

                      • M5Paper schematics: 3 kOhm and 11 kOhm -> factor: 0.78571428571
                      • found in my M5Paper: 10 kOhm and 10 kOhm -> factor: 0.5

                      With the actual values the modified SCALE factor (0.785.. -> 0.5) found in the library also makes more sense. It compensates the voltage divider.

                      BTW: when you feed 4.2 V into the original 3 kOhm / 11 kOhm voltage divider you get exactly 3.3 V. So I guess initially M5Paper was designed / planned to use a 4.2 V battery.

                      Cheers
                      Felix

                      GPIO translation table M5Stack / M5Core2
                      Information about various M5Stack products.
                      Code examples

                      1 Reply Last reply Reply Quote 0
                      • felmueF
                        felmue
                        last edited by

                        Hi guys

                        I think I found the reason for why the touch IC (GT911) did not react when I tried to put it into sleep mode. The procedure asks for the ESP32 GPIO used for the touch interrupt to change to an output and then be driven low by the ESP32. Unfortunately GPIO36 is used for the touch interrupt and that is one of the few GPIOs which can only be used as input. So without hardware modification I don't see a way to put the touch IC into sleep mode. Or am I missing something?

                        Thanks
                        Felix

                        GPIO translation table M5Stack / M5Core2
                        Information about various M5Stack products.
                        Code examples

                        F 1 Reply Last reply Reply Quote 0
                        • F
                          fonix232 @felmue
                          last edited by

                          @felmue that definitely sounds like a massive design issue - I wonder, maybe that's why the M5EPD library doesn't have any touchscreen power-off calls?

                          There was also a post on the M5Stack twitter recently, showing a blurred out image of upcoming devices, with a device eerily similar to the M5Paper taking up a large chunk of the photo: https://twitter.com/M5Stack/status/1357559621389479940/photo/1

                          I wonder if the design team realised these small issues and made a new board that is more fit for general usage purposes. It happened with the M5Cores (the Basic model had no PSRAM and the first units only had 4MB storage, which later got expanded to 16MB, then the Grey kit came with an MPU, then the Fire kit also included a microphone and PSRAM, among other changes), though the speed is much faster - I think there was almost a year between the Basic and Grey M5Cores, whereas the M5Paper was only recently released.

                          It does feel like a slap in the face for us who already bought multiple M5Paper units though - we've received a device that has a handful of obvious faulty design choices, and now we have to buy the new, updated model to get functionality that should've been working in the first iteration. Don't get me wrong, I'm happy for the updated design, I just hope there will be some discount for those who've already got units on their hands.

                          1 Reply Last reply Reply Quote 0
                          • J
                            Joonas @tatar-andrei
                            last edited by

                            @tatar-andrei

                            You mention that you got the touch wakeup working. Could you share how you managed to do this?

                            I have searched and tried everything. I have had no luck with the touch wakeup. Currently my Homekit panel runs for about 5 hours without any sleep setup. This is just too low. I only need to use it couple of times a day and most of the time it should be on sleep.

                            1 Reply Last reply Reply Quote 0
                            • felmueF
                              felmue
                              last edited by felmue

                              Hi guys

                              I went ahead and modified my M5Paper so it can put the touch IC (GT911) into sleep mode. By doing so the current (measured at the battery) drops about 7.6 mA.

                              With WiFi off, EDP power off, ESP32 in deep sleep and touch in sleep mode the overall current is about 1.6 mA.

                              Note: since putting touch into sleep mode requires touch INT to be driven low by ESP32, touching the screen can no longer be used to wake up M5Paper.

                              Cheers
                              Felix

                              GPIO translation table M5Stack / M5Core2
                              Information about various M5Stack products.
                              Code examples

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                bricox @felmue
                                last edited by bricox

                                @felmue
                                Indeed GPIO36 is only input.
                                So I looked for another GPIO used only as input to reverse the 2 GPIO on the pcb.
                                I found the GPIO27 which tells ESP32 that the IT8951 is ready for a SPI dialogue

                                IT_SPI_HRDY (schema)
                                #define M5EPD_BUSY_PIN 27 (M5EPD.h)
                                EPD.begin(M5EPD_SCK_PIN, M5EPD_MOSI_PIN, M5EPD_MISO_PIN, M5EPD_CS_PIN, M5EPD_BUSY_PIN); (M5EPD.cpp)
                                m5epd_err_t M5EPD_Driver::begin(int8_t sck, int8_t mosi, int8_t miso, int8_t cs, int8_t busy, int8_t rst)
                                _pin_busy = busy;
                                pinMode(_pin_busy, INPUT);

                                0_1615456717810_50c5a8ea-8079-4817-a856-10c82417613c-image.png
                                On my pcb, the resistance R87 is absent (unwelded)
                                All you have to do is reverse the 5 and 16 tabs on the ESP32.
                                I scraped the varnish and then scanned the pcb.
                                You have to cut the 2 tracks between the 2 pins of the esp32 and the 2 vias.
                                then solder 2 thin wires.

                                B 1 Reply Last reply Reply Quote 1
                                • B
                                  bricox @bricox
                                  last edited by

                                  @bricox
                                  0_1615476228608_7ba0fa7a-2234-4eb5-bf2b-40ca8229e42a-image.png

                                  1 Reply Last reply Reply Quote 0
                                  • felmueF
                                    felmue
                                    last edited by

                                    Hello @bricox

                                    very elegant solution. Thank you for sharing.

                                    I opted to leave GPIO36 as is and connected GPIO19 (from port C) in parallel which I can then set to output if I want to use touch sleep mode. (Yes, I loose port C, but it made the soldering a bit easier. Only one additional wire from a pin on port C to the unpopulated R87 pad.)

                                    Cheers
                                    Felix

                                    GPIO translation table M5Stack / M5Core2
                                    Information about various M5Stack products.
                                    Code examples

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      bricox @felmue
                                      last edited by

                                      @felmue
                                      I did a summary of the 3 ports A, B and C
                                      0_1615480305762_c98a3e9f-53d3-4dda-989f-1548a6530bac-image.png
                                      You made a good choice using GPIO19.
                                      Indeed, welding work is simplified.
                                      Do you share your source code?

                                      1 Reply Last reply Reply Quote 0
                                      • felmueF
                                        felmue
                                        last edited by

                                        Hello @bricox

                                        @bricox said in M5Paper EPD power consumption:

                                        Do you share your source code?

                                        Sure, you can find my touch sleep mode test sketch here.

                                        It's a extended version of the TOUCH example which uses the left/up button to set touch into normal mode and right/down button to set into sleep mode.

                                        Cheers
                                        Felix

                                        GPIO translation table M5Stack / M5Core2
                                        Information about various M5Stack products.
                                        Code examples

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          bricox @felmue
                                          last edited by

                                          @felmue
                                          To fully understand the GT911 controller, download these 2 pdf
                                          0_1615801735370_a92c71b1-cc76-49b8-9bef-90da8225880d-image.png
                                          https://www.crystalfontz.com/controllers/GOODIX/GT911/464/
                                          https://www.crystalfontz.com/controllers/GOODIX/GT911ProgrammingGuide/478/

                                          Several developments are desirable :

                                          • read position under interrupt and not in polling mode [GT911::update()]
                                          • Exploit more all modes
                                          • Check if the "green mode" (3.3mA) automatically change after 1 second of inactivity
                                          • Generate a sound when you touch it

                                          List of 21 other GT911 drivers :
                                          https://github.com/search?q=gt911
                                          including one in cpp:
                                          https://github.com/blackketter/GT911/blob/master/src/GT911.cpp

                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fonix232 @bricox
                                            last edited by

                                            @bricox based on the documentation, it should be possible to set the touch panel in a gesture recognising mode - would be nice to be able to offload that from the ESP32, alongside the interrupt-instead-of-poll change. This would certainly improve battery life.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post