A way to double differential ADC resolution in a 4...20 mA current loop monitoring circuit?

Thread Starter

SergioS

Joined Apr 8, 2019
8
I work with hydraulic equipment, and I built a small wireless transmitter that allows me to use industrial 4...20 mA pressure transducers for diagnostics - I have used it extensively and quite successfully with wika A-10 sensors in the field for some time now. It uses a Silicon Labs BLE121LR Bluetooth module based on CC2541 SOC. My current design makes use of the built in 12 bit ADC in differential mode (internal 1.24 Vref) with negative input tied to the GND and positive tied to the 56 ohm current sensing resistor, which gives the span of 0.224 to 1.12 V (left part of the schematics). I have experienced no problems so far regarding noise, stability, etc. With this simple setup the ADC outputs 380 at 4 mA and 1890 at 20 mA, which provides a reasonable resolution of +-1500 steps.


I am trying to "upgrade" it by doubling the size of the current sensing resistor and using an external 1.25 vref, that's tied to the negative ADC input (the right part of the schematics), which allows (I think) spreading the doubled voltage across the positive and negative spans of the ADC due to the "shifted zero". I've tested this setup without a precision vref - just a voltage divider and the internal 1.24V Vref - and I did see that the amount of steps across measured span roughly doubled. My question/doubt is (before I start ordering components and dive into re-designing the pcb, etc...) -


In principle - is this a correct way to "make use" of the negative span of the differential ADC, or can I run into some issues by doing it this way? Seems like a very cheap way to double resolution (in situation when I onlly need to measure positive voltage in relation to common GND), but I have very little experience with this type of ADCs, and I want to use as few components as possible.


Some notes - GND is common to everything. Sensor is powered by a booster, not showed in the schematics. Pins 3 and 4 of the BLE121LR are the positive and negative inputs of the module's differential ADC, pin 7 would be the external Vref. The module transmits the ADC reading via Blueooth to the Android App that was created for this purpose.
 

Attachments

Thread Starter

SergioS

Joined Apr 8, 2019
8
A correction is needed (apparently I made the make-shift diagram too fast) the pins in the schematics are incorrect, the "correct" pins would be pin 6 - P0_0 and pin 5 - P01, but the point remains - doubt a possibility to use "shifted negative" on a differential ADC to increase resolution.
Sorry about the mistake...
 

dendad

Joined Feb 20, 2016
4,451
I've not used those chips myself. Doubling the termination resistors will double the reading but it may be better to add an amplifier with adjustable gain to the BLE121 input. And often some filtering is worth while. Try a series resistor from the termination resistor to the ADC input, and a bypass cap from the ADC input to ground.
Good power supply filtering is essential too. Lots of bypassing caps.
 

danadak

Joined Mar 10, 2018
4,057
Not exactly, if I have a 12 bit diff ADC, then there are 2 ranges, each 11 bits,
one covering positive signals, the other negative. Or stated another
way 12 bits differential is 11 bits resolution + sign bit. Here is a 24 bit
example -

upload_2019-4-12_6-32-5.png

So using both domains of the differential input do not double resolution,
but does double dynamic range.



Another way of increasing ENOB is averaging samples. See attached.


Regards, Dana.
 

Attachments

Last edited:

Thread Starter

SergioS

Joined Apr 8, 2019
8
Not exactly, if I have a 12 bit diff ADC, then there are 2 ranges, each 11 bits,
one covering positive signals, the other negative. Or stated another
way 12 bits differential is 11 bits resolution + sign bit. Here is a 24 bit
example -

View attachment 174825

So using both domains of the differential input do not double resolution,
but does double dynamic range.






Another way of increasing ENOB is averaging samples. See attached.


Regards, Dana.
Thank you for the files, Dana! I am new to this, and teh information is extremely helpful (I will need to read it more than once to get it all, :)..
The firmware takes an adjustable amount of samples (from 10 to 200, at roughly 100Hz) and then averages the result and sends it out - this made the reading much more stable, although I see now that my circuit will need some filtering.
What I meant when I said "increase the resolution" - was the resolution of my concrete "measuring case", since I was getting my sensor's output divided "in 1500 parts" and now can get it "in 3000 parts", which for a 400 bar sensor, I assume, would give me resolution of 0.3 bar in the first case and 0.15 bar in the second. Am I correct in this assumption?
 

Thread Starter

SergioS

Joined Apr 8, 2019
8
I've not used those chips myself. Doubling the termination resistors will double the reading but it may be better to add an amplifier with adjustable gain to the BLE121 input. And often some filtering is worth while. Try a series resistor from the termination resistor to the ADC input, and a bypass cap from the ADC input to ground.
Good power supply filtering is essential too. Lots of bypassing caps.
I have done some tests, and I see now that I absolutely will need to "engineer in" some filtering. Can you suggest a value for the bypass cap and the resistor? Reading rate is about 80-100 samples/sec.
 

dendad

Joined Feb 20, 2016
4,451
For the bypass caps, I generally use a 100nF ceramic as well as a10uF Tantalum.
Depending on how fast the input 4-20 signal changes, try a 10nF, 100nF ....
If it is slow, like a water tank level, even a 10uF Tantalum cap across the input of the ADC.
And a 10K resistor from the termination resistor to the ADC input. If the series resistor is too high it will effect the reading.
Play around with it a bit and see what changes.
Most of my designs are "seat of the pants" so I just chose values that feel like they will work, at least for a start, then revise them as needed.
 

Thread Starter

SergioS

Joined Apr 8, 2019
8
Than you
For the bypass caps, I generally use a 100nF ceramic as well as a10uF Tantalum.
Depending on how fast the input 4-20 signal changes, try a 10nF, 100nF ....
If it is slow, like a water tank level, even a 10uF Tantalum cap across the input of the ADC.
And a 10K resistor from the termination resistor to the ADC input. If the series resistor is too high it will effect the reading.
Play around with it a bit and see what changes.
Most of my designs are "seat of the pants" so I just chose values that feel like they will work, at least for a start, then revise them as needed.
Thanks! I guess I'll just have to re-do the board and run some more tests wiht the filtering in place.
 
Top