5
\$\begingroup\$

I am attempting to make a battery powered alarm clock with an Arduino, and I would appreciate some help on the circuitry part. I am very inexperienced with electrical engineering.

I am using a voltage divider in parallel with the rest of my circuit so that I can feed it into a pin on an Arduino and read the battery life. I am using a two 100k resistors to lower my 4.5v power source to 2.25v (the maximum input voltage for a analog pin on an Arduino mini 3.3v is 3.3v). The three AAAs ran out of battery much quicker than expected, and I figured it might have something to do with the voltage divider. Is power constantly flowing through the voltage divider, even when I'm not reading any data from the pin? If so, does this reduce battery life?

Side question: I noticed the voltage divider was very inconsistent, is there a better way to lower the voltage going into the Arduino's analog pin?

\$\endgroup\$
  • 2
    \$\begingroup\$ "I wired the two resistors and output wire leading to the Arduino together so that they are all touching each other" - what does that mean? \$\endgroup\$ – user253751 Oct 31 '18 at 3:26
  • 3
    \$\begingroup\$ Welcome to EESE. Please edit your question and include a schematic and photograph of your circuit. You can click on "edit" then click on the icon that looks like schematic symbols to add a schematic to your question. The reason I request a photograph AND schematic is that some beginners may make a correct schematic, but then make a wiring mistake when they build the circuit. \$\endgroup\$ – mkeith Oct 31 '18 at 3:44
  • 3
    \$\begingroup\$ Yes, a voltage divider creates a leakage path for the battery. This is often addressed by switching the voltage divider off between the measurements. More details here. \$\endgroup\$ – Nick Alexeev Oct 31 '18 at 4:10
  • 1
    \$\begingroup\$ One thing to consider would be if you need to run your Arduino at 3v3. If you instead run the ATmega directly off the battery (and perhaps use 2 cells instead of 3), then you can just measure the internal ADC reference vs. the supply voltage and calculate backwards to determine the supply. Depending on the operations you conduct it's possible that this will cost more power than the voltage divider, but a lot depends on how carefully you engineer for low power, ie, use the clock divider, sleep modes, turn off everything unneeded, etc. \$\endgroup\$ – Chris Stratton Oct 31 '18 at 12:42
  • 1
    \$\begingroup\$ This is a good opportunity to use the ammeter mode on your multi-meter, if your widget is pulling more than 22 uA out of the battery-pack, it is something else on your design. Do you have a schematic? \$\endgroup\$ – sstobbe Oct 31 '18 at 13:13
3
\$\begingroup\$

Voltage divider indeed will drain your battery as long as it is powered. It is common to enable the divider just for reading the value and turn it off again. Here is an example of this approach used in Nordic Thingy (Page 65) :

enter image description here

With signal BAT_MON_EN you turn on/off the divider using the transistors and measure the divider value in signal BATTERY.

In your case, having 4.5V in a 200K resistors divider gives you a consumption of 22.5uA. The capacity of a AAA battery is ~1000mAh, so you have a total capacity of 3000mAh. Using digikey battery life calculator gives you an expected life of ~ 94000 hours, or ~4000 days (10 years). Just for the divider.

It could seem like it is a low consumption, but if you are building low-power devices, the average consumption of the whole system could be less than the divider consumption, in tens of uA or even nA.

\$\endgroup\$
  • \$\begingroup\$ Thank you for your answer! I don't think that the voltage divider is causing the power leakage. 22.5ua is just too small to make a difference. I got to thinking about something else though. I have a photo resistor that connects the ground of the battery to another analog pull up pin on the arduino. So this would cause power leakage as well. I was wondering how much battery the photo resistor would drain \$\endgroup\$ – cr5519 Oct 31 '18 at 14:32
  • \$\begingroup\$ Another cause of power leakage is unused pins in microcontrollers. Usually, datasheets gives advice on how to configure those unused pins to avoid leakage. And also it is important, that if you are going to low power or idle state, configure your used pins to avoid leakage. For example, UART TX pin is high in an idle state, so you should configure that pin as an input with pulldown, or an ADC input with pull-up. Having this into account, you could reach all those uA and nA specifications in datasheets ;) \$\endgroup\$ – gustavovelascoh Oct 31 '18 at 15:03
  • \$\begingroup\$ It is " ...you SHOULD NOT configure...", my bad. \$\endgroup\$ – gustavovelascoh Nov 5 '18 at 10:58
2
\$\begingroup\$

A decent fresh alkaline AAA cell has a capacity of about 1000mAh. You are drawing 4.5V/200K = 22.5uA.

That alone will drain the cells in about 5 years.

Sounds like something else is going on, if my assumptions are correct. Check out this website on modifying the Arduino to lower the power draw.

To get more consistent readings- you can try bypassing the divider with 100n to ground (at the ADC input) but another way would be to add a low power op-amp voltage follower buffer and increase the resistors to, say, 1M (keep the 100n bypass cap).

LPV821 would be gross overkill for the op-amp but it would work nicely. 650nA supply current, 7pA bias current, 1.5uV offset voltage, rail to rail and it can handle your supply voltage.

If you follow the switching advice as suggested by others, there is little loss in reducing the resistors to 15K or so which will improve the consistency of readings.

\$\endgroup\$
1
\$\begingroup\$

Is power constantly flowing through the voltage divider, even when I'm not reading any data from the pin?

Current is constantly flowing through the voltage divider, even when you're not reading any data from the pin.

Power is constantly being wasted in the voltage divider, even when you're not reading any data from the pin.

If so, does this reduce battery life?

Yes. Not by much, since they're 100k resistors, unless you did it wrong.

I wired the two resistors and output wire leading to the Arduino together so that they are all touching each other, does this effect anything?

I don't know what this means, so I can't comment.

\$\endgroup\$
  • 1
    \$\begingroup\$ Power isn't wasted. It is converted into heat. \$\endgroup\$ – Michael Koeppen Oct 31 '18 at 5:09
  • 8
    \$\begingroup\$ @MichaelKoeppen i.e. wasted, because I'm assuming the device isn't a space heater. \$\endgroup\$ – user253751 Oct 31 '18 at 5:09
  • \$\begingroup\$ @immibis an unwanted effect... \$\endgroup\$ – Solar Mike Oct 31 '18 at 6:21
1
\$\begingroup\$

The three AAAs ran out of battery much quicker than expected, and I figured it might have something to do with the voltage divider.

Based on the fact that you used 100K resistors, the voltage divider probably had very little effect on your battery life.

Is power constantly flowing through the voltage divider, even when I'm not reading any data from the pin?

Yes. 4.5V / (100K + 100K) = 22.5uA.

22.5uA * 4.5V = 101uW

If so, does this reduce battery life?

It does affect it, but in your specific case the effect is very small.

The capacity of a typical alkaline AAA battery is on the order of 1 Amp-Hour. With a 22.5uA load a 1 Amp-Hour battery would last..

1 Amp * 1 hour / 22.5uA = 44444 hours = 5.07 years.

Its not likely that the 200K resistors are the cause of your battery drain.

Its more likely that your micro-controller, voltage regulators, and other parts on the board are draining the battery.

You didn't mention if you are using rechargeable batteries or not, but many AAA rechargeable batteries will self-discharge in about a month with no load.

I noticed the voltage divider was very inconsistent, is there a better way to lower the voltage going into the Arduino's analog pin

A voltage divider is a good way to lower the voltage. The reason your readings are inconsistent is because the divider has very high output impedance.

100K * 100K / (100K + 100K) = 50K

Your ADC (like most ADCs) probably has a sampling capacitor inside of it. When the ADC begins to take a sample it must charge the sampling capacitor. For an un-buffered type ADC the sampling capacitor typically charges from the load. It will take a while for the divider output to settle.

For example if the internal sampling capacitor was 20pF then the time constant would be...

20pF * 50K = 1us.

If you wanted the output to settle to 8 bits of accuracy then your acquisition time would need to be at least...

ln(2^8) * 1us = 5.5us.

If the acquisition time on the ADC is not long enough the output won't be settled and your samples will be inaccurate. You need to buffer the output somehow.

If you sample infrequently, you can just put a 0.1uF ceramic capacitor between the divider output and ground. The external capacitor will charge the sampling capacitor very quickly thus making your settling time very low and improving the sampling accuracy.

Also note that the 50K output impedance makes the divider output very susceptible to electromagnetic interference from nearby digital circuits. EMI will result in random noise in your measurements. The capacitor will help with this as well.

If your ADC has any DC input leakage current specified you may also need to add a micro-power op-amp configured as a voltage follower as a buffer.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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