How much current does the Arduino need to use from a voltage source to read the voltage? I need to create a voltage divider to read the voltage of a battery above 5V and I want to use as high value resistors as I can to minimize power wasted by the resistor divider, but I want to make sure that the ones I use will still provide enough current for the Arduino to read the voltage, or that would just defeat the purpose wouldn't it :P? Would it be able to read a voltage that could only provide 12uA of current? What is the minimum recommended? Thanks in advance!
The Arduino needs a small burst of current when it takes a reading. If you take lots of readings per second, you will need more steady-state current. If you just take a reading once a second (for example), you just need to provide that burst of current once. This means you can use very high value resistors (like 1 megaohm) as long as you put a capacitor across the "bottom" resistor (that is, directly from the analog input to ground).
The capacitor will charge up to the voltage divider voltage, and when the analog read happens, the current will come from the capacitor, not the voltage divider. Then, the capacitor charges up again in preparation for the next reading.
With 1M resistors in the voltage divider and a 0.1uF capacitor, the effective time constant is 50ms, which means that after 5 time constants (250ms) the capacitor can be considered fully charged to the voltage divider voltage, and you can take readings about 4x per second.
--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons
LemonSlice762:
How much current does the Arduino need to use from a voltage source to read the voltage?
Another option is to switch the ground path of the resistor divider with a small signal transistor. You would then enable the ground path (digital high to base/gate) only for the time required to sample battery voltage.
RuggedCircuits:
The Arduino needs a small burst of current when it takes a reading. If you take lots of readings per second, you will need more steady-state current. If you just take a reading once a second (for example), you just need to provide that burst of current once. This means you can use very high value resistors (like 1 megaohm) as long as you put a capacitor across the "bottom" resistor (that is, directly from the analog input to ground).The capacitor will charge up to the voltage divider voltage, and when the analog read happens, the current will come from the capacitor, not the voltage divider. Then, the capacitor charges up again in preparation for the next reading.
With 1M resistors in the voltage divider and a 0.1uF capacitor, the effective time constant is 50ms, which means that after 5 time constants (250ms) the capacitor can be considered fully charged to the voltage divider voltage, and you can take readings about 4x per second.
--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons
Around how much is that "burst current" that the Arduino needs for the reading? It's not so much the saving of that power but I want to minimize the amount of power wasted and heat generated by the resistors, so I'm just going for the highest resistors that will allow continuous readings on the voltage. However I will say though, I did not think about implementing this capacitor, and it seems like a great idea because I don't need very fast voltage updates either. 4Hz is plenty fast for what I need it for at the moment, but I may need to take faster readings in the future using the same hardware setup. Much appreciated!
BenF:
LemonSlice762:
How much current does the Arduino need to use from a voltage source to read the voltage?Another option is to switch the ground path of the resistor divider with a small signal transistor. You would then enable the ground path (digital high to base/gate) only for the time required to sample battery voltage.
Thanks for the tip! But same deal as above, I'm not so much interested in saving the miniscule power, but rather minimizing how much the resistors use. I don't want the board to end up heating up because the resistors are low valued and enough current is being consumed. Thanks both of you for the ideas!
The burst current is microscopic, just enough to charge a 14pF (approx.) sampling capacitor. Suppose that charges from 0V to 2.5V, you'll need Q=CV=35pC of charge. If you take 4 samples per second that's 140pC per second, or 140pA.
The voltage divider itself will swamp that, as if you're measuring 5V with two 1M resistors you'll be drawing a steady-state current of 5/2M=2.5uA. There's not going to be any heat generated by that
--
The Ruggeduino: compatible with Arduino UNO, 24V operation, all I/O's fused and protected