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 input1S lithium, 3.0 V – 4.2 V
Motor channels4, independently controlled
Continuous current per channel1 A
Peak current per channel2 A (short bursts)
Regulated output5.0 V
5 V rail currentup to 800 mA
Control signal levels3.3 V or 5 V logic
PWM frequency range1 kHz – 20 kHz
Battery sense outputhalf of battery voltage
Idle current drawapprox. 1.2 mA
Mounting2.54 mm through-hole pads throughout

Pinout

Every label below is printed on the board silkscreen next to its pad.

Power in

PadWhat to connect
BAT+Battery positive
GNDBattery 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.

ConnectorControlled by
Top-left cornerM3 signal pad
Top-right cornerM4 signal pad
Bottom-left cornerM1 signal pad
Bottom-right cornerM2 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

PadWhat it gives you
b+Battery voltage sense — connect to an ADC pin
5VFour regulated 5 V pins, all connected together
GND busFive 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.

javascript
Battery voltage = b+ reading × 2

Reading it in firmware

For a 12-bit ADC running on a 3.3 V reference:

cpp
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 voltage

What the numbers mean

Battery stateBattery voltageVoltage at b+
Fully charged4.20 V2.10 V
Healthy / nominal3.70 V1.85 V
Time to land or park3.30 V1.65 V
Stop immediately3.00 V1.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.

cpp
// 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% speed

Choosing 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

StepDo this
1Battery + to BAT+, battery − to GND. Check twice.
2Motor leads into the corner connectors, M+ and M−.
3Any 5V pad to your MCU's 5 V input; any GND bus pin to MCU ground.
4Four MCU PWM pins to the M1 M2 M3 M4 signal pads.
5One 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

SymptomLikely cause
Motor does not run at allMCU ground not connected to board ground
Motor runs but ignores PWMSignal on the wrong pad — check the corner-to-pad map above
Motor runs backwardsSwap the two motor leads in the connector
5 V rail reads lowMore than 800 mA being drawn, or the battery is nearly flat
b+ reads zeroADC pin not configured as an analog input
b+ reads half what you expectThe pad outputs half the battery voltage — multiply by two
Motors stutter under loadBattery sagging; try a cell with a higher discharge rating
MCU resets when motors startUse 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.