Arduino USB bus current draw

Two (related) questions -

  1. How much current does a typical “idle” Arduino (Diecimila) draw from the USB bus?

  2. The Arduino asks the PC for 90 milliamps current from the USB bus. If I run 5 LEDs off the Arduino, I am drawing more current than that. Is there a way to get the Arduino to ask the PC for more current?

Thanks.

  1. I’ve never really measured, i think it’s around 100mA

  2. that happens automatically up to 500mA that is the maxium you can draw from an USB port.
    Arduino Diecimila has an on-board protection to limit the USB current draw to 500mA (to protect cheap laptops that
    don’t measure current draw)

if you need more that 500mA use an external power supply

massimo

  1. that happens automatically up to 500mA that is the maxium you can draw from an USB port.

I’m after pulling 120mA through some resistors, and the Arduino didn’t seem to request any more current. Is this something then that happens just at the PC side? Surely the PC should complain, somehow, that the Arduino is mis-behaving?

Arduino Diecimila has an on-board protection to limit the USB current draw to 500mA (to protect cheap laptops that don’t measure current draw)

You’ve correctly guessed my motivation! I think the current draw is 500mA in total over all the devices on the bus (and one bus could be connected to more than one USB port on the PC)?

if you need more that 500mA use an external power supply

I’ll need about 150mA, plus whatever the Arduino needs. Thing is that all my other USB peripherals seem to be asking for 100mA, so I’m going to have to be careful!

I think the current draw is 500mA in total over all the devices on the bus

Nope. Technically every device on the bus can draw 500mA.

If I remember the specs correctly, all devices can draw 100mA at will. A device can draw up to 500mA, but it must negotiate for it.

-j

A bit of progress - there is a utility called MProg.exe at http://www.ftdichip.com/Resources/Utilities.htm that allows the FTDI chip EEPROM to be re-programmed so that it requests a higher max current. To use it, first of all, choose “Device … Scan”. Then, “Tools … Read and Parse”. Then change the value for “Max Bus Power”, choose “File … Save as”, save the template to disk, and then use “Device … Program”.

Note that, on my system at least, my Arduino was assigned a different COM port number when I re-started it.

if you need more that 500mA use an external power supply

Not true! I hooked up the external power supply to a 12 volt source (the only source greater than 7 volts available inside a PC), pulled 330 milliamps through some resistors, and the Arduino’s voltage regulator was officially struggling with the power dissipation (about 2.3 watts by my calculations). It was hot, and there was that smell you get before releasing the magic blue smoke. And, the voltage it was giving out was outside of tolerance (it fell to 4.8 or so volts before I decided to save it).

So if you want power from your Arduino, you either have to run the gauntlet of USB, or you have to find a voltage source as close to 7 volts as possible, or you have to find a way of better dissipating the heat produced by the voltage regulator.

BTW the documentation says that the minimum voltage required on the external power jack is 6 volts. Using 6 volts, however, will only give you 4.5 volts into the Arduino - both the diode between the power jack and the voltage regulator, and the regulator itself, have voltage drops across them. So I think the minimum voltage required is actually closer to 7 volts.

A proper TO-220 regulator would dissipate heat far better than the onboard DPAK one.
You can also bolt a heatsink to it if required.

Three things I’d like to add:

Current drawn by the Arduino-board:
My NG burns only 60 mA running idle.

Max current drawn from USB:
As already mentioned the Arduino asks for 90 mA. If your circuit draws more than that, it’s up to the Hub to decide what to do:
Usually the hub grants up to 500mA, but it is also possible that the hub decides to disable your device.

I remember a notebook (Acer?) that granted 500mA for every device as long as it was powered from mains. But as soon as it ran on batteries it disabled all devices that consumed more current than they initally asked for.
So check with the computer (or UB-hub) you will be using in the end.

Power from external 5V source:
If you already use a regulated 5V power-supply you can power the board from the middle pin of the jumper that selects between USB and external Power.
(you remove the jumper and connect the middle pin to plus 5V).

If you get the Voltage wrong (>5V) this kills the board
If you get the polarity wrong this kills your board
If you use an unregulated power-supply the board might run unstable (or gets killed)

The traces should be fine for 800mA.
For safety you might want to add a fuse between the Powersupply and the board.

Check with the arduino schematic.

Eberhard

As a result of discussions a while back the current version of http://www.arduino.cc/en/Main/ArduinoBoardDiecimila reads:

The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.

It’s probably not unusual that having a “medium” current draw at the edge of the safe upper recommended range would cause issues with heat dissipation.

–Phil.