Digital output pin's voltage?

I haven’t been able to find authoritative source on what the digital output pin’s out voltage is (and I don’t have a volt-meter to measure). I’ve read from sources that it’s 5V for HIGH and 0V for LOW (off, of course).

But if this is correct, then that means 1 digital out should be able to power a simple motor, but from my tests, it doesn’t, while the 5V out pin spins the motor up right away.

So, what exactly is the output voltage from the digital pins?

Are you sure the pins are high?

that means 1 digital out should be able to power a simple motor

Wrong. The pins cannot supply enough current to run a motor, even if the voltage is correct.

I highly recommend you stop trying immediately so you don’t burn a pin out on your arduino.

while the 5V out pin spins the motor up right away.

That’s because the 5V pin can draw the full current available - as much as 500mA via USB powered arduinos, and 1500mA on some DC powered arduinos.

-j

Okay, thanks for the info…

So if I want to be able to be able to control a motor (since the 5V out cannot be turned on or off from Arduino, right?), what should I do?

For simple turn on/off, you want to use a transistor. The arduino turns on the transistor, transistor switches the load. Check the playground for examples.

If you want to do more complicated things like reverse directions on the motor, an H bridge is your friend. Again check the playground for examples.

-j

Okay, so it essentially boils down to me needing to power the motor exernally because the Arduino board itself cannot provide sufficient power… Got it.

Now, is it possible (and safe) if, say, I connected the output from the pins from 2-12 (according to this doc, it says each out supplies 40ma of current) to the motor, and then turn them all on to start the motor? Afterall, 10 x 40 is 400ma, pretty close to 500ma that the 5V pin supplies.

Now, is it possible (and safe) if, say, I connected the output from the pins from 2-12 (according to this doc, it says each out supplies 40ma of current) to the motor, and then turn them all on to start the motor? Afterall, 10 x 40 is 400ma, pretty close to 500ma that the 5V pin supplies.

No that is not a practical solution to parallel connect 10 output pins together. Because you can’t insure that you can turn on all 10 outputs at the same instant in time there will be unequal current draws and short term short circuits. Besides in addition to the 40ma per pin limit there is a total package current output limit of around (I think) 200ma so you are not there that way even without switch timing problems.

You are going to have to learn how to utilize external transistors to switch currents. It is possible to find very low current draw 5v relays that the Arduino can drive directly, then the relay contacts can switch the higher current load on and off. But transistors are cheaper, faster and smaller then relays.

Lefty

I see… Thanks for the heads-up.

I will look into transistors and H-bridges :).

EDIT: I found this via another link, would it work as a H-Bridge to provide bi-directional powering to the motor?

According to what’s pictured here, it can (but I don’t read German…), but I’d like to be sure :).

Yep, should work fine.

Lefty

Thanks for all the help!