Quad Motor Driver & 5 V Power Board
Drive four brushed DC motors, power your microcontroller from a clean 5 V rail, and read your battery voltage — all from one 1S lithium cell, on one board.
Designed and built by Navi3D for small robots, rovers, walkers and micro drone frames.
What This Board Does
Connect a single lithium cell and the board gives you three things at once:
Specifications
| Battery input | 1S lithium, 3.0 V – 4.2 V |
| Motor channels | 4, independently controlled |
| Continuous current per channel | 1 A |
| Peak current per channel | 2 A (short bursts) |
| Regulated output | 5.0 V |
| 5 V rail current | up to 800 mA |
| Control signal levels | 3.3 V or 5 V logic |
| PWM frequency range | 1 kHz – 20 kHz |
| Battery sense output | half of battery voltage |
| Idle current draw | approx. 1.2 mA |
| Mounting | 2.54 mm through-hole pads throughout |
Pinout
Every label below is printed on the board silkscreen next to its pad.
Power in
| Pad | What to connect |
|---|---|
| BAT+ | Battery positive |
| GND | Battery negative |
Motor connectors — one at each corner
Four 2-pin connectors, marked M+ and M−. Motor leads go here. Swapping the two leads reverses which way the motor spins.
| Connector | Controlled by |
|---|---|
| Top-left corner | M3 signal pad |
| Top-right corner | M4 signal pad |
| Bottom-left corner | M1 signal pad |
| Bottom-right corner | M2 signal pad |
Motor signal pads
Four single pads labelled M1, M2, M3, M4. Each takes one GPIO or PWM output from your microcontroller and controls its matching motor connector.
Rails and monitoring
| Pad | What it gives you |
|---|---|
| b+ | Battery voltage sense — connect to an ADC pin |
| 5V | Four regulated 5 V pins, all connected together |
| GND bus | Five ground pins along the top edge, all connected together |
The four 5V pins and five GND pins exist so you can power several devices — MCU, servo, sensor, LED strip — without splicing wires or building a separate distribution block.
The b+ Battery Monitor
b+ outputs exactly half the battery voltage. Wire it to any analog input — no extra resistors, no external divider board.
Battery voltage = b+ reading × 2Reading it in firmware
For a 12-bit ADC running on a 3.3 V reference:
int raw = analogRead(BATT_SENSE_PIN); // 0 .. 4095
float v_adc = (raw * 3.3f) / 4095.0f; // volts measured at b+
float v_batt = v_adc * 2.0f; // actual battery voltageWhat the numbers mean
| Battery state | Battery voltage | Voltage at b+ |
|---|---|---|
| Fully charged | 4.20 V | 2.10 V |
| Healthy / nominal | 3.70 V | 1.85 V |
| Time to land or park | 3.30 V | 1.65 V |
| Stop immediately | 3.00 V | 1.50 V |
Running a lithium cell below 3.0 V shortens its life and can damage it permanently. Set your low-voltage warning in firmware at 3.3 V and a hard stop at 3.0 V.
Input range
Because the output is half the battery voltage, a 3.3 V ADC has plenty of headroom on a 1S cell — the reading tops out around 2.1 V on a full charge, so there is no risk of clipping.
Driving the Motors
Send a logic high to a signal pad and the motor runs. Send a logic low, or leave the pin as an input, and it stops. PWM the pad for speed control.
// Simple on/off
digitalWrite(M1_PIN, HIGH); // motor 1 full speed
digitalWrite(M1_PIN, LOW); // motor 1 off
// Speed control
analogWrite(M1_PIN, 180); // roughly 70% speedChoosing a PWM frequency
Anything between 1 kHz and 20 kHz works. Below about 18 kHz you will hear the motors whine at the switching frequency — pick 18 – 20 kHz if you want the build to run quietly.
Direction
Each channel is a single-direction speed control. Motors spin one way only, set by how you wire the two leads into the connector. There is no reverse and no active braking — cutting the signal lets the motor coast to a stop.
Current
Each channel handles 1 A continuously. Short bursts to 2 A are fine, which covers the startup surge of most small geared motors. If a motor draws more than 1 A while running steadily, give the board some airflow or move to a lower-current motor.
Quick Start
| Step | Do this |
|---|---|
| 1 | Battery + to BAT+, battery − to GND. Check twice. |
| 2 | Motor leads into the corner connectors, M+ and M−. |
| 3 | Any 5V pad to your MCU's 5 V input; any GND bus pin to MCU ground. |
| 4 | Four MCU PWM pins to the M1 M2 M3 M4 signal pads. |
| 5 | One MCU analog pin to b+. |
Your microcontroller and this board must share ground. Without that shared connection the motor signals have nothing to reference and the channels will behave unpredictably.
What Makes This Board Different
Important Safety Notes
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Motor does not run at all | MCU ground not connected to board ground |
| Motor runs but ignores PWM | Signal on the wrong pad — check the corner-to-pad map above |
| Motor runs backwards | Swap the two motor leads in the connector |
| 5 V rail reads low | More than 800 mA being drawn, or the battery is nearly flat |
| b+ reads zero | ADC pin not configured as an analog input |
| b+ reads half what you expect | The pad outputs half the battery voltage — multiply by two |
| Motors stutter under load | Battery sagging; try a cell with a higher discharge rating |
| MCU resets when motors start | Use a battery with lower internal resistance, or add a capacitor across BAT+ and GND |
Support
Questions about this board, or something not behaving as described here — get in touch through navi3d.in.