Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Battery Operation - Schottky Diode and Thresholds #17

Open
mungewell opened this issue Nov 21, 2024 · 4 comments
Open

Battery Operation - Schottky Diode and Thresholds #17

mungewell opened this issue Nov 21, 2024 · 4 comments

Comments

@mungewell
Copy link
Owner

In my prototype I am using a Schottky diode to isolate/protect battery from (inadvertant) VBUS connections. The diode lets battery feed into VSYS with a 0.4V drop.

In 'hardware' powersave (with PIO blocks running in light sleep I got the following power run, with a 3.7V 1300mA.hr battery. MicroPython is built with my 'lightsleep()' patches and with UART REPL (USB disabled).

[10:49:46.119344 0.000001] Pico-Timecode v2.1+
[10:49:46.119975 0.000634] www.github.com/mungewell/pico-timecode
[10:50:01.705483 15.585507] 01:00:10.12 3.650414
[10:50:11.713315 10.007832] 01:00:20.12 3.642357
[10:50:18.139709 6.426393] Entering PowerSave
[10:50:21.881025 3.741317] 01:00:26.25 3.653435
[10:50:32.096287 10.215262] 01:00:26.25 3.6600j
[10:50:42.439622 10.343335] 01:00:26.25 3.664915
[10:50:52.719388 10.279766] 01:00:26.25 3.671764
...
[22:34:10.966750 10.295684] 01:00:26.25 3.006112
[22:34:21.262736 10.295985] 01:00:26.25 3.002486
[22:34:31.526668 10.263933] 01:00:26.25 2.999^Fj
[22:34:31.654631 0.127962] Powersave Exited
[22:34:41.838818 10.184187] 12:44:50.15 2.992415
[22:34:51.942102 10.103285] 12:45:00.20 2.973079
[22:35:02.141718 10.199619] 12:45:10.26 2.960994
[22:35:12.229614 10.087892] 12:45:20.29 2.946492
[22:35:22.381924 10.152311] 12:45:31.01 2.930782
[22:35:32.469646 10.087722] 12:45:41.05 2.911043
[22:35:42.557186 10.087534] 12:45:51.08 2.89211
[22:35:52.692863 10.135683] 12:46:01.13 2.875191
[22:36:02.797482 10.104620] 12:46:11.16 2.844978
[22:36:12.885209 10.087725] 12:46:21.19 2.809932
[22:36:22.988741 10.103536] 12:46:31.21 2.763606
[22:36:33.108672 10.119927] 12:46:41.24 2.70157
[22:36:43.212449 10.103778] 12:46:51.27 2.614533
[22:36:53.348299 10.135849] 12:47:02.03 2.526287
[22:37:03.495606 10.147305] 12:47:12.06 2.427568
[22:37:03.497739 0.002138] Traceback (most recent call last):
[22:37:03.501456 0.003717]   File "main.py", line 1077, in <module>
[22:37:03.505654 0.004198]   File "main.py", line 722, in OLED_display_thread
[22:37:03.510372 0.004717] NameError: name 'sys' isn't defined
[22:37:03.512659 0.002289] MicroPython v1.25.0-preview.26.gc4d7237a4.dirty on 2024-11-13; Raspberry Pi Pico with RP2040
[22:37:03.518298 0.005638] Type "help()" for more information.
[22:37:03.520475 0.002177] >>> ^@Pico-Timecode v2.1+
[22:37:33.170794 29.650313] www.github.com/mungewell/pico-timecode
[22:37:37.883977 4.713186] ^@Pico-Timecode v2.1+

So 10:49:46.119344 through to 22:37:03.495606 is 12hrs run time!

I had unit come out of 'powersave' so that it could flash a 'low battery' warning on the screen, this increased current draw and promptly discharge what's left of the battery. Improvements made last night will prevent the unit cycling on/off.

I think I will change the thresholds (at VSYS) to 3.2V warn and 2.8V shutdown. Note these are 0.4V below battery voltage.

@mungewell
Copy link
Owner Author

20241120_voltage.txt

@mungewell
Copy link
Owner Author

here's some power measurements, with and without a display attached. Note during 'power save' the LTC output is still running, the screen is turned off and the CPU is jumping in/out of lightsleep while keeping FIFOs full.
low_power_measurements

Next step is to see if we can improve those, maybe by further lowering the SYS clock?

@mungewell
Copy link
Owner Author

30MHz is too slow for loading FIFOs and causes an 'Underflow Error' to be triggered - maybe code can be optimized.
60MHz works, and shows a notable power saving.
low_power_measurements

With the 'Pico1.3 OLED' the screen is not able to keep up with 30fps (that code is async, so not a problem). I had already done a lot to optimize.

Other 'SSD1306' based screen seemed to faster though.... when I had previously fly wired it in.

@mungewell
Copy link
Owner Author

I also tried with 48MHz; it almost works, or rather works for some time and then triggers the underflow.

This would have the advantage of being able to shut down one of the PLLs, whilst keeping USB and UART alive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant