Components · 12 min read

Breadboard Power Supply Module MB102: 5V/3.3V, Current Limits

How to use the MB102 breadboard power supply module: 6.5–12 V input, 5 V and 3.3 V jumpers, the real current limit, AMS1117 heat, servo trouble and common GND.

A breadboard power supply module (most commonly the MB102) is a small board that regulates the voltage from a DC adapter or USB and distributes it as 5 V and 3.3 V to the breadboard's power rails. It plugs straight into one end of the breadboard, feeds the positive and negative rails on each side separately and carries jumpers that let you choose 5 V or 3.3 V for each rail. That way you can power sensors, displays and chips without straining the Arduino's own regulator, and use 3.3 V and 5 V parts together on the same breadboard.

But this little board has a much lower current limit than people assume. In this post you'll learn, with calculations, the MB102's parts, how to choose the right adapter, the jumper settings, how many milliamps the board can really deliver and why the AMS1117 regulator gets hot. Then you'll see why servos and motors don't work with this module, the USB input, plugging it into the breadboard the right way round, the common GND with the Arduino and the most common mistakes.

MB102 breadboard power supply module
MB102 breadboard power module: DC jack, USB socket, on/off switch, two AMS1117 regulators and a 5 V / 3.3 V jumper for each rail.

What is a breadboard power supply module and how does it work?

The MB102 board carries two linear regulators: the AMS1117-5.0 drops the input voltage to 5 V and the AMS1117-3.3 to 3.3 V. On most boards the 3.3 V regulator is fed from the 5 V output, so the current you draw from the 3.3 V rail also passes through the 5 V regulator first. On the input there's a diode against reverse connection, an on/off switch and an LED that shows the power is on. The two rows of pins underneath the board sit in the positive and negative rails at both edges of the breadboard.

ParameterValue
Input (DC jack)6.5–12 V DC, 5.5 × 2.1 mm jack, centre positive
Input (USB)5 V, USB-A socket; the regulator is bypassed and 5 V goes straight to the rail
Outputs5 V and 3.3 V; selected separately for each side with a jumper
RegulatorsAMS1117-5.0 and AMS1117-3.3 (SOT-223 package, no heatsink)
Current on paper1 A for the AMS1117; sellers usually list the module as "less than 700 mA"
Realistic continuous current200–500 mA depending on input voltage (see the heat calculation below)
Extra output pins5 V, 3.3 V and GND pin headers on top of the board
ProtectionReverse polarity diode on the input; no short-circuit fuse

Which adapter should I choose? What the 6.5–12 V input means

For a linear regulator to work, its input has to be a certain amount higher than its output; this difference is called the dropout voltage, and on the AMS1117 it's around 1.1–1.3 V depending on the load current. The protection diode on the input takes a few tenths of a volt as well. That's why you need at least 6.5 V on the input for the 5 V output to really be 5 V. If you connect a 5 V adapter, you'll see 3.5–4 V on the output and the Arduino, display or sensors will behave erratically. At the top end the problem is heat: the higher the input voltage, the more power the regulator burns off as heat.

AdapterResultRecommendation
5 V adapter (on the DC jack)Output stays around 3.5–4 VDon't use it; connect 5 V sources through the USB input
7–7.5 VStable 5 V, least heatingBest choice
9 V adapterStable 5 V, moderate heatingGood for light loads (under 300 mA)
12 V adapterStable 5 V but the regulator gets very hotOnly for 150–200 mA loads
9 V batteryWorks, but a capacity of 300–500 mAh runs out quicklyNot recommended except for short tests
Most adapters with a DC jack are centre positive, but some older ones are centre negative. Check the little symbol on the label. The input diode protects the board from reverse polarity but the module won't work; on cheap copies without the diode, reverse polarity kills the regulator instantly.

Setting the 5 V and 3.3 V jumpers

At each end of the board there's a three-pin jumper header; each one controls the power rail on one side of the breadboard. Put the jumper on the side marked "5V" and that rail gets 5 V; put it on "3.3V" and it gets 3.3 V; remove the jumper completely and that rail isn't powered. This lets you set one side for a 5 V LCD and the Arduino, and the other for a 3.3 V nRF24L01 or sensor. The negative (GND) rails on both sides are always common.

Left jumperRight jumperLeft railRight railExample use
5V5V5 V5 V5 V parts like the Arduino, LCD, HC-SR04
3.3V3.3V3.3 V3.3 V3.3 V sensors with an ESP32 or Pico
5V3.3V5 V3.3 VMixed circuit: 5 V LCD on one side, 3.3 V module on the other
Removed5VUnpowered5 VTemporarily switching one side off
Before building your circuit, plug the module into an empty breadboard, switch it on and measure both rails with a multimeter. You should see 4.9–5.1 V on the 5 V rail and 3.2–3.4 V on the 3.3 V rail. This 10-second check saves the parts that would burn because of a wrong jumper or a faulty regulator.

The real current limit: why even 700 mA is optimistic

The AMS1117 datasheet says 1 A, and sellers say "less than 700 mA" for the module. But those figures assume the regulator is well cooled. A linear regulator burns off the difference between input and output voltage as heat: P = (Vin − Vout) × I. On the MB102 the regulator is soldered to a small copper area on the board with no heatsink. A SOT-223 package like that can dissipate about 1 W continuously; beyond that it overheats, enters thermal protection and cuts or drops its output.

Input voltageHeat at 100 mAHeat at 300 mAHeat at 500 mAVerdict
7 V0.2 W0.6 W1.0 WUsable up to 500 mA, at the limit
9 V0.4 W1.2 W2.0 WOverheats above 300 mA
12 V0.7 W2.1 W3.5 WGoes into thermal protection above 200 mA
AMS1117 3.3V voltage regulator
AMS1117 linear regulator: it turns the whole voltage difference between input and output into heat; without a heatsink the package reaches its limit at about 1 W.

The 3.3 V side is calculated separately: because the 3.3 V regulator is fed from 5 V, it produces (5 − 3.3) × I of heat; at 300 mA that's 0.5 W. On top of that, those 300 mA are added to the 5 V regulator's load as well. In short, the MB102 is ideal for circuits of a few hundred milliamps, such as LEDs, sensors, an LCD and an Arduino Nano. For more, move to a switching regulator such as the LM2596 step-down converter; regulators like that convert the voltage difference efficiently into current instead of heat.

Current budget: how much does your circuit draw?

Before choosing the module, roughly add up the total current of the parts in your circuit. The values below are typical averages; motorised and wireless parts have much higher short peaks. If the total continuous current goes above 300 mA or the peaks above 500 mA, the MB102 alone isn't enough.

PartTypical currentNote
Arduino Uno / Nano30–50 mAIncluding the on-board LEDs and USB chip
ESP32 development board80–250 mAPeaks of 400–500 mA during Wi-Fi transmission
16x2 LCD (backlight on)20–30 mATogether with the I2C backpack
0.96 inch OLED10–25 mADepends on how many pixels are lit
Red LED (with 220 Ω)~14 mAPer LED
WS2812B LEDUp to ~60 mAPer LED at full white; 10 LEDs make 600 mA
SG90 servo~10 mA idle, 100–250 mA movingUp to 650 mA under strain
Relay module (1 channel)70–90 mAWhile the coil is energised
HC-SR04~15 mADuring a measurement

Why isn't it enough for servos and motors?

The moment an SG90 servo starts moving it briefly draws a few hundred milliamps, and up to 650 mA when it's straining; on large servos like the MG996R this goes beyond 2 A. DC motors and stepper motors also demand high current at start-up. That sudden current hits the regulator's limit and the 5 V rail drops below 4 V for a moment. The voltage of an Arduino fed from the same rail drops too and the board resets itself; the servo jitters and garbage characters appear on the LCD. Noise from the motors' brushes also ruins sensitive sensor readings.

  • Power servos and motors from a separate supply: a 5 V adapter that can deliver at least 2 A, a buck converter like the LM2596 or 4 AA batteries are good choices.
  • Join the GNDs: even with a separate supply, connect the motor supply's GND to the Arduino's GND; otherwise the signal has no reference.
  • Add a capacitor on the servo supply: a 470–1000 µF electrolytic capacitor across the servo's power leads smooths out the sudden current spikes.
  • Use the MB102 for the logic side only: let the Arduino, sensors and display run from the MB102 and the motors from their own supply.

If you want to see this dip for yourself, try the code below. The Arduino Uno can measure its own supply voltage by comparing its internal 1.1 V reference against the supply; no external wiring is needed. Power the Arduino and the servo from the MB102's 5 V rail and watch the minimum voltage in the Serial Monitor while the servo moves:

C++ (Arduino IDE)
1// Arduino kendi besleme gerilimini ölçer, servo hareket ederken düşüşü yakalar
2// The Arduino measures its own supply voltage and catches the dip while a servo moves
3// Arduino 5V ve GND -> MB102 5 V hattı / Arduino 5V and GND -> MB102 5 V rail; servo sinyali / servo signal -> D9
4#include <Servo.h>
5
6Servo servo;
7long minVcc = 99999;
8
9long readVcc() {
10  // Dahili 1,1 V referansını AVcc'ye göre ölç / measure the internal 1.1 V reference against AVcc
11  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
12  delay(2);                                // referansın oturmasını bekle / let the reference settle
13  ADCSRA |= _BV(ADSC);                     // dönüşümü başlat / start the conversion
14  while (bit_is_set(ADCSRA, ADSC));        // bitmesini bekle / wait until done
15  long result = ADCL;
16  result |= ADCH << 8;
17  return 1125300L / result;                // 1,1 V x 1023 x 1000 / sonuç = mV / result in mV
18}
19
20void setup() {
21  Serial.begin(9600);
22  servo.attach(9);
23}
24
25void loop() {
26  for (int angle = 0; angle <= 180; angle += 90) {
27    servo.write(angle);
28    unsigned long start = millis();
29    while (millis() - start < 600) {       // hareket boyunca ölç / measure during the move
30      long vcc = readVcc();
31      if (vcc < minVcc) minVcc = vcc;
32    }
33    Serial.print("Aci / Angle: ");
34    Serial.print(angle);
35    Serial.print("  Vcc: ");
36    Serial.print(readVcc());
37    Serial.print(" mV  en dusuk / minimum: ");
38    Serial.print(minVcc);
39    Serial.println(" mV");
40  }
41}

The result can be off by ±10% depending on the actual value of the internal reference; for a more accurate reading, measure the 5 V rail once with a multimeter and adjust the 1125300 constant accordingly. If the minimum drops below 4.5 V with the servo connected, or the board resets, it's time to move the servo to a separate supply.

The USB input: both power in and power out

The USB-A socket on the MB102 can be used in two ways. When you power the board from the DC jack, the socket becomes a 5 V output and can power a small USB device. When you power it with a USB A-to-A cable or a power bank, the socket becomes an input: in that case the incoming 5 V bypasses the 5 V regulator and goes straight to the rail, while the 3.3 V regulator keeps working. A computer's USB port usually supplies 500 mA (900 mA on USB 3), and the only short-circuit protection is the port's current limit. If you use a power bank, remember that many models switch themselves off at low current.

Don't connect the DC jack and USB at the same time. Some boards have no isolating diode between the two sources, and the adapter's regulated 5 V can be fed back into your computer's USB port. There's also a well-known failure mode: a dead AMS1117-5.0 sometimes passes the input straight through to the output, and 9–12 V appears on the 5 V rail. So never get into the habit of connecting your circuit without measuring first.

Plugging it into the breadboard the right way round

The MB102 is designed for the end of standard 830-point breadboards: the pins underneath sit in the two power rails (positive and negative) on each side. There are + and − markings on the bottom or top of the board; make sure they line up with the red (positive) and blue (negative) lines on the breadboard. On some breadboards the coloured lines are printed the wrong way round or missing altogether; if you plug the module in backwards the positive rail becomes GND, the negative rail becomes 5 V and everything in your circuit is reverse powered. On long breadboards the power rails may be split in the middle; if parts at the far end don't work, check the continuity of the rails.

  1. Set the module's switch to off and set the jumpers to the voltage you want.
  2. Press the module into the end of the breadboard so that the + and − markings line up with the breadboard's red and blue rails.
  3. Connect the adapter to the DC jack and switch on; the LED should light up.
  4. Measure both rails with a multimeter; if the values are right, switch off and start building your circuit.
  5. When the circuit is ready, check the connections, especially GND, once more before switching on.

Common GND with the Arduino and powering the Arduino

There are two right ways to use the MB102 with an Arduino. Option one: the Arduino runs from USB and the MB102 powers only the sensors and modules. In that case you must connect the Arduino's GND pin to the breadboard's negative rail; without a common GND, the 5 V signal the Arduino sends has no reference on the other side and the circuit behaves randomly. The details are in the GND and common ground post. Option two: power the Arduino from the MB102 as well. You connect the 5 V rail to the Arduino's 5V pin and the negative rail to GND; this bypasses the Arduino's own regulator.

  • If you power the Arduino through the 5V pin, don't plug in USB: on the Uno there's no full isolation between the 5V pin and USB, so the two 5 V sources get tied together.
  • Don't feed 5 V into the VIN pin: VIN goes to the Arduino's own regulator and needs at least 7 V; with 5 V the board won't work properly.
  • Don't power the ESP32 from the 3.3 V rail: Wi-Fi's 400–500 mA peaks strain the MB102's 3.3 V regulator and cause a brownout error. Power the ESP32 development board with 5 V through its 5V/VIN pin.
  • Power the Raspberry Pi Pico through the VSYS pin: VSYS accepts 1.8–5.5 V, so the 5 V rail is fine for it. Use this route instead of feeding voltage into the 3V3 pin from outside.

Monitoring the supply voltage with the ESP32 and Raspberry Pi Pico

On the ESP32 you can't measure the 5 V rail directly, because its ADC inputs tolerate at most 3.3 V. The solution is a voltage divider made from two 10 kΩ resistors: the 5 V rail is halved and can be connected safely to GPIO 34. The analogReadMilliVolts() function uses the ESP32's factory calibration to return millivolts directly, and averaging 32 readings reduces the noise:

C++ (Arduino IDE)
1// ESP32 ile MB102 5 V hattını izlemek / Monitoring the MB102 5 V rail with an ESP32
2// 5 V hattı -> 10k -> GPIO 34 -> 10k -> GND (gerilim bölücü / voltage divider)
3const int SENSE_PIN = 34;          // yalnız giriş, ADC1 / input only, ADC1
4const float DIVIDER = 2.0;         // 10k + 10k: gerilim yarıya iner / voltage is halved
5const float LOW_LIMIT = 4.75;      // bu değerin altı sorunlu / below this is a problem
6
7void setup() {
8  Serial.begin(115200);
9  analogSetPinAttenuation(SENSE_PIN, ADC_11db);   // 0-3,3 V aralığı / 0-3.3 V range
10}
11
12void loop() {
13  uint32_t sum = 0;
14  for (int i = 0; i < 32; i++) {   // 32 ölçümün ortalaması / average of 32 readings
15    sum += analogReadMilliVolts(SENSE_PIN);
16  }
17  float rail = (sum / 32.0) * DIVIDER / 1000.0;
18  Serial.printf("5V hatti / 5V rail: %.2f V %s\n", rail,
19                rail < LOW_LIMIT ? "DUSUK / LOW" : "normal");
20  delay(500);
21}

On the Raspberry Pi Pico no extra parts are needed: the board has a divider that divides VSYS by three, connected to the ADC3 channel (GPIO 29). When you connect the MB102's 5 V rail to VSYS, the MicroPython code below prints the supply and the lowest value seen. On the Pico W this channel is shared with the wireless chip, so reading it needs a different method; the code is for the Pico without Wi-Fi.

MicroPython
1# Raspberry Pi Pico (W olmayan / non-W): VSYS gerilimini okumak / reading the VSYS voltage
2# MB102 5 V hattı -> Pico VSYS (pin 39), GND -> GND
3from machine import ADC
4import time
5
6vsys = ADC(29)                       # ADC3: VSYS / 3 iç bölücü / internal VSYS / 3 divider
7low = 99.0
8
9while True:
10    volts = vsys.read_u16() * 3.3 / 65535 * 3
11    if volts < low:
12        low = volts                  # en düşük değeri sakla / keep the lowest value
13    print("VSYS: {:.2f} V  en dusuk / min: {:.2f} V".format(volts, low))
14    time.sleep(0.5)

Projects that suit the MB102, and ones that don't

  • Suitable: LED and button experiments. Traffic light, running LED and button projects draw a few tens of milliamps.
  • Suitable: sensor and display circuits. Measuring circuits with a DHT11, LDR, HC-SR04, 16x2 LCD and OLED are ideal for the MB102.
  • Suitable: mixed-voltage circuits. A 5 V Arduino on one side and a 3.3 V module on the other.
  • Borderline: a single small servo. One SG90 moving with no load may work, but expect resets and jitter under load.
  • Not suitable: motorised robots and multiple servos. Robot cars driving motors with an L298N need a separate battery pack.
  • Not suitable: long LED strips. More than 10 WS2812B LEDs at full brightness exceed the module's limit.

Common mistakes and how to fix them

SymptomLikely causeFix
The LED doesn't lightSwitch off, adapter centre negative or faultySwitch on, measure the adapter's output and polarity
3.5–4.5 V on the 5 V railInput below 6.5 V or too much currentUse a 7–9 V adapter, reduce the load
The rail on one side is deadThe jumper on that side has come out or come loosePush the jumper firmly into the 5V or 3.3V position
The regulator is too hot to touchHigh input voltage and too much currentLower the input to 7 V or use a buck converter like the LM2596
The Arduino resets when the servo movesThe sudden current drags the 5 V rail downPower the servo from a separate 5 V supply, join the GNDs, add a capacitor
9–12 V measured on the 5 V railThe AMS1117-5.0 has failed shortStop using the module immediately and replace it
Sensors give random valuesNo common GND between the Arduino and the moduleConnect the Arduino's GND to the breadboard's negative rail
If you're going to use the MB102 in a battery-powered project, think about efficiency: a linear regulator dropping 9 V to 5 V turns almost half of the battery's energy into heat. To work out battery life, use the Battery Life tool, and for the idea of capacity see the What is mAh? post.

The MB102 is the most practical way to get a clean, selectable 5 V and 3.3 V on a breadboard, as long as you know its limits: use a 7–9 V adapter, keep the total current to a few hundred milliamps, power motors separately and always share GND. In the BlueGrays app you'll find LED, traffic light, servo and stepper motor projects, step by step with circuit diagrams, parts lists and code.

Frequently asked questions

How many amps does the MB102 power module supply?

The AMS1117 regulator is rated 1 A on paper, and sellers list the module as less than 700 mA. But because there's no heatsink, the realistic continuous current is about 500 mA with a 7 V input, 300 mA at 9 V and 200 mA at 12 V.

What voltage adapter goes into a breadboard power supply module?

An adapter between 6.5 and 12 V can be plugged into the DC jack; the best results come with 7–9 V. A 5 V adapter isn't enough, the output stays around 4 V. At 12 V the regulator heats up quickly, so only light loads should be powered.

Can the MB102 power a servo motor?

A single small servo moving with no load may work, but under load a servo draws up to 650 mA, the 5 V rail drops and the Arduino can reset. Servos and motors should be powered from a separate 5 V supply with the GNDs joined.

My breadboard power module gets hot, is that normal?

Getting slightly warm is normal; a linear regulator turns the difference between input and output into heat. If it's too hot to touch, the input voltage is too high or the current too large. Lowering the input to 7 V or using a buck converter solves it.

Can the MB102 be powered over USB?

Yes, 5 V can be fed through the USB socket. In that case the 5 V regulator is bypassed and the USB voltage goes straight to the rail, while the 3.3 V regulator keeps working. The current is limited by the computer port (usually 500 mA).

Can I power an Arduino with a breadboard power supply module?

Yes. You connect the 5 V rail to the Arduino's 5V pin and the negative rail to GND, and you shouldn't plug in the USB cable at the same time. Even if the Arduino runs from USB, it must share a common GND with the module.

See all projects
LED Blink
#1Beginner

LED Blink

The very first hello of electronics: switching a single LED on and off. The Arduino turns the LED on and off at short intervals, so the light blinks quickly. You see in the simplest way how the board

4.6(188)
1127
Traffic Light
#3Beginner

Traffic Light

A tiny copy of the traffic light you see on the road every day. Red stays on for two seconds, yellow flashes for a moment, green stays on for two seconds, then it goes back to red through yellow again

4.8(131)
397
LED Chaser
#5Intermediate

LED Chaser

Lights that switch on one after another, as if they were running. The Arduino lights six LEDs one at a time; each glows for a brief moment and goes out, so the light walks from start to end and then s

4.6(85)
207
Using a Servo Motor
#35Beginner
Premium

Using a Servo Motor

The arm of a small servo motor turns to three positions in turn: all the way to the start, right to the middle and all the way to the end, waiting two seconds at each stop. The Arduino tells the motor

4.7(48)
67
Servo Motor Operation with Potentiometer
#36Beginner
Premium

Servo Motor Operation with Potentiometer

As you turn the potentiometer knob, the servo motor's arm turns right along with it: one end of the knob means zero degrees, the other end means half a turn. The Arduino keeps reading the knob's posit

4.6(37)
52
Using a Stepper Motor
#67Intermediate
Premium

Using a Stepper Motor

A motor that turns step by step, exactly as far as you want, like the hand of a clock. Through a driver board, the Arduino turns a small stepper motor one full turn in one direction, waits a second, t

4.5(31)
42
Using a WS2812B LED Strip
#69Intermediate
Premium

Using a WS2812B LED Strip

Meet a smart LED strip where you can colour every single light on its own. The Arduino first lights the first five LEDs red, a second later turns the other five blue, then switches them all off and st

4.8(54)
70
Bluetooth Controlled Car with L298N
#80Advanced
Premium

Bluetooth Controlled Car with L298N

Turn your phone into a remote and drive your own robot car. The Arduino receives commands from a remote-control app on your phone through a Bluetooth module and spins the wheels with a motor driver; t

5.0(38)
65