Pages: [1]   Go Down
Author Topic: Measuring Accuracy of DC Volts  (Read 3106 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dear community,

I am looking for the measuring accuracy for Arduino Uno for the voltage inputs.

I know It can measure up to 5V, but I will be measuring from 0 to 5 mV from a sensor, What would be the accuracy with Arduino?

I am new to Arduino so any information you can provide me will be appreciated.

Thanks,

Luis

Logged

Brisbane, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1121
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Luis

If you use the inbuilt analog to digital capabilities on a Uno, it's capable of 10-bit accuracy, so 1023 steps between 0V and 5V (say) as the input.

That is done by using the analogRead() function (analogRead() reference).  Unfortunately for your needs this is too granular giving 5000mV/1023 = 4.9mV per step by default so it might be able to tell you something was present by returning a 1 or a 0 only.  Depending on your requirements that might be sufficient, but there is a way of improving this, by setting analogReference(EXTERNAL) first and connecting a 5mV source to the AREF pin on the Uno, redefining the maximum value to 5mV rather than 5V (analogReference() reference page.

I tried to find a note for the minimum functional voltage that AREF can take, and have not been able to find anything.  You'll have to try it to see if that's going to work out.  For this you'll also need a smooth 5mV reference voltage to connect to AREF - not sure if you have one of those, but it would be possible to construct with a voltage divider.

Another option (and one to take if you don't have a nice smooth 5mV voltage reference to feed in there) is to set the analogReference to INTERNAL which will use 1.1V as the maximum, giving 1.07mV per step so your readings might come back somewhere between 0 and 5.

If you need greater resolution than this, you could choose an external ADC with a higher resolution or perhaps work with an amplifier to increase the output range to 0-5V (say), read it via the Uno's ADC and scale the result in your code back to 0-5mV.

Just some thoughts to start the conversation anyway  smiley
Geoff 
Logged

"There is no problem so bad you can't make it worse"
- retired astronaut Chris Hadfield

0
Offline Offline
Shannon Member
****
Karma: 200
Posts: 11694
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

For measuring in a range of 0mV to 5mV you will need a rail-to-rail instrumentation opamp such as the INA326 (although that only has a max gain of 100)
Logged

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

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

Dear all,

Thank you very much for the information and the explanation. They are very much appreciated it.

I found that the Arduino Due has 12 bits for the input (4096).

However what I haven't been able to figure out if with the Arduino Due can I change the reference voltage to lets say 1 V?

Thank you very much,

Luis
Logged

0
Offline Offline
Shannon Member
****
Karma: 200
Posts: 11694
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dear all,

Thank you very much for the information and the explanation. They are very much appreciated it.

I found that the Arduino Due has 12 bits for the input (4096).

However what I haven't been able to figure out if with the Arduino Due can I change the reference voltage to lets say 1 V?

Thank you very much,

Luis
No, that's not possible.

From the datasheet the ADVREF can be 2.4V upto the max analog supply (3.6V) - for 12-bit accuracy, as low as 2.0V for 10-bit accuracy.  If you want to use the AREF pin on the Due you have to desolder a resistor-bridge from the board BTW as otherwise its hardwired to the 3.3V supply via a noise-filter circuit.
Logged

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

United Kingdom
Offline Offline
Tesla Member
***
Karma: 224
Posts: 6593
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

For measuring 0 to 5mV, amplifying the signal using an op amp or an instrumentation amplifier (depending on your exact requirement) is your best bet.
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Peoples Republic of Cantabrigia
Offline Offline
God Member
*****
Karma: 6
Posts: 719
Arduino happiness
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I agree that a op amp is your best bet. Analog Devices have some very useful resources online as well as programs that allow you to model ahead of time how well an op amp will perform - ie expected noise, ENOB that can be expected, etc. very very cool

As far as the arduino is concerned, the minimum voltages for the AREF are around 1v, depending on the model. But there is no reason to restrict the voltage range, just use a well-matched op amp and be done with it.

That said, if high speed is not needed, a external ADC with a built in PGA like the MCP 3421 can be pretty compelling.
« Last Edit: December 09, 2012, 06:29:45 pm by Constantin » Logged

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

Quote
That is done by using the analogRead() function (analogRead() reference).  Unfortunately for your needs this is too granular giving 5000mV/1023 = 4.9mV per step by default so it might be able to tell you something was present by returning a 1 or a 0 only.  Depending on your requirements that might be sufficient, but there is a way of improving this, by setting analogReference(EXTERNAL) first and connecting a 5mV source to the AREF pin on the Uno, redefining the maximum value to 5mV rather than 5V (analogReference() reference page.

No, not possible to wire a 5mv voltage to the AREF pin, minimum amount is 1.0vdc per datasheet.

Lefty
Logged

Pages: [1]   Go Up
Jump to: