Measuring the power consumption
of battery-operated IOT devices is tricky. In this video, we will
look at how to measure tiny currents, and in a next video, we will use this
knowledge to test some new ESP32 boards.
I will introduce you to the new Power
Profiler Kit II from Nordic and compare it with other well-known tools to determine
which one is the best value for your money.
Grüezi YouTubers. Here is the guy with the Swiss
accent. With a new episode and fresh ideas around sensors and microcontrollers. Remember: If you
subscribe, you will always sit in the first row.
Recently I got a lot of new battery-powered
ESP32 boards from around the world. The most important question is: How long will they
work before charging or replacing the battery?
A fully charged 18650 battery has a
capacity of around 3000mAh. A typical ESP32 consumes around 100mA if it
uses Wi-Fi. Without precautions, the battery is depleted after
30 hours. Not what we want.
So, in this video:
- We will have a look at the power consumption of the ESP32 if we use deep-sleep
- We will find and solve problems during current measurement and learn about burden voltage
- We will compare several low burden voltage current meters which are made
particularly for this purpose
- We will check out a typical
battery-operated board
- And you will get my verdict
Measuring the current of this Lilygo T7 board is simple: We use our bench multimeter,
connect it between the USB hub and the device, and measure current. Right? Let s try it out. I
cut the Vcc wire of this USB cable in the middle and insert my UT71D Multimeter. Because I expect
to measure around 100mA, I select the mA range.
For the experiment, I use the BasicHTTPClient
example sketch. It starts without problems. But as soon as it starts to call the internet,
a brownout is detected, and the ESP32 crashes. Not good. First: What is a brownout? It is
triggered by a low voltage of below 2.43 volts. This cannot be. My USB hub delivers 5 volts, and
the ESP32 board has a 3.3-volt regulator built-in. So let s check. I connect my trusted oscilloscope
to the 3.3-volt rail of the ESP32. And really, from time to time, the voltage has a huge dent and
is below 2.43 volt. So the brownout is justified. But why does this happen?
When we measure current, in reality, we measure the voltage across a
resistor. So, how big is the resistor in my UT71D? Using my bench multimeter, I measure 6
Ohms. The ESP32 consumes around 75mA. Ohm s law says that we only lose 0.45
volts. This should not create a brownout because the voltage regulator should be able to
deal with it. So, what the hell is going on? And what can be done against it? What happens if
we change to the ampere range? Now it works! But of course, we lose a lot of precision.
Let s measure the internal resistance: Now it is much less than 1 ohms. Why does the
Multimeter use different resistors for different ranges? As said before, the meter measures
the voltage across a resistor. The voltage meter in the UT71D has a certain sensitivity,
and we want to use its full capabilities. This is why the instruments switch resistors for
different ranges. Like that, the voltage across the resistor is always similar. If we select
microamperes, the resistor is 500 ohms, BTW.
So the UT71D has three resistors that are switched
according to the current range, and its maximum burden voltage is around 2 volts. Quite a lot if
you ask me if we want to measure 3.3 volts MCUs.
And we encounter a second problem if we want to
measure current during deep sleep. Let s change this sketch and insert a deep sleep statement
in front of the delay(). Like that the sketch never reaches the delay(5000) statement because
it goes to sleep before. The purpose of the sketch stays the same, only its power consumption
should be lower. If we use the 10A range, it shows 13mA during deep sleep. This is what
we expect because the board should only consume milli- or even microamperes. To get a better
result for these small currents, we should switch the range. But then the ESP32 crashes as soon
as it tries to reboot. Not acceptable at all.
So: What do we need? A small burden
voltage in a wide current range. For a low buden voltage we need an amplifier,
and for a wide range we need range switching.
What looked easy in the beginning became quite
complicated. This is precisely what Dave Jones from EEVblog and Felix Rusu from Low-power labs
were thinking when they built these small devices. They use much lower resistor values to create
a much smaller burden voltage and include an amplifier. Both sell around 100 dollars, including
shipping, and both have an output for a voltmeter or an oscilloscope. The Current Ranger has an
optional OLED display. If you are interested in how they work, you can watch video #245.
Another possibility is to spend 700 dollars and buy this OTII power analyzer. It is a combination
of a power supply and a low burden voltage amperemeter. It does not need an oscilloscope to
show the current curves, it has a built-in ADC and PC software. It is much more comfortable than
the other two, but you have to pay the price. This is why I was lucky when viewers pointed
me to a new device: The Power Profiler Kit II from Nordic Semiconductors. It should have
similar specs as the OTII but at a price tag of a Microcurrent Gold. Nordic is not a
Chinese company, so how does this work?
Here it is. Much smaller than the OTII and
not in a nice metal box. But with a cool look: They use different colored LEDs to show the
status in this window. Nice. To save cost, they use simple Dupont wire connectors, which
for sure is not too professional. But it also comes with software to display the curves.
So, let s check it out. Like the OTII, it can provide up to 5 volts and 1 ampere or
measure current provided by different sources like a battery. This is ok for most of our projects. We
can use a standard multimeter or a small resistor and an oscilloscope if we need more current.
Or we buy this even more expensive Joulescope which goes up to 15 volts and 3 Ampere.
What are the typical scenarios? The first one is the same as before: I insert the ampere meter of
the Power Profiler Kit instead of the multimeter. I also connect the ground as a reference because
the maximum voltage at all pins is 5 volts.
Here is the cable I created. I can easily insert
this four-pin connector to measure the current consumption if powered by USB. This setup is
convenient because we still have Serial working. The setup in the Power Profiler software looks
like that: Select Ampere Meter and enable power output. Now we see the current consumption of
the device. As expected, heavy peaks and a long deep-sleep phase. And no brownouts. Very good!
The software allows us answer basic questions like: How much was the average current during
operation? Around 100mA. And during deep sleep? 15mA. So we already see that we have
a problem with deep-sleep consumption. It is way too high. And we see why the ESP
created brownouts: The peak current was 478mA. Quite a lot! So the maximum burden voltage
with the UT71 was 2 volts in the mA range.
In the following setup, we remove the serial
cable and connect the Power Profiler Kit as a battery replacement. I also created a cable
for that purpose with a four-pin connector and a battery connector on the other side. Now we
have to change the software setup to simulate a battery: We chose source meter and
adjust the output voltage to 3.7 volts.
The current diagram looks similar
as before with one exception: The current draw during deep-sleep is now 80
microamperes, nearly 200 times less. Very good!
As you see we can get such information
quickly by selecting the area we are interested in. We can also take a screenshot
or export the data for further investigations.
Did you recognize: The curve includes currents
from 80 microamperes to nearly 500 milliamperes without brownout. Why is that? The Power Profiler
has five ranges that are automatically adapted to the current flow. If we look at the
diagram, we see the respective resistors: 1k, 110, 11,1, and 0.05 Ohms. So the maximum
burden voltage in all ranges is around 0.05 volts. Neglectable for our purpose. The
switching has to be done very fast. Otherwise, our ESP32 would create a brownout.
Unfortunately, I had to remove the USB cable in this setup, and we do no more see where
the sketch consumes how much energy.
Fortunately, we have these eight input pins. If we
connect them to pins of our ESP32 and toggle them at specific locations in the sketch, we see where
the current draw starts and ends. Pay attention: You also have to connect this Vcc to 3.3 volts.
Otherwise, it will not work. And of course, if you use it for an Arduino, you
have to connect it to 5 volts.
I set the pin to HIGH after setup and to LOW again
after getting the answer from the internet page. Now we see where the sketch is and can measure
the different times without a Serial connection and see where the sketch draws which current.
I revert to the setup with the USB cable and insert timestamps at the toggle points for a
check. Now we see that the time for the HTTP call is very similar. The time for the
setup, however, is quite different. And here we see the difference: The ESP32 does some
initialization steps before it starts our sketch.
Let s do a last calculation: How long will our
ESP run with a 3000mAh battery using deep sleep? Because the duration of the HTTP calls differs, I
would like to average ten cycles. Unfortunately, the maximum range I can display and select
in the highest resolution is only 2 minutes, only five cycles. If I want a longer
period I have to reduce the sampling rate. The average power consumption is roughly
52mA. So the battery will last 58h. Not too much. Finally, we have all the needed
information to start the optimization.
One last question: What about measuring
low currents. All devices mention that they are able to measure nanoamperes. It is
not easy at all to measure such small currents and I doubt that a lot of people need this
feature. I connect a 1M resistor to the OTII as well as to the Power Profiler. You see that
the values are not very stable and that we see a lot of noise. At 2.5 volts we would expect
2.5 microamperes. The OTII shows an average of 2.4 and the Profiler 2.6 microamperes.
For me, both values are good enough.
My verdict: The Power Profiler II is a handy
tool for the engaged Maker or the IOT developer. But how does it compare with the other tools?
The Micro Current Gold has no automatic range switching and will create brownouts if
we want to measure deep-sleep current. So we can only measure either operation or deep
sleep. Not very comfortable. So I would only buy it for application areas where we do not
have such fluctuating currents. As advantage: It can also measure negative currents.
The Current Ranger has an automatic range switching, and it also displays average current
on its OLED. So it is usable for our purpose. But you need an oscilloscope if you are interested in
the curves. Its curves look very similar with one exception: It does not show the deep-sleep current
correctly. It is much too high. Why is this? Because its auto-ranging function changes the
measuring range as soon as deep sleep begins. So this part of the curve is in mA and this one in
nA. There is no indication on the oscilloscope. So you have to know what you do. In addition, it
is more expensive than the Power Profiler Kit.
Because both of them come without software
support, you have to do your calculations or use the math functions of your oscilloscope,
which is not everybody s darling.
So the clear winner in the 100 dollar range
is the Power Profiler Kit II. I am pretty sure that Nordic sponsors this device. After
all, it is not their primary business. But for us Makers, it is a good deal.
Who should spend the money for an OTII?
It can source and measure more current. If this
is needed, the OTII is the right way to go. Its software is much more elaborated. For
example, you can easily sample 10 cycles or more. It also can emulate different
battery technologies.
If time is money in a professional environment,
the OTII is a good choice. Also, because it is big enough that you do not need to search for
it under a pile of things on a messy desk.
For all others, this Power Profiler
Kit is a nice addition to the lab. Maybe you put it on the list for a Christmas
gift? Not absolutely needed but nice to have.
What do we have to remember?
- Measuring the current consumption of IOT devices is tricky
- Burden voltage is the voltage drop across an ampere meter. It has to be
small if we do not want to crash the devices
- We can reduce the burden voltage by
reducing the measuring resistor value
- Low burden voltage means we need an amplifier
- If we deep-sleep our ESP chips, we have to measure from a few
microamperes to 500 milliamperes. So we need automatic range switching
- The two analog instruments need an oscilloscope to display current consumption curves
- Digital instruments use software for this purpose
- Digital instruments do all the calculations automatically.
With analog instruments, you have to use the math functions of your oscilloscope.
One last thing: Pay attention to ground loops, mainly if you use an oscilloscope. All
oscilloscopes are connected to the earth of your home. Better use batteries
as the power source in this case.
This was all for today. As always, you find
all the relevant links in the description.
I hope this video was useful or
at least interesting for you. If true, please consider supporting the channel
to secure its future existence. Thank you! Bye