I'm building a robot that I plan on running off of 12 volt
sealed, lead acid batteries ( UPS Batteries )
One of my 'things to do' is to figure out how to have the
robot recognize that the batteries are running low.
Is there a simple circuit ( that won't consume a lot of power
it self ) that will report the battery charge level via a
couple of I/O pins or RS-232 signals?
---
A 12 lead-acid battery is usually considered discharged when its
terminal voltage falls to 10V, so this will give you a low-going output
when that happens, and you'll only need a single polled µC I/O to read
it:
VBAT VBAT
| |
[51K] [10K]
| |
| +---[1M]---+
| | |
VBAT>---[10K]--+-------------+----|+\ |
| | | >--+--->LOBAT-
[10K] +--------| /
| | 1/2 LM393
| [LM4040-5.0]
| |
GND>-----------+---------+---------+
| |
+---|+\ |
| | >--+
+---| /
1/2 LM393
With the battery charged to 14V, the worst case total current draw will
be:
Input divider: 700µA
Reference: 176µA
Feedback R: 7µA
Pullup R: 0µA
LM393: 2500µA
--------
Total 3383µA ~ 3.4mA
With the battery at 10V,
Input divider: 500µA
Reference: 98µA
Feedfack R: 5µA
Pullup R: 1000µA
LM393: 2500µA
--------
Total 4103µA ~ 4.1mA
With two I/O's you can get a little warning before you got to 10V, and
then another hit when you got there you could use the spare comparator
and do this:
VBAT VBAT
| |
[51K] [10K]
| |
| +---[1M]---+
| | |
VBAT>--+--[10K]--+-------------+----|+\ |
| | | | >--+---> E1
| [10K] +--------| /U1A
| | | 1/2 LM393
| GND |
| |
| | VBAT
| | |
| | [10k]
| | |
| | +---[1M]---+
| | | |
+--[10K]--+-------------+----|+\ |
| | | >--+---> E2
[R2] +--------| /U1B
| | 1/2 LM393
GND |
|
[LM4040-5.0]
|
GND
With VBAT = 10V, the voltage on U1A+ will be +5V, and as soon as it
drops below that (since U1A is tied to the +5V reference) E1 will go
low, signalling that the battery is discharged.
Before that, the voltage at E2 will have gone low at the battery voltage
determined by when U1B+ fell to less than 5V, and that battery voltage
can be determined by setting up the voltage divider R1R2 so that when
VBAT is at the desired trip voltage the voltage at U1B+ will be +5.0V
Looking at the voltage divider like this:
VBAT E1
| |
[10K] [R1]
| |
+---5.0V = +---E2
| |
[R2] [R2]
| |
GND 0V
The relationship between the voltages and resistances can be stated by:
E2 = (E1R2)/(R1+R2)
So, since we know everything but the value of R2, we can rearrange to
solve for R2 like this:
R2 = (E2R1)/(E1-E2)
then plug in everything and solve for R2 with VBAT equal to whatever we
want it to be, say 11.0V for this example:
R2 = (5.0V*10KR)/(11.0V-5.0V) = 50000/6 = 8333 ohms
8333 ohms is an oddball value, being bracketed by 8200 ohms on one side
and 9100 on the other with 5% resistors and 8060 and 8250 ohms with
1%'ers.
If we look at the 1% band bounding the closest available 1%'er,8250
ohms, we'll get 8167.5 ohms for the low end and 8282 ohms for the high
end, so that means with a perfect 10K ohm for R1, a perfect reference, a
perfect comparator, and neglecting the effect of the hysteresis resistor
we'll get somewhere between
E1 = E2(R1+R2)/R2 = 5.0V*(10000R+8167.5R)/8167.5R ~ 11.122V
with R2 at its low resistance end, which is 11.0V + 1.11% and
E1 = E2(R1+R2)/R2 = 5.0V*(10000R+8282R)/8282R ~ 11.037V
at its high resistance end, which is 11.0V - 0.336%
Not too shabby...
The current drawn will be about a milliamp and a half more than the
single comparator with both comparator outputs low, but still not too
shabby!-)