I would like to use the BBB to measure the voltage on two battery banks (12V and 24V). The batteries can go well above the nominal voltages however to 15 and 30 volts at max respectively. In addition to using a resistive voltage divider to step down the voltages to the 1.8V required by the ADC is there a way to ensure that the voltage never excedes 1.8? I've been reading around about zener diodes and it seems like they would work, but I'm not quite sure about the implementation. Any advice?
I puzzled over this for quite a while, in the end I used low-power,
low-voltage OP amps running from the 1.8 volt reference output on the
BBB. The ones I have used are LM10CN which take a minsicule current
(so work OK even though the reference output isn't really supposed to
supply current) and have inputs which can stand up to 40 volts. This
guarantees that you can't overdrive the ADC input.
If you run the voltage through a non-inverting op amp that is powered
at 1.8 volts + and ground, then the output voltage can never exceed
the supply voltage. The op amp should be capable of rail to rail
The problem with zeners and straight diodes is that the voltage can
exceed the nominal voltage if there is too much (not likely here), but
also that the impedance of the diode must be compensated for.
Also make sure that the measurement range (depending on reference and
ADC setup) does not saturate before your maximum desired voltage. I
suspect that 1.0 volts maximum may be typical. (It is on an Xmega
depending on the choice of reference).
IMHO overvoltage protection with diodes is a good choise for this application. (It shouldn’t be necessary to compensted the diodes impedance in this case.)
But Zener diodes with 1.8 V are expensive and not so easy to find. Instead, I use a voltage divider and a normal LED (orange color) in parallel to the ADC input.
The LED current is nearly zero below 1.5 V and grows to maximum at 1.8 V. That way I loose 1 / 6 of the ADC resolution. But it’s a cheap solution with low space requirements on the PCB. And it provides an additional overvoltage indicator (the burning LED).
When I need high accuracy (or full 12 bit range), I compensate the non-linear LED current by software.
The maximum overvoltage can get adjusted by the impedancy of the voltage divider. (It isn’t limited as in the OP amps solution.)