I want to measure the power consumption of ESP8266-01. For that I connected my multi-meter in series with ESP8266 to measure the current but then ESP8266 does not power up and multi-meter gives zero.

  • 4
    I'm voting to close this question as off-topic because the actual question is entirely about Electrical Engineering details having no dependency on its potential ultimate application to IoT. Jul 16 '18 at 15:11
  • use a 1ohm resistor and measure the voltage across it: v/mv will be a/ma
    – dandavis
    Jul 17 '18 at 21:46

This is really an Electrical Engineering question, not an IoT question.

What you have discovered is related to the issue of "burden voltage". Essentially, modern meters do not directly read current, but instead place a shunt resistor in the circuit (ie, you properly connected the meter in series) and then measure the voltage drop across this.

The challenge is in the selection of the shunt resistor - too small, and low currents cause a voltage drop which may not be as many counts of the measuring ADC as desired, too large and the current drawn to operate the system may drop a voltage large enough that the system cannot operate.

With something that draws different amounts of power at different times, the problem gets worse - for example, if you have an MCU that starts up at full clock, then goes to sleep, it may be hard to power it through the meter until the point of sleep, on a current scale where the tiny sleep current can be measured. Digital radio systems have this problem as well, as the radio can draw 10 or more times baseline current, in brief pulses.

  1. Still, it's worth experimenting with different ranges on your meter
  2. If your meter is auto ranging, you can use your own shunt resistor, and operate the meter in voltage mode.
  3. In some cases, you may want to start up the circuit with a clip lead bypassing the meter, and then once the circuit is believed to be in the low power mode you want to measure, you can remove the clip lead. If you are lucky this works, but you can end up timing it wrong, or causing a voltage drop that triggers a brownout detector.

In a pulsed system, it's often useful to measure over time anyway. I've had some good results using a chosen resistor (depending on need, anywhere from 10-100 ohms) as a shunt, and adding a capacitor to moderate changes. This can then be monitored on an oscilloscope to see how power consumption varies over time.

For a more formal study, I've found an INA219 I2C high-side current measurement breakout modified with a larger shunt resistor to be quite useful. It's managed by an Arduino which reads it at a high rate, and logs summary information - peak current, average over time, and integrated over shorter periods of interest. This serial measurement stream then gets merged with debug output from the device being studied, making it possible to see what various operations "cost".

In taking these measurements, it's also important to consider that I/O interfaces like serial channels and programmers can contribute or steal current, so these either need to be disconnected or their impact evaluated before a reliable measurement can be made.

Not the answer you're looking for? Browse other questions tagged or ask your own question.