A 3β5V mini submersible pump moves 70β110 litres an hour with its outlet at water level, draws 100β220 mA, and must never be wired straight to an Arduino pin. Put a relay, a MOSFET module or a motor driver in between, give it its own 5V supply, and keep it under water.
What does a 3β5V mini submersible pump actually deliver?
The 5V mini submersible pump is a sealed cream-white capsule about 56 Γ 33 Γ 24 mm, with its outlet spout on top, intake slots in the front face and one black two-core lead out of the back. Tubing is the one thing you bring yourself: any soft 6β7 mm inner-diameter aquarium or silicone hose stretches onto the spout and stays there. Keep it short and keep it fat, because every extra metre of narrow tube rubs flow away exactly the way height does.
| Specification | Figure | What it means for your build |
|---|---|---|
| Operating voltage | 3β6V DC | Happy on a 5V rail; slower and weaker at 3V |
| Free flow | 70β110 L/hr | Measured with no lift at all β see below |
| Running current | 100β220 mA | Five to eleven times what an Arduino pin is designed for |
| Maximum lift (static head) | roughly 40β110 cm | The height at which flow reaches zero |
| Outlet | β7 mm spout | Takes 6β7 mm ID vinyl or aquarium hose, stretched on |
Free flow misleads because it is measured with the outlet level with the water the pump stands in β no lift at all. Raise that outlet and the impeller’s pressure has to hold a column of water up against gravity: every centimetre of height eats a slice of it, and the flow left over falls as the height rises. At maximum static head the two balance exactly, the water stands still in the tube, and the flow is zero.
That ceiling lands between 40 and 110 cm depending on the unit, so plan on the low end. Between the two endpoints β full flow at no lift, no flow at the ceiling β a small centrifugal pump falls away closely enough to a straight line that you can plan on one: work out what fraction of the ceiling your height uses, and take roughly that fraction off the flow. Lifting 20 cm, a pot on the bench above a bottle on the floor, is half of a pessimistic 40 cm ceiling, so expect about half the free-flow figure: near 40 L/hr, or 0.7 litres a minute. A shelf a metre up is past where this pump gives up, and a long narrow hose costs height too.
So measure instead of trusting the headline. Put the outlet at the height your project actually needs, run the pump for thirty seconds into a measuring jug, and multiply the millilitres you catch by 0.12 β thirty seconds is one 120th of an hour, so that single sum turns your jug into litres per hour at the height that matters. The sketch further down does the timing for you.
If that is not enough, the fix is a different pump, not different wiring: this one is a circulator, useless at suction or height. The R365 12V diaphragm pump sits dry outside the tank, self-primes to about 2 m of suction and pushes to about 3 m of head on 6 mm barbs β for a 12V rail and two spade terminals you solder leads onto. It is also the one that behaves like a bare motor in your circuit rather than a sealed module β brushes, an exposed winding and genuine inductive kickback at switch-off β so it wants a flyback diode across its terminals and a relay or an L298N to switch it, and none of the current figures on this page carry across to it.
Parts for the worked example β a pump switched on and off, no soldering
The other lanes β pick the one your build needs
These are alternatives, not extras to the list above. The IRF520 MOSFET module is the PWM speed lane for 5V logic. The DRV8833 is the clean lane for 3.3V logic and the one to take if you are driving two pumps β its 12-pin header strip ships loose, so that board needs soldering before you can use it. The M-F jumpers suit the IRF520 module's header pins rather than the relay's screw terminals. The R365 12V diaphragm pump is the honest exit for builds that need real suction or height.
Why can a mini water pump never hang off an Arduino output pin?
The ATmega328P on an Uno-compatible board is generous about voltage and mean about current: its datasheet caps a pin at 40 mA absolute and expects you to design to 20 mA. The pump’s running current is already five to eleven times that, and switch-on is worse: the rotor is not turning, so it makes no back-EMF to oppose the supply and only the winding’s bare resistance limits the current. The usual motor-class allowance of two to three times running current puts the first few tens of milliseconds near 0.7 A β an order of magnitude past the absolute maximum.
The other warning people repeat, inductive kickback, has a different answer here. This pump’s windings are not on the end of your wires: the stator is potted in epoxy in the dry half of the capsule with its own commutation electronics, turning a magnet-and-impeller rotor through a solid plastic wall. Your switch feeds that little board, not a bare coil, and the board absorbs its own switching. What rules out the pin is current β and an ESP32 is no better off: Espressif’s datasheet rates a GPIO at 40 mA of source current and 28 mA of sink with the drive strength turned all the way up, and that is what the pin can push, not what you may hang on it. Kickback does bite here, but at the relay’s coil, which is what the diode already fitted to that module is for.
Relay, MOSFET module or motor driver β which one do you need?
The 1-way 5V relay module is the on/off lane. Both of its blue three-way blocks are screw terminals β NO/COM/NC on the left, DC+/DCβ/IN on the right β so bare leads clamp straight in. Coil side and contact side share no metal: IN only lights an optocoupler, whose transistor pulls the coil in from DC+, and the contacts that coil throws touch none of it. The L/H jumper chooses whether that LED is referenced to DCβ or DC+, which decides whether HIGH or LOW on IN switches the pump. That optocoupler is also why this 5V board takes a 3.3V pin from an ESP32 with no level shifter, as long as the jumper sits on L: on L the LED’s anode is tied to the module’s own 5V and your pin only has to pull the other side down to near zero, so the LED gets whatever current the 5V rail and its resistor allow and your logic level never enters the sum. On H the same 3.3V pin has to push current through a resistor sized for 5V, and the LED can end up too dim to turn the transistor on. DC+ still wants a real 5V either way β an ESP32 board’s 5V or VIN pin while it is on USB, not its 3.3V regulator, because the relay’s coil is a 5V coil and tens of milliamps of it. Deeper wiring is in our relay module guide.
The IRF520 MOSFET module is the cheapest route to speed rather than on/off. The transistor sits between the pump’s negative lead and ground, and your pin only charges its gate, which costs a tiny fraction of the load current. The caveat: the IRF520 is not a logic-level part β Vishay’s datasheet gives a gate threshold of 2.0β4.0V and quotes on-resistance at a 10V gate. At 5V and a couple of hundred milliamps it conducts comfortably, so this pump is well inside what it does well; at 3.3V a worst-case part may not turn on at all, which our IRF520 guide takes apart.
The DRV8833 dual driver is the clean 3.3V lane. TI’s datasheet gives it a 2.7β10.8V motor supply, 1.5 A RMS per channel and an input HIGH level of 2.0V β 2.5V on the sleep pin β so an ESP32’s 3.3V pin is a firm HIGH rather than a hopeful one, with the current clamps inside the chip. Two channels means two pumps; the tax is soldering the loose 12-pin header. Our DRV8833 versus L298N guide covers the pair β the L298N is for 12V pumps, since its output stage drops around two volts and would starve a 5V one.
| Switching part | What carries the pump current | Speed control | 3.3V logic | Soldering |
|---|---|---|---|---|
| 1-way relay module | Mechanical contacts, fully isolated | No β on/off only | Yes, with the jumper on L | None; screw terminals |
| IRF520 MOSFET module | The MOSFET, to ground | Yes β PWM | Marginal; gate is not logic-level | None; terminals plus pin header |
| DRV8833 driver | The driver chip, two channels | Yes β PWM, two pumps | Yes; HIGH from 2.0V up | Yes; header ships loose |
Either PWM lane has a floor rather than a smooth dial down to nothing, because chopping the supply also chops that commutation board inside the pump: below roughly a third to a half duty the rotor never comes round and you get a hum. Command full duty for a few hundred milliseconds first, then drop to the speed you want. On an Uno that is analogWrite(pin, 255) on one of the PWM-capable pins β 3, 5, 6, 9, 10 or 11 β held for two or three hundred milliseconds, then analogWrite(pin, 160) or wherever your own jug test says the rotor still comes round.

Why must a submersible pump stay under water?
Submersible is not a bonus feature here, it is the only way this pump works. The rotor turns in a plain plastic sleeve bearing that the pumped water lubricates and cools, and the potted stator dumps its heat into that same water. Run it in air and both stop at once β the bearing galls, the heat has nowhere to go, and minutes finish the pump off. It is not self-priming either, since a centrifugal impeller spinning in air moves nothing, so it sits on the reservoir floor with the intake slots covered.
That makes the water level part of your circuit, which is what our water level relay controller guide is built around.

How do you wire a water pump to an Arduino through a relay, and size the supply?
Keep the Uno on USB and give the pump its own 5V 3A adapter through a 5.5 Γ 2.1 mm female barrel pigtail. In this build the two supplies never touch: a relay contact is a switch made of metal, so the pump’s circuit begins and ends at the adapter and no wire runs between its negative and the Uno’s ground at all. That separation is what you bought the relay for. The two PWM routes are the opposite case, and it is the step people skip β a MOSFET module or a DRV8833 reads your pin as a voltage, and a voltage only means something measured against a reference, so there the Arduino’s GND and the pump supply’s negative must be joined or the input sees a level neither side agrees on and the pump stutters or never starts. The relay’s coil can run off the Uno’s 5V because a coil is tens of milliamps; the pump cannot, and the reason is that start surge. Every conductor between the host port and the pump has resistance β cable, the board’s resettable fuse, jumper β and most of an amp across a few tenths of an ohm is a few tenths of a volt gone from a rail that only had five, so the board browns out at the exact instant the pump starts β the same mechanism as our SIM800L power guide, on a hungrier load. Three amps is not for the pump, which wants a fifth of one; it is so the rail barely notices the switch-on surge, and so the same adapter still has headroom when a second pump or a light joins the build later. One thing that adapter must not do is go into the Uno’s barrel jack: that path runs through the on-board regulator, which needs about a volt more than it returns. Plug sizes and centre-positive polarity are in our barrel jack guide.
| From | To | Why |
|---|---|---|
| Uno 5V | Relay DC+ | Powers the coil side |
| Uno GND | Relay DCβ | Coil return |
| Uno D8 | Relay IN | The control pin |
| Pigtail red lead (centre pin) | Relay COM | Pump supply into the contact |
| Relay NO | Pump red conductor | Contact closes β the pump gets 5V |
| Pump black conductor | Pigtail black lead | Twist the two bare ends together and sleeve or solder the joint β it closes the pump’s loop and never reaches the Uno |
Because that control side is screw terminals, the wire you want is male-to-male: one male end into the Uno’s header, the other under a screw. Male-to-female is for module pin headers β the IRF520 lane. Before any of it sees power, settle the pigtail’s polarity: red is the centre conductor and the centre pin is positive on this adapter, but the moulded plastic carries no marking, so ten seconds with a meter on the plug is the honest way to be certain. It matters because the pump’s driver electronics are sealed inside the body β a brushless pump fed backwards does not run backwards, it simply does not run, and that is not a state you want to leave powered while you work out why. Then set the L/H jumper, confirm by ear on the first run because the coil pulls in with an audible click, and match RELAY_ACTIVE_HIGH below. An Uno’s pins are floating inputs until setup() runs, so press reset once with the pump connected and watch what the relay does: get the trigger sense backwards and the pump runs through every boot, every reset and every sketch upload β which in a small reservoir is how a bottle ends up on the bench and a pump ends up running dry.
Keep the build on low-voltage DC. The relay’s contacts carry a mains rating printed on the blue cube, but nothing here belongs near mains wiring. The hazard this build does have is the obvious one: an open jar of water on the bench with a mains adapter behind it. Stand the board and the adapter well clear of the reservoir, and let the pump’s lead and the adapter’s cable dip below their sockets before they rise into them, so water running down a wire drips off the low point instead of following it into a connector.
If you would rather see one of these pumps go from bare leads to switched-by-a-board before you build it yourself, this covers the physical handling:
// Bench check for a 3-5V mini submersible pump on a 1-way relay module.
// Submerge the pump, put the outlet hose at the height your project needs,
// send any character over Serial, and the pump runs for exactly 30 seconds.
// 30 s is one 120th of an hour, so: litres per hour = millilitres collected x 0.12.
const uint8_t RELAY_PIN = 8; // relay module IN terminal
const bool RELAY_ACTIVE_HIGH = true; // set to false if the L/H jumper sits on L
const unsigned long RUN_MS = 30000UL; // 30 s measured run
bool pumpRunning = false;
unsigned long startedAt = 0;
void setPump(bool on) {
// One place decides the logic sense, so the jumper position is the only edit.
digitalWrite(RELAY_PIN, (on == RELAY_ACTIVE_HIGH) ? HIGH : LOW);
pumpRunning = on;
}
void setup() {
Serial.begin(9600);
setPump(false); // Safe level FIRST, while the pin is still an input: on an
pinMode(RELAY_PIN, OUTPUT); // active-LOW board that write turns on the pin's pull-up, so
setPump(false); // IN is held high across the pinMode call and the relay cannot
// click in and start the pump while the sketch is still booting.
Serial.println(F("Pump under water? Send any character to run it for 30 s."));
}
void loop() {
if (!pumpRunning && Serial.available()) {
while (Serial.available()) {
Serial.read(); // drain the line ending too
}
startedAt = millis();
setPump(true);
Serial.println(F("Running..."));
}
if (pumpRunning && (millis() - startedAt >= RUN_MS)) {
setPump(false);
Serial.println(F("Stopped. Measure the millilitres you collected,"));
Serial.println(F("then multiply by 0.12 for litres per hour at that height."));
}
}
Nothing to install. The builds that spend those two numbers are our automatic plant watering guide and the mini aquaponics system.

Common mistakes we see from real customers
Reading “5V” as “safe for a pin”. Voltage is what the pump needs; current is what it asks of whatever switches it. A 5V pump on a 5V pin is still a motor on 20 mA.
Testing the pump in air to see if it works. It will run a few seconds and sound fine, and you will have spent some of its life. Test it in a jar of water.
Buying on the free-flow figure. That is a zero-lift number. How high the water must go decides whether any flow arrives at all.
Letting the reservoir run out. Almost nobody runs one of these dry on purpose. They leave a timed sketch watering from a jar that empties on day three, and the pump spends the rest of the week in air. If the sketch cannot see the water, either cap every run at a volume the reservoir can certainly still supply, or give it a float switch or a level probe so it can ask.
Blaming the pump when it is the intake. Soil, algae and root hair collect across the slots in the front face, and the first symptom is a pump that sounds completely normal and delivers a trickle. Lift it out, rinse the slots, and stand it on a small block rather than in the silt at the bottom of the reservoir.
FAQ
Can I connect a 5V water pump directly to an Arduino pin?
No. It draws 100β220 mA running and nearer 0.7 A at start-up, against a pin designed for 20 mA. Put a relay, a MOSFET module or a driver in between, on its own supply. With a MOSFET module or a driver, join its ground to the board’s; a relay’s contacts need no shared ground at all.
How high can a mini submersible water pump push water?
Between roughly 40 and 110 cm of static head depending on the unit β and at that height flow is zero, not merely reduced. Plan on the low end, then measure yours with a jug.
Can I control the speed of a mini water pump with PWM?
Yes, through a MOSFET module or a DRV8833, but not down to nothing. Chopping the supply also chops the pump’s own commutation electronics, so below roughly a third to a half duty it hums instead of turning.
Why did my mini water pump stop working after a few minutes?
Most often it was run dry. Its bearing is lubricated by the water it pumps and the potted stator cools into that same water, so in air both fail within minutes. It is not self-priming either.
Do I need a relay or a MOSFET for a small water pump?
A relay if you only need on and off, or if pump supply and logic are different voltages. A MOSFET module or a DRV8833 for PWM speed β the DRV8833 on a 3.3V board.
Last updated September 2026. Stuck? Chat with us on WhatsApp.



Mini Water Pump Submersible DC 3V-5V - 5V WATER PUMP
Arduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller Project
Relay Module 3.3V 5V 12V 1/2/4/8 Ways Optocoupler Trigger Relay Module 1 2 4 8 Channel Relay Module - 5V RELAY MODULE(1WAY)
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-M 20CM
Power Supply Adapter DC Universal AC to DC Converter PSU 5V2A 5V3A 9V2A 12V2A - P.S. ADAPTOR (5V3A)
5.5x2.1mm DC Power Male Connector Plug Jack Adapter for Arduino DIY Electronics Projects - 5.5x2.1 DC CONNECTOR (F)
IRF520 MOSFET Driver Module PWM Output Power Control for Arduino Raspberry Pi DC Motor Control
DRV8833 Dual Motor Driver 2 DC Motors 1.5A Arduino Smart Car Project
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-F 20CM
R365 12 Water Pump Pnuematic Diaphragm Water Pump Watering System Motor