Pages: [1]   Go Down
Author Topic: Analog 1.1 VDC A/D reference does not compute?  (Read 1083 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Using the internal analog 1.1 VDC A/D reference does not compute?

I am using a temperature sensor LM34DZ as an input to an Arduino analog input.
The "default" internal voltage ref of ~ 5 vdc is being used.
The LM34DZ outputs a voltage equal to 10mv/deg F.
The analog voltage input reads 0.7952 volts @ 10mv/F = 79.52F
The analog count is 159 out of 1024 steps or 0-1023 (10 bit A/D)
159/1023 = .155425219941 X 5000 (mv) = 777.126099705 / 10 mv/F = 77.71 F
This calculation both on the front end voltage and the A/D count is close.

Notes: The exact voltage ref (default) is not exactly 5 VDC but a number close to 5 VDC eg 5.06982.
This gives the calculation 78.77F. vs 79.52F using a 50,000 count voltmeter.
This default ref voltage varies between chip to chip.
The accuracy of the "cheaper" LM34DZ is +-2F


I decided to use the internal A/D 1.1 VDC Voltage ref by using the new command
analogReference(INTERNAL);
The AREF on pin 21 changed from 5VDC to ~ 1.0729 VDC.
The count changed from 159 to 252 with the same input voltage from the LM34DZ.
What does this count of 252 represent?


Note: I am using rev 14 and my various chips are 168P/328P with approximately the same results.
Note: The AREF is not connected to any external voltage source.  

 :o :o :o


Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

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

That....makes no sense. I would have expected a count closer to 720.

Did you take multiple readings? Any chance you're only reading one of the A/D registers (ADCH / ADCL) instead of both?
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 309
Progress is made by lazy people-H Ford/R Heinlein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am "eating crow" on this one.
My variable is a byte and I needed to change it to an int when
changing to the 1.1 VDC internal ref.
count 778/1023 * 1100 / 10 works out to my new ambient temp.
 :-[ :-[ :-[ :-[ :-[
Logged

"Never trust an Internet bully who insults and makes fun of your level of intelligence."

0
Offline Offline
Sr. Member
****
Karma: 2
Posts: 303
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

if you are hanging the analog reference from standard to internal in the sketch take into account that a analog read + a delay are needed before internal reference is operational.

Here a portion of code that works for me
...
        // Temperature sensor LM35DZ - Change of analog reference voltage
        // Put to INTERNAL: 1.1 V
        // One analog read + delay are needed to make change operational
        analogReference(INTERNAL) ;
        analogRead(5) ;  // 5 = analog pin 5
        delay(100);  
        
        analog_val_temp = analogRead(5) ; // 5 = analog pin 5

        // Return to DEFAULT analog reference voltage (5V)
        analogReference(DEFAULT) ;
....

Have a nice day.
Marco.
Logged

Pages: [1]   Go Up
Jump to: