Minimizing power consumption

Posted on
  • So I'm aware you've improved power consumption when the watch is not moving. But if the watch is on my wrist which it usually would be, how can I make its power consumption the smallest?

    I find myself often just having the pizza timer app open and I don't close it, and often its counting down because I use timers in my life.

    Questions:
    If I decrease rate of poll interval would that benefit me?
    Why can't we have a setting in the menu that is power save mode all the time, not just when idle (not moving)?

    Is the poll interval adjustment the only way to save power?
    Which javascript api/execution of an app prevents low power mode, is it just any use of setInterval because its then constantly doing something? Can it only save power when its in ClockFace doing nothing?
    Why isn't disabling accelerometer in the options too? Is it recommended to disable accelerometer if not using it for anything?

    EDIT: I think this might be a common request for people who also care a lot about battery usage, could we get a setting to use the minimum of everything?

    Settings app should be updated to include the already present feature : powerSave?

  • Honestly, when you're wearing the watch the accelerometer power consumption isn't the biggest worry - you're looking at 0.4mA, which is still over 800 hours (30 days).

    What kind of battery life are you seeing?

    The biggest issue is the time the screen is on (when it's drawing 55mA!) - so I'd say in settings, disable wake on twist/etc, and also wake on BTN2, and maybe lower the LCD timeout. Then the watch will only turn the screen on if you press BTN1 or 3, and is harder to accidentally get into the launched.

    If I decrease rate of poll interval would that benefit me?

    Not noticably...

    Why can't we have a setting in the menu that is power save mode all the time, not just when idle (not moving)?

    It would affect other apps/widgets and things like step counting - and as above, the difference isn't actually that big.

    Is the poll interval adjustment the only way to save power?

    As above - LCD is by far the biggest power draw (or if you've enabled an HRM app that'll draw a bunch of power).

    Which javascript api/execution of an app prevents low power mode, is it just any use of setInterval because its then constantly doing something? Can it only save power when its in ClockFace doing nothing?

    It's always able to go into low power sleep modes inbetween timers - so having a 1 second interval isn't going to hurt power consumption too much (I just tested, and it's like 0.02mA or something very small). You want to avoid going much faster that that though - and also avoid drawing stuff to the LCD if it's off.

    Why isn't disabling accelerometer in the options too? Is it recommended to disable accelerometer if not using it for anything?

    It's just that wake on twist/step counting/gestures/etc rely on it. There's also code that kicks watchdog timers, handles the BTN3 reset/etc that needs to run too. While it could be slowed down it can't be stopped.

    I guess if you were trying to make the Bangle last multiple months between charges - or maybe set it up to be solar powered or something then turning off the accelerometer and polling would be handy, but I think for most people the difference in power usage wouldn't really be noticeable.

  • You want to avoid going much faster that that though - and also avoid drawing stuff to the LCD if it's off.

    I looked at the pizza timer app code :
    https://github.com/espruino/BangleApps/b­lob/master/apps/pizzatimer/app.js

    Seems that it has a interval time of 500ms for menu , and it does not check if LCD is ON before draw calls? So if I change that I should notice improvement of battery usage?

    I'd say my battery usage with using this app is in the order of 5-10 days , just guessing.

  • However, if we Bangle.setPollInterval(1000) could get it down to 0.3mA, and turning off the accelerometer Bangle.accelWr(0x18,0x0A); gets it down to 0.15.

    Taken from another post or github comment. Isn't that 'disabling the accelorometer'?

    https://github.com/espruino/Espruino/iss­ues/1921

    Here you mention that power usage is halved with just PollingInterval adjustment. Why would we not notice this as normal users? I know that personally I am the type of user who cares a lot about small efficiencies in battery usage, perhaps I'm just a rare specimen then.

  • Bangle.accelWr

    I'm looking at the Accelerometer specification KX023.
    the 0x18 is the CNTL1 register.
    PC1 RES DRDYE GSEL1 GSEL0 TDTE WUFE TPE Reset Value
    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 00000000

    I'm testing this :

    Bangle.setOptions({powerSave: false});
    NRF.setConnectionInterval(100);
    Bangle.setPollInterval(400);
    setTimeout(() => {
        Bangle.accelWr(0x18,0b00000000);
    }, 2000);
    

    inside a .boot1 file..

  • it does not check if LCD is ON before draw calls? So if I change that I should notice improvement of battery usage?

    Wow, yes. That would be a big improvement. IMO way bigger than you would get from accelerometer.

    That post you linked - yes, you can turn accelerometer off, but since I figured out about the low power accelerometer mode it's now drawing 60uA not 4000uA so I figured that was a good enough improvement.

    Cool - you can definitely give that a try. On the watch I have rigged to a current sensor here, all with NRF.setConnectionInterval(200);:

    • Normal: 330uA
    • Power save (not moved for a while): 130uA - default poll interval is 800ms so is slower than your code
    • Your code without Bangle.accelWr(0x18,0b00000000); - 160uA
    • Your code complete - 110uA

    So assuming you're moving all the time that'll drop power usage by a third

    ... but that's witout the pizza timer. With it you may find it's dwarfed by other things.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Minimizing power consumption

Posted by Avatar for d3nd3-o0 @d3nd3-o0

Actions