Pages: [1]   Go Down
Author Topic: Lowest AREF value  (Read 1095 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello.
I'm trying to measure very small signals (under 500mV) with the ADC of my Duemilanove board and I need precision around 0.1mV.
So that means I need a small ADC reference. With 2 resistive dividers I obtained 120mV and 60mV. 120mV is the AREF input and 60mV is the ADC input. Logically that should mean I always read 512 from the ADC pin but no mn the reference.
What did I do wrong ?
What is the lowest AREF value I can use ? Documentation says between 0 and 5V, 120mV is in that interval last time I checked   smiley-lol

Here is the code:
Code:
#include <LiquidCrystal.h>
#define inputPin A0

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int adInput = 0;

void setup()
{
  lcd.begin(16, 2);
  analogReference(EXTERNAL);
}

void loop()
{
  adInput = analogRead(inputPin);
  lcd.setCursor(1,0);
  lcd.print(adInput);
  delay(500);
}

And these are my resistive dividers
« Last Edit: February 25, 2011, 04:41:10 pm by oilburner » Logged

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

The minimum reference voltage is 1V. This is indicated in Table 28-16 "ADC Characteristics" of the ATmega328P datasheet.

That's one problem. The second problem is that 0.1mV signals are going to get lost in the noise on a "hobbyist" system like an Arduino. It is just not a precision analog measurement system. Noise induced from lights, cell phones, radios, etc. are going to be interfering with signals as low as 0.1mV and it will take a careful analog front end design to discriminate signals that are only 0.1mV apart from each other.

--
The Arduino Drum Machine: 14-track MIDI drum machine sequencer / groove-box
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks for the quick reply. I missed that characteristic in the datasheet. It will give me a 0.96mV resolution.

I'll have to find a GOOD voltmeter and re-do my measurements, something tells me my Oscilloscope is not accurate and my values were higher than what my o-scope measured in DC mode...So I'll be back with some more accurate measurements.
Signal amplification with active components is not a solution in my case.

From what I can gather there aren't any options to get more resolution out of the ADC, correct ?
« Last Edit: February 25, 2011, 04:59:51 pm by oilburner » Logged

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

Quote
From what I can gather there aren't any tricks to get more resolution out of the ADC, correct ?

Assuming your noise is normally distributed (doubt it) you can increase resolution (precision) by averaging: take 1024 samples and divide the sum by 1024 (shift right by 10), but that really helps only a little bit because of other inaccuracies in the A/D. Also in that table they show the *typical* absolute accuracy, which is +/-2LSB's. So even if your reading is precise to 0.96mV it won't be accurate to better than +/-1.92mV. Regardless of averaging. And those are *typical* numbers in the datasheet -- they don't dare specify worst-case smiley-wink

It's just not a precision instrument and what you are measuring definitely lands in the domain of "precision".

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

0
Offline Offline
Shannon Member
****
Karma: 222
Posts: 12725
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You need to amplify your signal with a good low noise op amp prior to conversion.  The on-chip noise on the 328p will definitely prevent 0.1mV measurements - high precision analog circuitry doesn't happen on the same piece of silicon as a processor, and since the Arduino commons the digital ground and analog ground it can't even achieve the figures in the datasheet.

The ideal solution will be to use a separate board with an instrumentation amplifier - depends on your accuracy requirements.  There are much better ADC chips available too if you want more resultion.  If your signal is 0..500mV then a gain of 10 would be ideal - but a rail-to-rail op amp would be needed to run from a single +5V supply.  Since the signals are small you will want a low-pass-filter to reduce noise.
Logged

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

Pages: [1]   Go Up
Jump to: