Go Down

Topic: Amplify low voltage signal and precise A/D conversion for arduino input (Read 402 times) previous topic - next topic

ArduinoMegaUno

Hi, I'm pretty new to sensor signal amplification and I need some guidance and feedback from some experienced folks. I hope some of you are able to help me out.

I have a sensor that outputs a signal in the 0-20mV range, depending on the sun irradiation. The sensor is passive and has two wires: High (+) and LOW (-).
In the datasheet they say the readout equipment should have an input impedance of >1MOhm.
It is stated in order to make precise measurements an accuracy of at least 5µV is required.
I would like to convert this signal to digital and feed it into an Arduino so that I can get the precision to detect the smallest detectable change of the sensor (the stated 5µV steps).
I will amplify the signal with a gain of 100 (more to that later), so after the amplification I should 'only' need an accuracy of 0.5mV to meet the minimum requirement.
In the end I would like to take a measurement every second (so only DC signal is important to me and I do not need any fast sampling rates as my sensor signal changes very slowly).

To achieve this I need to amplify the signal and convert it to digital. I will also need a higher bit ADC than the Arduino (MEGA) can offer.
What I came up with after research and some suggestions is the following:

I will use an instrumentation amplifier (INA) to measure the low sensor signal differentially.
I have chosen this INA (AD8237): Datasheet
I chose this INA in particular because it can handle my very low common mode voltage.
Also its gain error/offset drift seems to be pretty low. The input offset voltage is not that good but I can calibrate that out after my signal has been converted to digital.
Although this INA is a rail to rail device it will not swing completely to the rails so I plan to use it together with this Negative Bias Generator (LM7705): Datasheet
I will power the INA with 5V positive supply voltage and with the negative GND from this Bias Generator (in order to get down to true zero, as my sensor signal is 0-20mV I want to have an output swing that will include the zero 0V). I will use a gain of 102 in order to amplify my low sensor signal in the range of 0-20mV to 0-2.048V (As I plan to use an ADC with a reference voltage of 2.048V).
I verified this idea using the Diamond Plot tool by Analog Devices (so far the device should operate in the intended and valid range):
Click to view my configuration



Now as my signal is amplified and in the planned range I will feed it to an ADC (the ADC will also be powered with 5V supply).
I chose an 18Bit Delta Sigma ADC, this one (MCP3422): Datasheet
It has an internal reference of 2.048V (matching my amplified signal range) and an internal oscillator.
After comparing various ADC specs, I think that the specs of the MCP3422 look pretty decent (INL, ref drift/offset/error etc.).
As I would feed the signal coming from the INA to this ADC single ended, I would lose a bit.
But as this ADC has 18 Bits and to reach my desired accuracy of getting the 0.5mV step size/resolution using the 2.048V reference I would theoretically only need an effective 12Bit ADC theoretically.
So this should give me some room (As the ADC has 18 Bit and there are quite some noise/error/offset sources in my signal path).
I could finally read the converted signal value using the ADCs I2C interface.

So far the theory and the idea.
Now I would be really happy If some of you experienced guys could give me some feedback regarding this plan (so I don't have to find out the hard way).
Where do you see issues with this idea? Are there some things/specs that will not work together well as expected?
Do you think using the proposed devices I will be able to get the desired accuracy/resolution?
Is my understanding way off at some points or do you think it should work as described?

I would highly appreciate any feedback as I'm pretty new to this kind of stuff and so far after hours and hours of research and calculations I'm not sure If I'm on the right path.
Thank you already in advance, I'm looking forward to hear from you wise people :).

Have a great day!


ArduinoMegaUno

I would be very thankfull if someone could tell me if im going to run into some impedance issues by connecting the proposed
in-amp AD8237 and the proposed ADC MCP3422 directly?:

AD8237 Instrumentation Amplifier Datasheet:
https://www.analog.com/media/en/technical-documentation/data-sheets/ad8237.pdf

MCP3422 ADC Datasheet:
http://ww1.microchip.com/downloads/en/devicedoc/22088c.pdf

Or should it be possible without any problems to connect these two devices directly (maybe with a passive lowpass-filter of 1st order in between)?

Thank you!

MarkT

Well 100M is larger than 1M, so there's no problem with the impedance.

The amp's inputs are rail-to-rail so that's fine too - don't need any negative bias, just feed a known
voltage to the REF input that the outputs can handle, that's the whole point of the REF input, its the
reference for the output voltage.

You have fairly high impedances so noise-pickup will be something to consider.  Careful attention to gounding
will be essential with these low voltages, especially as the ADC is single ended.

What measurement bandwidth are you looking for?
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

ArduinoMegaUno

Thanks a bunch for your reply Mark! :)

Well 100M is larger than 1M, so there's no problem with the impedance.
Do you mean the impedances between INA and ADC? If so, where did you find these two specific values in the datasheet?
Can not find the output impedance value fo the INA and im not sure about the ADC input impedance either (Is it the value for 'Common Mode input Impedance' = 25MOhm for my single ended measurement?).

The amp's inputs are rail-to-rail so that's fine too - don't need any negative bias, just feed a known
voltage to the REF input that the outputs can handle, that's the whole point of the REF input, its the
reference for the output voltage.
Even this is a rail to rail INA its output is only expected to swing max. V_gnd + 0.05V appart from the rail. To swing completly to the bottom rail as my signal needs a true zero I chose the negative bias. Would that work though or do you see potential problems using that method?
Also If I understand the use of the reference pin properly I should feed a voltage of at least 0.05V into it to circumvent my INA to saturate before the bottom rail is fully reached. By applying a ref voltage of at least 0.05V the proposed INA could always handle the output, also if my sensor outputs a 0V signal, did I understand that correctly?
How would I generate this kind of low reference votlage in that case? (by using a resistive voltage divider I had to add a buffer stage as well as most of the ref inputs only accept low input impedances).
And by adding a higher ref voltage, I would loose too much of my ADC range (ADC has a ref voltage of 2.048V).
Would really appreciate it if you could help me to improve my understanding here. :)
But all in all there should be no issue regarding the negative bias and this idea should work?
So my signal chain Sensor->INA->ADC should be able to detect a true zero signal right?

You have fairly high impedances so noise-pickup will be something to consider.  Careful attention to gounding
will be essential with these low voltages, especially as the ADC is single ended.
I will provide a ground return path = providing a path trough a 10MOhm resistor to ground for both of the sensor inputs (before going into the INA).
I will bypass every supply of every device and trying to add a filter after the INA (before going in to the ADC).
Or did you mean smth. else? I would be very happy to learn from you :).

What measurement bandwidth are you looking for?
I will need to take one measurement with this circuit every second. The sensor signal changes very very slowly so no fast sampling rates are needed at all. Or do you need more exact info on this?

Thank you so much!

wvmarle

Do you mean the impedances between INA and ADC? If so, where did you find these two specific values in the datasheet?
Input impedance is listed in the data sheet (table 2).

Output impedance I can't find but there are some charts at p.18 of the data sheet showing how the output current swing is affected by the current drawn. Much stronger effect than I expected. Nonetheless no problem when the output goes to an Arduino ADC which has in input impedance in the GOhm range.
Quality of answers is related to the quality of questions. Good questions will get good answers. Useless answers are a sign of a poor question.

ArduinoMegaUno

Output impedance I can't find but there are some charts at p.18 of the data sheet showing how the output current swing is affected by the current drawn. Much stronger effect than I expected. Nonetheless no problem when the output goes to an Arduino ADC which has in input impedance in the GOhm range.
Thanks for the input.
Unfortunately I do not want to feed the output from the INA to the arduino ADC but into the MCP3422 ADC:

MCP3422 ADC Datasheet:
http://ww1.microchip.com/downloads/en/devicedoc/22088c.pdf

Can you tell me if there are issues regarding impedance connecting the AD8237 to the MCP3422 ADC?
Input impedance seems to be on page 5 of the datasheet (do I read it right that it only is on the MOhm range?).

Hope you can help me on this, thank you!

wvmarle

25 MΩ indeed - that's definitely good enough for that INA. I may be wrong on the Arduino one, if you want to know the exact number you'll have to look it up.
Quality of answers is related to the quality of questions. Good questions will get good answers. Useless answers are a sign of a poor question.

MarkT

Thanks a bunch for your reply Mark! :)
Do you mean the impedances between INA and ADC? If so, where did you find these two specific values in the datasheet?

No, the sensor and the INA's input.  The output impedance of an opamp or instrumentation amp is very very low.
Quote
Can not find the output impedance value fo the INA and im not sure about the ADC input impedance either (Is it the value for 'Common Mode input Impedance' = 25MOhm for my single ended measurement?).
Even this is a rail to rail INA its output is only expected to swing max. V_gnd + 0.05V appart from the rail. To swing completly to the bottom rail as my signal needs a true zero I chose the negative bias. Would that work though or do you see potential problems using that method?
No, the output will swing from the value of REF upwards, so just set the REF input at a suitable voltage,
its what is for, as a reference input.  You can read the REF pin voltage with the ADC too so it doesn't even
have to be very accurate or stable.
Quote
Also If I understand the use of the reference pin properly I should feed a voltage of at least 0.05V into it to circumvent my INA to saturate before the bottom rail is fully reached. By applying a ref voltage of at least 0.05V the proposed INA could always handle the output, also if my sensor outputs a 0V signal, did I understand that correctly?
Yes, that's how all instrumentation amps work, the output is a differential amplifier using the REF input.
Quote
How would I generate this kind of low reference votlage in that case? (by using a resistive voltage divider I had to add a buffer stage as well as most of the ref inputs only accept low input impedances).
The REF is an input pin with a very high input impedance, so its not at all critical, use a divider certainly.
Quote
And by adding a higher ref voltage, I would loose too much of my ADC range (ADC has a ref voltage of 2.048V).
Losing 0.05V from 2.048V is a problem?
Quote
Would really appreciate it if you could help me to improve my understanding here. :)
But all in all there should be no issue regarding the negative bias and this idea should work?
Yes, but its completely not necessary and will cause issues due to the input offset voltage
showing up as the output being able to go a bit below the REF voltage (a problem if REF = 0V)
Quote
So my signal chain Sensor->INA->ADC should be able to detect a true zero signal right?
You always have to calibrate for the input offset voltage, unless you use a CAZ or similar
instrumentation amp with zero offset
Quote
I will provide a ground return path = providing a path trough a 10MOhm resistor to ground for both of the sensor inputs (before going into the INA).
There shouldn't be any high value resistors, I'm talking about ensuring no ground loops or voltage injection due
to bad grounding layout.

Your idea of 10M resistors would completely break the requirement that the sensor only see a load impedance of 100M or greater.
Quote
I will bypass every supply of every device and trying to add a filter after the INA (before going in to the ADC).
Or did you mean smth. else? I would be very happy to learn from you :).
I will need to take one measurement with this circuit every second. The sensor signal changes very very slowly so no fast sampling rates are needed at all. Or do you need more exact info on this?

Thank you so much!
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

ArduinoMegaUno

@MarkT
Thank you for your very detailed and valuable post! :)

No, the sensor and the INA's input.  The output impedance of an opamp or instrumentation amp is very very low.
Ok, that means there is absolutely no problem connecting the instrumentation amp to the ADC i proposed directly or with a passive RC/LC filter in between, right?
(So when the output impedance of the in-amp is very low as you said, even just 2MOhm input impedance on the ADC would be enough?)

The REF is an input pin with a very high input impedance, so its not at all critical, use a divider certainly.
Not even a rail to rail in-amp can swing down to completly 0V, so sensors providing values from 0V - 20mv (e.g.) could not be fully read when generating values in the lower range of their spectrum. So it is common practice to use the ref pin in order to get the voltage above the point the in-amp can output a signal (so one can push the signal into the valid output swing range of the amp). So if i apply a ref voltage of e.g. 0.05V (thats where the bottom output swing of the amp starts), 0.05V on the amp output would mean my sensor is generating 0V. As soon as the sensor starts generating voltages above 0V this immediately can be detected on tzhe in-amp output.
I think I finally understood, only correct me on this in case im wrong please! :D


Yes, but its completely not necessary and will cause issues due to the input offset voltage
showing up as the output being able to go a bit below the REF voltage (a problem if REF = 0V)
By reading the datasheet of the negative bias generator it seems that it is made for exactly this purpose.
So it should still work but i might be carefull to not get amplified negative voltage?
I will try to use the ref/divider method but im interested why you think this would fail?


You always have to calibrate for the input offset voltage, unless you use a CAZ or similar
instrumentation amp with zero offset
How would you calibrate? Just short both inputs of the in-amp and compensate for that value later in software? Can I safely short the inputs for learning the offset value?


There shouldn't be any high value resistors, I'm talking about ensuring no ground loops or voltage injection due
to bad grounding layout.

Your idea of 10M resistors would completely break the requirement that the sensor only see a load impedance of 100M or greater.
In the datasheet of the in-amp: Datasheet
They say i need to create an 'input bias current return path'. (please see page 23-24).
Could you please check page 24 and tell me what to do here?

I hope you can help me one more time, the last post alredy helped so much!
Thank you! :)


Go Up