How to protect a ADS1115 voltage sensor from overvoltage?

Thread Starter

paddyB

Joined Oct 9, 2017
19
On a sailing boat I have a battery of 4 x LiFePo4 cells so nominal 12v. I want to measure the voltage of each cell. At the moment I have some messy perfboard & a 4 channel op amp to get differential voltage for each cell. This works but I used a 2nd opamp powered at 5v so the output could not go above 5v & damage the ads1115. Seems a long way round though...... Drawing up a easyeda/jlcpcb board at the moment

What about a 5v zenor diode to earth from each sensor input?

Image below might be a bit misleading from some virtual testing but it's the only image that comes to hand right now, hopefully gives the idea. Get rid of the op amps on the right & take the sensor input from the remaining op amps with a Zener to limit the voltage.

Any tips? THNX!!

1732610458420.png
 

MrAl

Joined Jun 17, 2014
13,667
Hi,

Zeners are not very good for this kind of application because their voltage is not accurate nor stable enough.
A solid state clamp circuit could be used for this.
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
Hi,

Zeners are not very good for this kind of application because their voltage is not accurate nor stable enough.
A solid state clamp circuit could be used for this.
Thnx for the reply. AliExpress just dropped of a bag of zeners so I can have a play. The ADS1115 can take up to VDD + 0.3 so just over 5v, the signal will have set off alarms if it gets to 3.45v - would a 3.6V zener be that inaccurate to not be of use? WiIl have a play today & see what these ones are like, never used them before. The op amp powered by 5v worked OK to limit the voltage into the sensor, just seemed not quite the right way to do it...
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
Sort of works with a 4.7V zener & 60ohm resister. Though feels like it's kicking in round about 3.5v which is just over the voltage range. Anyway, the jlcpcb board is very much a dev board with options for header pins for everything so it's easier to swap out a pennies component when the smoke comes out.
Zeners & resister can go in Z1A & Z1B etc.

1732635411310.png
 

ronsimpson

Joined Oct 7, 2019
4,647
The ads1115 has an input voltage rating of +/- 0.3V from supplies. But this is misleading. Current kills the IC not voltage. It is rated at +/-10mA on any input.
Example. If you pulled up in the input, From gnd to Vcc the input looks like many mega ohms. At about 0.3V above Vcc the input pulls current. (low impedance) At about 10mA the input protection diodes die.
It looks like you have a 5V supply. I think you want to measure a 0 to 15V range for a 12V battery. Make a 3:1 voltage divider on the input. 0 to 15 = 0 to 5V
You have 4x12V of battery. What happens if that input gets put at the 48V point by mistake? The extra current goes into the input protection dioses and into the 5V supply.
1-The current must be small, so it does not lift the 5V supply. Much less than the current the board pulls.
2-The current must be small, so there is less than the 10mA limit.
The voltage divider: Lets use a 60k resistor for the first resistor. Lets set the input voltage to 65V for a test. The voltage across the first resistor is 65-5V=60V. With a 60k resistor that is 1mA into the inputs.
60k ohms =1mA, 30k=2mA, 15k=4mA Build your divider so the current is limited at 1 to 4mA.
Also the wattage for the first resistor needs to high so it does not burn out.

Is this what you are looking for? RonS.
 

nsaspook

Joined Aug 27, 2009
16,250
The ads1115 has an input voltage rating of +/- 0.3V from supplies. But this is misleading. Current kills the IC not voltage. It is rated at +/-10mA on any input.
Example. If you pulled up in the input, From gnd to Vcc the input looks like many mega ohms. At about 0.3V above Vcc the input pulls current. (low impedance) At about 10mA the input protection diodes die.
It looks like you have a 5V supply. I think you want to measure a 0 to 15V range for a 12V battery. Make a 3:1 voltage divider on the input. 0 to 15 = 0 to 5V
You have 4x12V of battery. What happens if that input gets put at the 48V point by mistake? The extra current goes into the input protection dioses and into the 5V supply.
1-The current must be small, so it does not lift the 5V supply. Much less than the current the board pulls.
2-The current must be small, so there is less than the 10mA limit.
The voltage divider: Lets use a 60k resistor for the first resistor. Lets set the input voltage to 65V for a test. The voltage across the first resistor is 65-5V=60V. With a 60k resistor that is 1mA into the inputs.
60k ohms =1mA, 30k=2mA, 15k=4mA Build your divider so the current is limited at 1 to 4mA.
Also the wattage for the first resistor needs to high so it does not burn out.

Is this what you are looking for? RonS.
I think he has series connected LiFePo4 cells (Nominal Voltage, 3.2V) for a total for 12VDC nominal.
 

ronsimpson

Joined Oct 7, 2019
4,647
(Nominal Voltage, 3.2V) for a total for 12VDC nominal.
You are right. The input has a 2k & 10k but in my head I say 20k & 10k.
Thanks.

One options is to use 10k & 5k 0.1% resistors on all inputs. This way all channels could measure 0 to 15V. Us the same resistors on all inputs will save inventory.
The math is done in software.
I would put a cap from input to ground. For batteries the frequency response is not a problem. When static electricity hits it will be attenuated by the cap.
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
I think he has series connected LiFePo4 cells (Nominal Voltage, 3.2V) for a total for 12VDC nominal.
Indeed, liFePo4 cells so voltage doesn't actually alter much, maybe from about 3.2V per cell to max 3.45V. With differential reading of the cell voltages what can easily happen is if one cell gets disconnected from the sensor the op amp will read to the next cell down so more like 6.6v, worst case 13.3v. Zeners seem close to being a solution, enough to order a bare board & get measuring anyway. Not sure how else to do it , an op amp powered off 5v as a buffer before the ADS1115 works, just seems an untidy way to go.
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
You are right. The input has a 2k & 10k but in my head I say 20k & 10k.
Thanks.

One options is to use 10k & 5k 0.1% resistors on all inputs. This way all channels could measure 0 to 15V. Us the same resistors on all inputs will save inventory.
The math is done in software.
I would put a cap from input to ground. For batteries the frequency response is not a problem. When static electricity hits it will be attenuated by the cap.
Thanks.
Maybe I'm being a bit cautious but with LiFePo4 a few mV can be important so trying to tease the max accuracy out of everything. Think I'll order a board to play with different resister values & zeners & see what comes out of it, hopefully not the smelly smoke :)

Cap is good idea, thnx. Alos maybe for another project where I think I blew a Raspberry Pi uart pin from voltage induced using a ham radio onboard.
 

ronsimpson

Joined Oct 7, 2019
4,647
The opamp and the ADS1115 have the same input protection diodes inside. I see no benefit to adding more parts. OP-amps have a thing called input offset. They might add more errors into the system.
I would use individual resistors. "cost" I have worked in the voltmeter / signal generator group in a large company. We worry about keeping all the resistors at the same temperature. Facing the same direction. Sometimes we get them in a resistor pack. A 1% resistor pack is most likely matched much closer than 1%. Just a thought.
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
The opamp and the ADS1115 have the same input protection diodes inside. I see no benefit to adding more parts. OP-amps have a thing called input offset. They might add more errors into the system.
It does work though... :) Software calibration with an op amp buffer powered from 5v it tracks the best fluke meter I have to a mV or so. Just been chatting with an AI and seems I might just have got lucky with the op amp as a buffer powered from 5v as you said, back for another chat :) Friendly AI suggested looking at a ADA4077 ADA4117 https://www.analog.com/en/resources...cles/op-amp-input-overvoltage-protection.html which with a brief look seems to fit the bill, but surface mount only so can't really get some to play with. Beyond my soldering skills

1732646218820.png
 
Last edited:

schmitt trigger

Joined Jul 12, 2010
2,027
Hi,

Zeners are not very good for this kind of application because their voltage is not accurate nor stable enough.
A solid state clamp circuit could be used for this.
I strongly support this suggestion.
Additionally to what Al mentioned, zeners exhibit a soft conduction “knee” which would totally screw up the voltage divider ratio as it approaches the zener voltage.
 

Thread Starter

paddyB

Joined Oct 9, 2017
19
I strongly support this suggestion.
Additionally to what Al mentioned, zeners exhibit a soft conduction “knee” which would totally screw up the voltage divider ratio as it approaches the zener voltage.
Already been there on todays learning curve thnx :)
#4 " Sort of works with a 4.7V zener & 60ohm resister. Though feels like it's kicking in round about 3.5v which is just over the voltage range. "
 

MikeA

Joined Jan 20, 2013
442
but with LiFePo4 a few mV can be important so trying to tease the max accuracy out of everything
It's a 16 bit DA so you get 0.125mV resolution up to 4.096V.

If you use a 1:4 voltage divider, you get 0.5mV resolution from 0 to 16V.

liFePo4 cells so voltage doesn't actually alter much, maybe from about 3.2V per cell to max 3.45V
If that's true, you still get 500 steps between those voltages. So you get get a state of charge in 0.2% increments. Not good enough?
 
Top