ADC Value incorrect what am I doing wrong - new to this


I have just got a Uno board and been playing with the ADC A0 input.

If I connect A0 to 0 gnd via a 10k resistor I get a reading of 0 as expected. If I connect A0 to the board 5V via a 10k resistor I get 1023 as expected. If I connect A0 to the 3.3V via a 10k resistor I get 940 which calculates out to about 4.5v not 3.3v What I expect to get was (1023/5)*3.3 = 675 I have also tried without the 10k resistor and get the same result. I do a loop of 100 readings each time and the readings are stable just 940 when I expected 675 for 3.3Volts.

Please what am I doing wrong or not understanding? thanks.

Could it be that your Arduino is running on 3.595V? That would cause the "+5V" pin to be 3.595V and the default analog reference to be 3.595V. Connecting to ground would result in a 0. Connecting to "+5V" (3.595V) would result in 1023, and 3.3V would result in 940. Check it with a good meter.

Another possibility is that the 3.3v regulator on your Arduino is faulty or the 3.3v rail is shorted to something else. Again, check with a multimeter whether it really is 3.3v.

Thanks for your help.

Using a digital meter and the board powered from the USB cable.

5v is 4.98volts. The 3.3v is 4.04 and gives an ADC reading of 825 which is ok, if I remove the meter prob it goes to 944 so I assume the meter impeadance is influencing it.

Do I need to "turn on" the 3.3V

The board is brand new but was cheap from china via ebay so I guess I got what I paid for!!!!

I was only playing with the gnd, 3.3V and 5V to test the ADC and my code. I want to use a 4-20ma presuure transducer so will set it up to give 1 to 5volts in at A0. But first I will try a 10k pot. (gnd-A0-5v).

Do I need to "turn on" the 3.3V

No but it looks like it requires a minimum load, this is not unusual for series regulators. Put a 100K resistor as a load and then repeat the measurement.