Getting low voltage from digital pin ( 1.7v) instead of 5v

Hi I have an arduino uno and an ethernet sheild which is attached which is powered off my usb.

My uno is currently outputting only 1.7v from the digital output and I have no idea why. I have tried my issue with the all the digital pins and none of them will output will output more than 1.7v. My 5v power output only puts out 4.5v and the 3.3v puts out 3.2v (acceptable).

The only parts of my circuit are a resistor, where the output of my digital output (pin 5) goes to the resistor which then goes to ground.

Here is my code to show its not that

void setup()
{
  Serial.begin(9600);
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
}

void loop()
{
  
}

Is it the power supply of the USB that is too low?

wishywashy: The only parts of my circuit are a resistor, where the output of my digital output (pin 5) goes to the resistor which then goes to ground.

Ohms?

You don’t say what the value of your pull-down resistor is.

Typical problems:
Putting too high a load on your pin: LED, diode, or transistor without current limiting resistor.
Forgetting to set the pin to OUTPUT.

What's the value of the resistor? If it is too low, it will drag the voltage down.

Why isn't your USB >= 4.75V? It should be 5V +/- 5%, so 4.75 min.

What do you see when the ethernet shield is not installed?

[quote author=Coding Badly link=topic=196668.msg1451339#msg1451339 date=1383336067]

wishywashy: The only parts of my circuit are a resistor, where the output of my digital output (pin 5) goes to the resistor which then goes to ground.

Ohms? [/quote]

I'm going to guess 33Ohm. I wonder how close I am.

it is 69mA the output and I just have 2X 11.5 ohm resistors

The same result with or without the sheild. Also from my sketch you can see the pin is set to output. I need 4v MAX for the pin output

5 volts / 23 ohms = 0.217 amps. Too much by an order of magnitude. You're going to need a bigger resistor (or lots more).

Why do i need more resistors to bring up the voltage? should it not supply a constant 5v?

First and most important (from the ATmega328 datasheet)…

  1. Electrical Characteristics
    29.1 Absolute Maximum Ratings*
    DC Current per I/O Pin … 40.0mA
    *NOTICE: Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or other conditions beyond those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.

wishywashy: should it not supply a constant 5v?

In my version of the ATmega328 datasheet the chart of interest is [u]Figure 30-353.ATmega328P: I/O Pin Output Voltage vs. Source Current (VCC = 5 V)[/u]. At 20mA current you can expect the output voltage to be ~4.5. If you need a constant 5 volts you will have to provide an external "constant voltage driver". The processor does not have a built-in one.

wishywashy:
Why do i need more resistors to bring up the voltage? should it not supply a constant 5v?

Its all to do with the fact that the pin has some internal resistance. If you draw current from the output, this internal resistance drops some of the voltage. For a very low current (say 1mA) the voltage drop is not very large. However if you try to draw large currents (e.g. 70mA) a large portion of the voltage is dropped internally which is not got for the IC and not what you want for your circuit.

In practice I have found this internal resistance to be around 56 ohm, but it will vary greatly from processor to processor and is also non-linear with current. In case you are wondering, that is how I made an estimate that you had a 33Ohm resistor. I wasn’t far off from 23 :wink:

Ahh sweet. yer I get it cheers.

Hello,

I’ve got the same problem as user wishywashy. The voltage on my output pins is something about 1.7 V instead of 5V. I use arduino to supply 5 LEDs, using 220 ohms resistors. Here is code:

int ledArray={3,4,5,6,7};
int count=0;
int timer=1000;

void setup() {
for (count=0; count<5;count++);
pinMode(ledArray[count],OUTPUT);
}

void loop() {
for (count=0;count<5;count++)
{
digitalWrite(ledArray[count],HIGH);
delay(timer);
digitalWrite(ledArray[count],LOW);
delay(timer);
}

}

The funny thing is the 5. pin gives right voltage…

EDIT:
I made more measurements: without any load it gives 4.5 V. Anyway I’m still considering reclamation, because producent is ensuring that arduino can handle 40mA while it can’t provide even (5-1,8)/220=14mA! (only 5th pin does…)

All the AVR Arduinos (Uno, Mega etc) will output upto 30mA with upto about 1V drop. The abs. max specification is 40mA, you avoid going that high as you risk frying the pin's drivers.

If you are failing to see that level of current perhaps the pins are already damaged? You are not making the mistake of averaging the voltage over that square wave cycle?

If you are failing to see that level of current perhaps the pins are already damaged?

That’s what i am afraid is most probable. I hope there is some error in program or other silly problem, because it’s just the second time i’m doing anything with arduino.

You are
not making the mistake of averaging the voltage over that square wave cycle?

Could you put it in other words? I’m afraid i don’t understand what you mean…

And another clue:
For 10k resistor I’ve got 2.4 V output. I reckon the output resistance might be too big. I remember that i read once it can be programmed?.. i’m not sure… I would be grateful for any help. :slight_smile:

Ok, i’ve found solution. :smiley: It was problem in program as i wanted it to be. :stuck_out_tongue:

For future newbies who are as silly as me:

int ledArray={3,4,5,6,7};
int count=0;
int timer=1000;

void setup() {
for (count=0; count<5;count++);
pinMode(ledArray[count],OUTPUT);
}

void loop() {
for (count=0;count<5;count++)
{
digitalWrite(ledArray[count],HIGH);
delay(timer);
digitalWrite(ledArray[count],LOW);
delay(timer);
}

}

This red dude shouldn’t be there. I simply didn’t set output pins as OUTPUT. Only 5th was correct because for loop ends giving count=5.

Anyway thanks for answer. :smiley: