Arduino measures its own current consumption

Hi folks,

You might want to measure the current consumed by your Arduino.

Usually one uses a shunt resistor (e.g. placed in the negative voltage feed) and measures the voltage at this shunt.

The problem is that -seen from the Arduino- the voltage at the shunt is negative and the ADC can't cope with negative potentials.

So we will use a dirty trick: plain silicon diodes begin to conduct @ 0,5 - 0,6 V.

Using that circuit:

you will roughly add 0,5 - 0,6V to the potentials around the shunt and shift them into positive values that can be read by the ADC.
The current will then be roughly proportional to A0-A1.
You must chose the shunt resistor value to generate a maximum tension of ~0,2V to get a reasonable precision and use matched diodes, or at least of the same type.

Enjoy!

Laszlo

A small schottky double-diode could mimimise temp drift.
1.1volt Aref might be needed to get some resolution.
Leo..

Wawa:
A small schottky double-diode could mimimise temp drift.

Temp drift is absolutely not a problem: you are measuring a differential potential. The drift applies on both sides and that eliminates its influence.

Wawa:
1.1volt Aref might be needed to get some resolution.

Yes, I forgot to mention.

RIN67630:
Temp drift is absolutely not a problem: you are measuring a differential potential. The drift applies on both sides and that eliminates its influence.

I mean temp difference between the two diodes.
With 1.1volt Aref the error could be two A/D values per degree C.

I also think the Arduino pins (at least A1) will be safer with a (10k) resistor between diodes and pin. You don't want a short between Arduino V-in and Arduino ground (like charging the V-in cap) to travel through A1 and the diode.
I also would add a 100n cap fom each pin to ground.
Leo..

Wawa:
I mean temp difference between the two diodes.
With 1.1volt Aref the error could be two A/D values per degree C.

Why would you have such a temp difference between the two diodes?
You have got a much greater error due to the different flowing current through the diodes as the ΔU between A0 and A1 increases.
But, hey, it is just a circuit to evaluate the own current consumption of the Arduino.

Wawa:
I also think the Arduino pins (at least A1) will be safer with a (10k) resistor between diodes and pin. You don't want a short between Arduino V-in and Arduino ground (like charging the V-in cap) to travel through A1 and the diode.
I also would add a 100n cap fom each pin to ground.

You may do it, but it works well already so.
I am averaging the current reading anyhow per software, so lets keep it simple and stupid.
Laszlo