3.3V output only giving 2.55V [solved]

Hi Guys

Thought this would be the most appropriate place to post this as I think it's a hardware, not a software/project issue.

I'm on windows 7, I have the arduino uno R3 plugged into USB only, and have a problem with the voltage from the 3.3V power output.

I noticed it while calculating temperature for a project I was doing when it was telling me 8 degrees instead of about 20. I have now traced the problem to the 3.3V power output.

It's only giving 2.55V according to the following code:

void setup() {
Serial.begin(9600);
}

void loop() {
int therm0 = analogRead(A0); //1. input on Analog pin 0
float volt0 = therm0 * (3.3 / 1023.0); //2. conversion to Voltage

Serial.println(volt0); //3. Send voltage to Serial software display

This should be 3.3V right? do I need an external power source to achieve the full 3.3V?

  • Heim
float volt0 = therm0 * (3.3 / 1023.0);             //2. conversion to Voltage

I believe this would only be true if you had used Aref set to 3.3V.
As written, your code would be using the defualt setting of VCC, which would be ~5V.

CrossRoads:

float volt0 = therm0 * (3.3 / 1023.0);             //2. conversion to Voltage

I believe this would only be true if you had used Aref set to 3.3V.
As written, your code would be using the defualt setting of VCC, which would be ~5V.

Thanks for the reply,

so when I have my 3.3V output plugged straight into my analogue output, it's actually putting out 5V? or am I missing something in the code?

The default Analog reference is to use VCC which is nominally 5V but in actuality is whatever is coming out of the USB port of the computer. If you plugged the 3.3V output into the AREF pin of the arduino and told it to use it

analogReference(EXTERNAL);

It will be reading a voltage relative to whatever is going in the AREF pin (3.3 volts if you connect it to 3.3 Volts).

You have choices for what is used for the ADC reference.
If you do nothing, then the default is 5V/1023 = ~4.88mV per BIT.

So if you connect the 3.3V output to an analog input and take a reading, the result will be
3.3/.00488 = ~676
then 676*(5/1023) = 3.3V

CrossRoads:
You have choices for what is used for the ADC reference.
If you do nothing, then the default is 5V/1023 = ~4.88mV per BIT.

So if you connect the 3.3V output to an analog input and take a reading, the result will be
3.3/.00488 = ~676
then 676*(5/1023) = 3.3V

Brilliant, Thanks for this! turns out it was just a coding error :slight_smile: