I have a project and wish to choose the correct battery back for it such that it will last the required amount of time between each recharge of the battery pack. I am using an Arduino Duemilanove with various attachements and shields.

I can measure that the draw on the project at the point the USB connects from my PC to the Arduino board (by attaching the multimeter to the Vcc and GND solder points on my Arduino board) which reads 5V DC as expected. Is there a way I can meausre the current (without any additional equipment) ?

I suspect somehow using Ohms law and measuring the resistance between two points would be the answer (knowing the voltage is 5V) but I can't work it out (as in where to measure) with my lack of any electrical knowledge.

2 Answers 2


No, you won't get the right result measuring resistance. Integrated circuits contain lots of semiconductors which are inherently non-linear.

You need to somehow put your multimeter in series with the power supply, set to the mA range. The easiest way I can think of is to use an external battery (7v or higher) and make up a custom cable with standard barrel jacks. As your board appears to have a linear voltage regulator, the current measured will be very close to the current consumed when powered from the USB port.

  • 2
    NOTE: This may be inaccurate if the power usage isn't constant - driving a stepper motor, for example; high current for a short period, low current the rest of the time. Your multimeter will not be quick enough to pick up the peaks and troughs. You will probably get the median (most common) current, not the mean (average). Commented Mar 23, 2015 at 1:09
  • That is a fairly simple method an electrical beginner like me can follow, thank you very much. I knew there would be a simple way but I couldn't see it myself.
    – Baldrick
    Commented Mar 25, 2015 at 8:24

A reasonable method is to place a small value resistor in series with the supply, connect a capacitor from the Arduino side of the resistor to ground and then measure the voltage drop across the resistor.

If you set the resistor value such that the highest current drawn drops less than about 0.1 Volts then it will have minimal effect on most circuits.
For example if max current is 100 mA then as R = V/I, Rmax <= V/I = 0.1/100 ma = 0.1V/0.1A = 1 Ohm.
So generally
Rseries <= Vdrop_max / Imax_A (I in Amps) or Rseries = Vdropmax x 1000 / Imax_mA (I in milliAmps)

Then I_ma = Vmeter x 1000 / R


Max current = 350 mA.
R <= V/I = 0.1V /0.350 A = <= 0.286 Ohm. A 0.1 Ohm - which is a readily available standard value, will probably be good.

Then if meter reads say 0.033 volt (33 millivolts) then
ImA = V_mv / R = 33/0.1 = 330 mA.

A larger resistor value, giving a larger voltage drop, can be used if the circuit will tolerate the resultant lower supply voltage.

Measure the drop with a meter set to 0.2 V (200 millivolts). Nit all meters have a 0.2 V range but even some reasonably cheap ones do have and it is worth having a meter with this range for various purposes.

Connect a capacitor from Arduino 5Vin to ground - the more uF the better. 100 uF probably OK, 1000 uF better ... .

This method will smooth out short current peaks and give you an average current. This aspect can be expanded on if of interest.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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