Pages: [1]   Go Down
Author Topic: enhancing to .1 mV resolution  (Read 2668 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Thanks ahead for any advice. 
Logged

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

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

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17255
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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
Logged

Global Moderator
Boston area, metrowest
Offline Offline
Brattain Member
*****
Karma: 513
Posts: 26247
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 09, 2011, 05:19:09 pm by CrossRoads » Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

0
Offline Offline
Newbie
*
Karma: 0
Posts: 48
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17255
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Shannon Member
****
Karma: 199
Posts: 11639
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

[ I won't respond to messages, use the forum please ]

Georgina Ontario
Offline Offline
Sr. Member
****
Karma: 5
Posts: 437
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

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

CrossRoads above pointed out this link.
http://www.gravitech.us/i2c128anco.html

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.

Once you have developed an approach, You have to test to confirme the calculations...
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
Logged

Just another Hacker

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1]   Go Up
Jump to: