Maybe this means that deep sleep is not optimized enough and something more can be turned off? For comparison, two lowest-power ESP32 sleep modes are 10uA and 2.5uA (from here).
The nRF52840 can go lower than 36 μA.
0.5μA at 3V System OFF mode, no RAM retention
1.5μA System ON mode, no RAM retention
0.7μA All peripherals in IDLE mode
0.03μA per 4kB RAM retention
It’s quite possible that not all of the peripherals are disabled yet. Also, because we tested from the LiPo battery connector the losses in the regulator start to become an issue at these current levels.
The Xenon has a couple pads on the bottom to allow bypassing the regulator, typically when powering from a disposable lithium coin cell. I have not tried that yet.
I was trying to reproduce the results. I go into the 3.3V input and measure with a CurrentRanger. My results are about 25 uA most of the time when sleeping in STOP mode. It’s fluctuating quite a bit, though, up to short times of up to 180 uA. Quite encouraging, already. Although it would be cool, if with some optimization the current would go down even more!
Thanks @peekay123 and @rickkas7 for these quick tests. Can anybody do the same power usage tests on a Boron LTE? I’m seeing power usage around 12mA in either STOP or DEEP_SLEEP modes and I can’t determine whether it’s coming from the Boron or any other attached device.
I have an LSM6DS3 IMU attached to SPI bus and a power switch (Pololu #2810) controlled by A4 as digital output that I can’t disconnect from my system because they are soldered to the main PCB but it’s hard to believe these two can draw as much current, even in active status.
I will be able to power test a Boron LTE soon.
I just tested power when powering via the USB port at 5v and was seeing 111ma on startup and then it stayed at 28ma most of the time and jumped up to 40 and 54ma sporadically.
That’s a very efficient cellular connection if you ask me
The Xenons powered via USB are pulling 15mA which is great also.
I have a LiPo battery with a spot in the cable where I can connect an ammeter in series.
I then connect my Siglent SDM3055 to this point. It logs the current usage by USB to a computer, which is how I generated the graphs.
@peekay123: I tried to take similar measurements using a DMM, but my problem was that I have 2 current measurement terminals – one for low current (mA/uA) and one for high current (A). The microcontroller won’t start up unless the high current measurement terminal is used, but the low current measurement terminal is needed to perform the measurements. Do you know a way to get around this limitation, or do I just need a different DMM?
@jsartori, the DMM I have does that automatically. It also has a very low burden voltage meaning it does not affect the circuit being measured significantly. Your DMM may not provide this. I also have a uCurrent Gold which will work with any DMM to measure very low current.
If you’re not trying to get super-accurate measurements you can use your own burden resistors and measure millivolts… E.g. start with a 1 Ohm 1% resistor, then read mV = mA. When the device goes into low-power sleep use a 100 Ohm - 1K Ohm 1% resistor and measure 1 mV = 10uA, respectively 1 mV = 1uA. You may have to use a switch to switch from one to the other. Trick is not to disconnect while switching. What I do is always leave the 1 Ohm in place and add a 110 Ohm in parallel. You won’t get microamp accuracy but you will be able to tell whether you are achieving deep-sleep levels or not and if you make small changes whether they improve things or not.
FWIW, I don’t use Particle firmware but my own testing on the Xenon hardware with CPU off and one RTC running from the 32 KiHz crystal shows about 35 uA running from LiPo at 3.96V (measured with a uCurrent; numbers are very sensitive to supply voltage).
It drops to about 27 uA if the MX25L32 is placed into deep power down mode before going to sleep.
Powering from 3V3 directly with 3.0 V with XC9258 disabled by shorting CEn to ground I get about 22 uA (this configuration also removes power from the MX25L32). Anything lower than that would require mucking with solder bridges which is beyond me.
I’m pretty happy with 27 uA; my sensor apps spend about 99.92% of their time in sleep so that’s years of service life out of a decent sized LiPo.
Do you have a separate RTC ? And how long do you sleep for ?
@abhishek2101 no, it’s RTC1 of the nRF52840 set up to support a 64-bit system uptime clock at 32 KiHz. Measurements were on a bare Xenon, no external circuitry or peripherals. The duty cycle numbers are from a deployed device with the ALS-PT243-3C phototransistor and a HTU21D, waking at 1 s intervals to collect light intensity, temperature, and humidity, and transmitting observations and telemetry in beacons. There’s some filtering of beacons with insignificant changes but the average over the last 11.5 days was 28300 transmissions per 24 hours. Over that period battery voltage dropped from 4.045 to 4.030, with 99.92% of the time in sleep.
@pabigot, your work is great but since you are not using Particle firmware, the current measurements are “out of context” from the typical user. Nonetheless, they do illustrate that the Particle DeviceOS can be further optimized to reduce current consumption during sleep and that different methods of powering a Xenon will impact this as well. Thank you for contributing!
You’re welcome and that was my intent: identifying the hardware limits to power efficiency. If DeviceOS identifies other significant optimizations similar to powering down the flash to reduce energy consumption I’d like to take advantage of them.
Amazing topic @peekay123! thank you and thank you all
Now my question to Ryan:
What is the power consumption of an Electron in a similar test? You may have the values around, but if you don’t, I’m ok. Just curious to compare side by side.
Not really sure but I saw a graph @rickkas7 posed the other day which showed non LTE 3G power consumption at 2 to 3 times higher if I remember correctly.
What do you guys think about this?
Is it 4ma or 7.5ma used when the mesh is off?
I’m seeing 2.5-3mA when powering via USB with system mode manual and broadcasting every second via BLE.