Teensy 4.0 ADC reading for Battery Cell Voltage

Status
Not open for further replies.

jd9

New member
I'd like to use the Teensy 4.0 to monitor cell voltages of multiple Battery Packs. The basic idea is to use voltage dividers to scale down the voltages below 3.3V and read the voltage using the Teensys' ADCs. Since this is just one of many Tasks, and I plan to measure a multitude of cells, I use an analog switch (ADG728) to reduce the amount of Analog Pins I need. The schematic shows the basic idea. In the example schematic Pin 7 would be around 50V Voltage Divider Battery Pack.jpg

I was going to use the analogRead() function with an analogReadResoultion(12).

However I have some questions regarding this design and would appreciate some tips. Thanks in advance!

1.) I worry that the chosen resistor values are too high. Do I need to adjust those and if not, how do I chose the capacitors to get an accurate reading. Each cell voltage is read at a very low frequency.

2.) Can I connect the output of the analog multiplexer directly to an analog Pin on the Teensy or should I add a 3.3V zener diode to gnd as a further precaution.

3.) I can not guarantee, that the Teensy is powered when the battery cells are connected. Am I correct that this is a problem and what is the best way to fix this?
 
I read an article at RobotRoom.com ( http://robotroom.com/Solar-Recharging-3.html ) that gave me insight into multiple power sources with recharging using Zener diodes, that is the third page of a 3 page article that is well worth reading. As an additional measurement option of multiple analog signals, I personally would look into using a CD4067 to free up a bunch of pins with ADC. The 4067 allows for 16 analog signals. You can also use an SPI or I2C buss expander to control the CD4067 while only connecting the CD4067's Common pin to the Teensy.
 
The resistor dividers could be done all the same, actually it would make voltage reading and calculation much simpler. You would just lose one bit of precision at the lower voltage end of the battery pack.
The high impedance can be compensated with the mux and crossbar setting well before starting the ADC for precharging the circuit and ADC programmed to long sample time and speed set to high, but still you will forfeit a lot of precision per sample, which could only be conpensated by summing and filtering.
Anyway it will be difficult to get precision readings from the battery that way, because the ADC of the Teensy 4.0 is only 12bit, which renders 4096 positions at best
It could be reasonable to add an external ADC for that purpose.
Or try the differential approach:
With a differential input stage OpAmp and dual MUX, you could well enhance precision, as the input stage could give out just the difference between it's two inputs, as long as both of them do not exceed rail voltages, amplified with a factor that best covers ADC input range. The output signal could then be easily clamped to be within ADC input specs, while maintaining an impedance just at optimum for the ADC input. Best if you have higher voltage for the OpAmp supply, but still good, and protecting Teensy as well, if you have just 3.3V.
 
Status
Not open for further replies.
Back
Top