# enhancing to .1 mV resolution

Hello, I'm in the planning stages of a sensor array that will include several heat flux transducers, pyranometers, pyrgeometers, and thermistors for a top-to-bottom thermal analysis of an extremely insulated space. While I am used to using a Campbell Scientific data logger for projects like this, I found the Arduino Uno and have latched onto the family since then. Despite my desire to make my experiments as open source as possible, the feasibility of using the Arduino Uno or other boards must be examined before I abandon my proven Campbell Scientific partners.

I'm not worried about sensing the thermistors, they output 10 mV for every degC change. If I understand correctly, the Uno has a 5V/1024 = 4.88 mV resolution. Anyway, here's the problem: my heat flux transducers are currently calibrated to 6.04 (+/- 5% acc) (W/m^2) / mV. My simulations for a similar set up suggest that I will be measuring a heat flux on the order of 3.15 W/m^2. Clearly, being able to sense ~30 W/m^2 simply won't work. For quality of data, I would want a resolution of .1 mV. What are my options for increased resolution in the Arduino family? Are there 15 or 16 bit resolution options? Since I will probably never get measurements outside of the 1 V range, could I limit my sensing range to 1V / 1024 ~= .1 mV? If I could get a resolution of .1 mV, all of my sensing requirements would be met.

No.

First, there is no 16-bit resolution option. The A/D converters are 10-bit converters, and you can maybe squeeze out some extra bits through averaging but they are not precision analog front ends and there are no noise specs. They also have a "typical" absolute accuracy of +/-2LSB's so even at a 1.1V voltage reference (one of the options) and 2^10=1024 steps, the theoretical resolution is 1.1V/1024=1.07mV but the uncertainty is +/-2.15mV in each measurement.

You will definitely need an external, carefully-designed analog front end and separate >10-bit A/D converter that ensures your 0.1mV signal is distinguishable from noise.

That is certainly achievable, and may end up being a lower-cost overall option than your dataloggers. But do not confuse the hobbyist-quality A/D converters on an 8-bit microcontroller for a precision scientific instrument.

And no, I don't work for Campbell Scientific :)

-- The Aussie Shield: breakout all 28 pins to quick-connect terminals

Since I will probably never get measurements outside of the 1 V range, could I limit my sensing range to 1V / 1024 ~= .1 mV? If I could get a resolution of .1 mV, all of my sensing requirements would be met.

Doesn’t 1V / 1024 <> = 1mv not .1 mv resolution steps?

Your Arduino analog input pins can be changed internally to utilize a 1.1vdc internal reference instead of the default +5vdc reference, so 1 mv resolution is possible. If that does not meet your needs then one of the many external I2C A/D converters can be used and wired to your arduino board.

http://arduino.cc/en/Reference/AnalogReference

Take a look at analogdevices.com and request a sample of a 12-bit or 14-bit ADC. They come with many interfaces, find one you think you could interface easily.

Perhaps borrow some ideas from this if you are unable to find a part in DIP format that is easy to work with. http://store.gravitech.us/i2c128anco.html

I need to do some A-to-D sampling of a signal that will range from 0 to 50mv. I have a few of the Gravitech I2C-ADC boards so I can do 12-bit resolution, but it seems like I'll be sampling way down in the extreme lower end of everything, even if I use a 1.1v reference. I'm wondering if it would be better to amplify my low signal up to a higher level and sample it there, or would amplifying it cause more noise and error?

andywatson: I need to do some A-to-D sampling of a signal that will range from 0 to 50mv. I have a few of the Gravitech I2C-ADC boards so I can do 12-bit resolution, but it seems like I'll be sampling way down in the extreme lower end of everything, even if I use a 1.1v reference. I'm wondering if it would be better to amplify my low signal up to a higher level and sample it there, or would amplifying it cause more noise and error?

Yes, for such low level signals it is common to utilize a instrumentation op-amp stage between the sensor and the A/D convertor. Lots of modules and raw instrumentation opamp chip can fill this requirement. Just start googling http://www.google.com/search?sourceid=navclient&aq=0&oq=instrumentation+op&ie=UTF-8&rlz=1T4GGLL_enUS373US373&q=instrumentation+op+amp

Lefty

And definitely read the relevant sections of The Art of Electronics.... If precision is important its vital to design the circuit correctly. You don't want to find you're just measuring the temperature of your electronics!

However if absolute precision isn't important an op-amp stage with adjustable offset might be quite useful in boosting your signal. You mention a resolution of 100uV but don't say what the range of values is, nor if absolute v. relative precision is important.

For serious applications I wouldn't recommend any Arduino board as they all connect analog ground to digital ground - this will lead to a variety of problems in precision measurement.

MarkT: And definitely read the relevant sections of The Art of Electronics.... If precision is important its vital to design the circuit correctly. You don't want to find you're just measuring the temperature of your electronics!

However if absolute precision isn't important an op-amp stage with adjustable offset might be quite useful in boosting your signal. You mention a resolution of 100uV but don't say what the range of values is, nor if absolute v. relative precision is important.

[u]For serious applications I wouldn't recommend any Arduino board as they all connect analog ground to digital ground - this will lead to a variety of problems in precision measurement.[/u]

I have a problem with that line -- the rest I agree...

Now a 50KHz sampling rate and a choice of single ended or differential output should work for temperature on ovens or monitoring heat loss -- this is an application where the variations are slooowwww -- so you only have to deal with the accuracy.

I am using a Mega2560 to do things which appear to be difficult with some of the other controllers I have here. Each problem has a specific problem space. Your generalization is correct -- but you could convince people to not do something that is done cheaply and effectively on the arduino.

Now I do think that I have proved that 150 samples per second (SPS) is about the best I can do logging data via a UDP collection system. So I am going to caution people about that. But I expect that when I finally post some code people will prove that I don't have a clue what I am doing and that suggestions for improvement will be made. I appreciate that and hope people are that critical. I tried to push it to the 440Hz limit of the BMA180 in Mode 3 at 1200Hz bandwidth -- it just didn't work out. It dropped almost 2 out of three 48Byte UDP packets. A smaller packet might help a bit.

But.... within those bounds I am happy.

Using TWI/I2C and SPI sensors that offload the work make a real improvement in the collection rates possible.

[u]Once you have developed an approach, You have to test to confirme the calculations...[/u] Once you have a base of tests -- then your predictions are likely to be better.

Just my \$0.02 which is probably worth less than your \$0.02

mberwind: Hello, I'm in the planning stages of a sensor array that will include several heat flux transducers, pyranometers, pyrgeometers, and thermistors...

mberwind, out of curiosity, what kind of heat flux sensors are you working with? I am trying to interface the Omega thin film sensor, which outputs 6.5 µV/Btu/Ft2Hr.

"Ultra-Small, Low-Power, 16-Bit Analog-to-Digital Converter with Internal Reference" :o Take a look http://www.adafruit.com/datasheets/ads1115.pdf

Did you notice that you responded to a 4 year old thread?

polymorph: Did you notice that you responded to a 4 year old thread?

Age Bias, Call the PC Police, Age Bias.

Chuck.

It is a good answer, though.

RuggedCircuits: No.

First, there is no 16-bit resolution option. The A/D converters are 10-bit converters, and you can maybe squeeze out some extra bits through averaging but they are not precision analog front ends and there are no noise specs. They also have a "typical" absolute accuracy of +/-2LSB's so even at a 1.1V voltage reference (one of the options) and 2^10=1024 steps, the theoretical resolution is 1.1V/1024=1.07mV but the uncertainty is +/-2.15mV in each measurement.

Indeed the overall measurment precision is far less than that. It depends on the quality of your reference voltage. The internal reference to 5V has a horrible inaccuracy especially if powered from USB, the internal provided references are not much better. If you really need a measure, you must provide a reliable voltage reference value. You may use a LM431 IC or even a MAX6072 (which is somewhat overkill). If it really must be cheap and you don't make much usage of the internal 3,3 V power, you may use that one as a reference, but the 5V is a clear no-go for measurements But then, don't expect more than a few percent precision, far less than the resolution of the ADC.