analogRead with wrong values

Hello all, I've a problem with analogRead. With a digital tester I can check that in the input number 0 there is an input voltage of 710 millivolt (0,71V) but the analogRead(0) function returns an average value of 660. In my understanding that values corresponds to about 3,22V ( (5/1024)*660 ). Where am I wrong?

Thank you for your support


If the input circuit is high impedance and its a lowish impedance DMM (cheap ?) , the DMM would pull the voltage a lot more than the Arduino. What exactly do you have connected to the analogue pin ?

I'm using a temperature sensor MCP9700A in a very simple configuration: - pins 5V and GND on the Arduino connected to the Vdd and GND pins of the sensor - pin Vout of the sensor connected to the analog input 0

With the digital tester I've cheched that on the Vout pin there is an output voltage of 710mV but the analogRead(0) function returns values around 660.

Thank you for your support


If you're using the internal setting for AREF (1.1V) in your sketch a reading of 660 is exactly right for 710 millivolts........

well, I’m not setting the reference voltage because I was expecting that Arduino use the default value (DEFAULT => 5V). I will try to set the reference using “analogReference(DEFAULT);”

I've found the problem. I feel a little bit stupid, I copied a piece of code from another project with a "analogReference(INTERNAL)" but I did not realize this until tonight.

Removing this line, all works fine.

Thank you very much for your suggestions and your support.