← All concepts

Learn

How much current can an Arduino pin actually supply? The number that decides most Bluetooth failures

Troniction

A single narrow pipe feeding several outlets, with the pipe's capacity marked and the outlets' combined demand exceeding it

There is one number that decides whether a beginner's Bluetooth project works, and almost every tutorial that touches it gets the important half of the sentence wrong.

The Arduino Uno's 3.3V pin supplies 50 mA. Not 50 mA per device. Fifty milliamps in total, for everything you connect to it, together, at the same time.

That word — total — is where projects die.

Where the 50 mA comes from

The Uno does not generate 3.3V the way it generates 5V. The 5V rail comes from whatever is powering the board. The 3.3V rail comes from a small dedicated regulator on the board itself, which takes the 5V and makes 3.3V from it, and that part is specified to deliver 50 mA.

It is not an arbitrary limit and it is not conservative marketing. It is the rating of a component that was chosen when the board was designed, for a job nobody expected to include powering a radio.

This is a property of the board, not of the pin's physical size or the wire you plug into it. A thicker jumper does not help. Neither does a shorter one.

The number that has to fit inside it

A common HC-05 Bluetooth module draws, from its own datasheet:

What it is doingCurrent
Paired, sitting idleunder 8 mA
Paired, sending dataabout 20 mA
Advertising — being discoveredunder 40 mA

Put those two facts side by side and the problem announces itself. Forty against fifty is not headroom. It is a rail running at 80% of its rating, and it is running there at exactly the moment you need it most — while the module is advertising, which is the thing that has to happen before you can pair with it at all.

And that is with nothing else on the rail.

Why "total" is the word that matters

Here is the failure that is genuinely hard to diagnose, because each part of it looks fine.

You wire a Bluetooth module to 3.3V. It draws up to 40 mA. You also have a sensor on 3.3V, because that is what its breakout wanted, and it draws 15 mA. Neither of those is close to the limit on its own. Together they are 55 mA, and the rail is rated for 50.

Nothing in your project reports this. There is no warning, no error, and no light that comes on. The rail simply cannot deliver what is being asked of it, and the devices on it behave badly in ways that look like their own faults — a module that never appears, a sensor that returns nonsense, a board that resets when you are not touching it. The Bluetooth version of that is written up in full in the module that never shows up in the phone's list.

Work it out on the rail budget — set the module to pairing, then add 20 mA of other sensors and watch even a paired, sending module stop fitting.

Why a radio is a worse load than it looks

A sensor drawing 15 mA draws roughly 15 mA all the time. A radio does not.

Radios draw in bursts, and the HC-05 datasheet says so in its own words. On pairing it states that the current is "fluctuant in the range of 30-40mA", and that "the mean current is about 25mA".

Read that carefully, because it is easy to take the wrong number from it. 40 mA is the top of the range, not the average. The average is closer to 25 — about the same as sending data.

Which means the comparison that matters is not 25 against 50. It is 40 against 50, because a supply has to hold up at the top of the range, not at the mean of it. A rail that copes with the average and fails at the peak produces exactly the symptom this article is about: something that half-works, intermittently, for no visible reason.

This is also why the failure is intermittent in a way that wastes hours. It is not "works" or "does not work". It is "works, resets, works, resets" — fast enough that from outside it just looks like a module that never quite does anything.

What moving to 5V actually does

The standard fix for a Bluetooth module that never appears is to move its VCC wire from the 3.3V pin to the 5V pin. It is worth being precise about what that changes, because it sounds like it should destroy the module and it does not.

Moving to 5V does not give the module a bigger share of the 3.3V rail. It takes the module off that rail completely. These modules are sold on a breakout board that carries its own 3.3V regulator, whose entire job is to accept 5V and produce clean 3.3V for the radio. Feeding it 5V hands the regulating job to the board that was built to do it.

The Arduino's little 50 mA regulator is then free for whatever else you had on it — and the module is drawing from a supply with far more to give.

The genuine limit is at the other end: these modules are specified for a supply of 3.6–6V, and above 7V destroys them. Five volts is comfortably inside that. A 9V battery wired straight to VCC is not, and that is the one mistake in this area that actually kills hardware.

How to check yours

Two approaches, in order of effort.

  1. Add up the datasheet figures for everything you have on 3.3V, using each device's worst case rather than its idle figure. If the total is above about 35 mA you are in the risky band, and if it is above 50 you are past the limit.
  2. Measure it. Put a multimeter in series with the VCC wire, set to milliamps. Expect the number to move around — that is the burst behaviour, and a reading that jumps is more informative than one that sits still.

If you are over, the options are: move the hungriest device to 5V if its board has a regulator, power it from a separate supply with its ground tied to the Arduino's ground, or take something off the rail.

What else is usually on that rail

It is worth knowing what commonly competes for the 50 mA, because most of it arrived without a decision being made.

  • A second sensor breakout whose instructions said 3.3V, because its chip is a 3.3V part
  • An SD card module, which is modest at rest and much hungrier during a write
  • A real-time clock, a small OLED display, or a logic-level converter drawing its own bias current
  • Anything you added months ago and stopped thinking about

None of those is unreasonable on its own. The point is that the budget is shared and nothing tracks it for you — there is no total displayed anywhere, and the first sign that you are over is a device misbehaving in a way that looks unrelated.

Is the 5V pin limited too?

Yes, but by something much larger, and rarely by anything that stops a Bluetooth module being discovered.

The 5V rail comes from whatever is powering the board — the USB connection, or the barrel jack through the onboard regulator — rather than from a small dedicated part rated at 50 mA. The practical ceiling depends on how the board is powered and how warm the regulator is getting, which is why it is quoted as a range rather than a number.

For the load in question here, that distinction is enough. A module that wants 40 mA is a serious fraction of a 50 mA rail and a trivial fraction of the 5V supply. That asymmetry is the whole reason the fix works.

The shape of the lesson

Most electronics debugging for beginners is about signals — is the data right, is the wiring right, is the code right. Current budgets are a different kind of problem, because a supply that cannot deliver does not produce a wrong answer. It produces no answer, intermittently, with nothing on screen to read.

That is why this number is worth memorising when almost no other number in the datasheet is. Fifty milliamps, total, for everything. When something on 3.3V behaves like it is broken and you cannot find the fault, count what is on the rail before you replace anything.

Common questions

How much current can the Arduino Uno's 3.3V pin supply?
50 mA, and that is the total for everything connected to it — not an allowance per device. The pin is fed by an onboard LP2985 regulator, and 50 mA is what that part is specified to deliver.
Why does my Bluetooth module fail on 3.3V but work on 5V?
Because on 5V it stops drawing from the 50 mA rail at all. The module sits on a breakout board with its own 3.3V regulator, so feeding it 5V hands the job to that regulator instead of the Arduino's. An HC-05 wants close to 40 mA while advertising, which is 80% of the 3.3V rail.
Is the 5V pin limited too?
Yes, but by the supply feeding the board rather than by a small onboard regulator, so the ceiling is far higher and is rarely what stops a Bluetooth module being discovered. The 3.3V pin is the one that runs out first.
Can I measure what my module is really drawing?
Yes — put a multimeter in series with the module's VCC wire, set to mA. Expect the reading to jump around, because a radio draws in bursts rather than steadily, and the peaks are what matter.

Still not connecting?

Arduino Bluetooth — Make It Connect is 62 pages of every way the link fails, why, and the fix — HC-05, HC-06 and HM-10 BLE, including the clone family almost nothing covers. $9.