# What are the limits for differential amplifiers

Joined Jul 21, 2012
46
Hi

I'm designing a rudimentary circuit for measuring the cell voltages of an 8 cell LiFePO4 battery pack. Before anyone suggests using custom BMS chips like bq76930 et al, let me just say that I am already working on a BMS based around such a chip. This project is ONLY about measuring cell voltages with a small degree of accuracy, say to 2 decimal places. Cells voltage will typically be between 2 and 3.7V - this will be measured using the ADC on an Arduino or a MCU running 5V.
I have tried a few designs using MUXs to select and switch the cell - and + lines, but failed due to the total voltage across the pack exceeding the specifications of the MUX being used. I've now moved to a different approach (and one that others have tried, albeit with fewer cells being measured) using an op amp per cell. Essentially, the circuit consists of 8 op amps configured as voltage followers (the role of these is simply to limit current from each cell) and these provide the voltage from each cell, nominally 3.6, 7.2, 10.8...and so on up to cell 8 (28.4).
A further 8 op amps will then be configured as differential amps to get the voltage difference between C1 and GND, C2 and C1, C3 and C2... C8 and C7.
Each of these will use identical resistors to give Unity gain so the cell voltage can be read directly without any multipliers.
Finally, a 8:1 MUX will be used by the MCU to select which cell voltage to be measured...and each of these are expected to be well below 5V.
Now my question...
If the op amps are powered directly by the pack voltage (say between 23V and 28V) then what, if any, are the problems with this design? My reading of op amps states that they are in some ways limited by their voltage extremes - in my case this is likely to be 0V to 23-28V.
If I use an op amp which can operate with up to 36V and with a low Vos, what gotchas am I likely to run into?

I've attached a circuit diagram showing the main components.

Cheers
Mike

#### Attachments

• 160.4 KB Views: 51
Last edited:

Joined Mar 10, 2018
4,057
You could use this approach, single chip design, a PSOC.

IDE (PSOC Creator) and compiler free. https://www.cypress.com/products/psoc-creator-integrated-design-environment-ide

Dev board, probably could use the $10 board. https://www.cypress.com/documentati...oc-5lp-prototyping-kit-onboard-programmer-and You would optimize the divider for each cell number to give max accuracy on measurements. The dividers bring the cell V into CM range for SAR. You make single ended measurements and then calc from them individual Cell V's. Ignore the R's all being 10K, thats just the tool default value. Note these are external to chip. The Vref for the ADCs is onboard, good for +/- .1% if I recall correctly. Note right hand window, most of chips resources still left for other uses, like OpAmps, DACs, Digital counter/timer/pwm/DSP/gates/flops/general logic/LUT, LCD, Quadec....... Processor core is ARM M3. The ADC, SAR, is 12 bit. You could use the DelSig onboard + an onboard mux which goes to 20 bits. This might allow you to use a thin film R array with equal value Rs bottom side and still get accuracy/resolution you want. If you needed to do a current test of stack DelSig has ability to handle input 100 mV outside either rail. So would work good for a low side sense shunt. Last edited: #### Hymie Joined Mar 30, 2018 1,014 What you are proposing to do should work, but I question the need for buffer amps (voltage followers), since input resistors at each op-amp could limit the current from each cell. You should consider in your design that a semiconductor IC can fail short circuit (any pin to pin); therefore to protect the battery pack/cells you need to add some resistance at critical locations (even to the op-amp rails). Consider that any op-amp pin could fail short to the op-amp 0V pin – without adequate protection (impedance) a large fault current could flow. Other than providing the above protection, given the accuracy you are seeking I would recommend you include the facility to adjust the zero of each op-amp to remove any inherent offset. To reduce battery drain from the monitoring circuit, I would use 10kΩ resistors (where you have 1kΩ) in your circuit. In relation to your original idea of using MUX, you could include a voltage division across the cells (say reducing all measured voltages by 2) and correct for this reduction in any data processing. Thread Starter #### NomadAU Joined Jul 21, 2012 46 You could use this approach, single chip design, a PSOC. IDE (PSOC Creator) and compiler free. https://www.cypress.com/products/psoc-creator-integrated-design-environment-ide Dev board, probably could use the$ 10 board.

https://www.cypress.com/documentati...oc-5lp-prototyping-kit-onboard-programmer-and

You would optimize the divider for each cell number to give max accuracy on measurements. The dividers
bring the cell V into CM range for SAR. You make single ended measurements and then calc from them individual
Cell V's. Ignore the R's all being 10K, thats just the tool default value. Note these are external to chip.

The Vref for the ADCs is onboard, good for +/- .1% if I recall correctly.

Note right hand window, most of chips resources still left for other uses, like OpAmps, DACs, Digital
counter/timer/pwm/DSP/gates/flops/general logic/LUT, LCD, Quadec....... Processor core is ARM M3.

The ADC, SAR, is 12 bit. You could use the DelSig onboard + an onboard mux which goes to 20 bits. This might
allow you to use a thin film R array with equal value Rs bottom side and still get accuracy/resolution you want.

If you needed to do a current test of stack DelSig has ability to handle input 100 mV outside either rail. So would
work good for a low side sense shunt.

View attachment 205521
Thanks for the suggestion Danadak. I will continue with the use of op amps because I've already got a pile of them ready to go. However I'm also going to take a look at the SoC you recommended. I've got a lot of experience using more basic PIC mcus but haven't really looked into anything more comprehensive than the basic PICs. Thanks for the direction.
Cheers
Mike

Joined Jul 21, 2012
46
What you are proposing to do should work, but I question the need for buffer amps (voltage followers), since input resistors at each op-amp could limit the current from each cell.

You should consider in your design that a semiconductor IC can fail short circuit (any pin to pin); therefore to protect the battery pack/cells you need to add some resistance at critical locations (even to the op-amp rails). Consider that any op-amp pin could fail short to the op-amp 0V pin – without adequate protection (impedance) a large fault current could flow.

Other than providing the above protection, given the accuracy you are seeking I would recommend you include the facility to adjust the zero of each op-amp to remove any inherent offset.
To reduce battery drain from the monitoring circuit, I would use 10kΩ resistors (where you have 1kΩ) in your circuit.

In relation to your original idea of using MUX, you could include a voltage division across the cells (say reducing all measured voltages by 2) and correct for this reduction in any data processing.
Thankyou for the feedback Hymie. Everything you say makes sense to me and I hadn't given any thought to the shorting risk and need for suitable protection. By using resistors instead of the voltage followers, I get some of the pins protected as a bonus so I'll probably do that. Finally, your suggestion re the MUX solution to use a voltage divider on the input is sound and I'm now wondering why I didn't think of it at the time.
Many thanks for taking the time to answer my questions.
Cheers
Mike

Joined Jan 15, 2015
6,322
This is your opamp. Here is an example which parallels what you want to do. Vcc is the B_Total so looking at the data sheet and looking at the second link I don't see why this won't work. You aren't exceeding any common mode specifications. Actually this has become a popular means of measuring individual cells in a series LiPo battery pack. All things considered I don't see why it won't work. This recently came up in another forum and as I recall even using the same operational amplifier.

Ron

#### RPLaJeunesse

Joined Jul 29, 2018
195
A low-parts-count approach would be to use an single ADG5207 multiplexer feeding a LT6375 difference amplifier. Control the mux from the Arduino and get each cell voltage right out of the LT6375. Definitely want to add resistors (10K 1%) between the batteries and the mux inputs to allow for power sequencing situations that might otherwise destroy the mux. Note that these resistors will reduce the output of the LT6375 by about 5%, software can compensate for that easily.