Selecting a DC motor and driver is rarely as simple as matching the voltage rating on the nameplate. A 12V motor paired with a 12V battery will spin, but if the driver cannot handle the inrush stall current or the motor lacks the continuous torque to overcome static friction, your project will either stall out or melt the driver's MOSFETs. For DIY robotics, winches, and motorized conveyors, you must size the system around the mechanical load profile, not just the electrical supply.

Matching the DC Motor and Driver to Your Load Profile

The golden rule of motor sizing is to select a motor whose continuous torque rating is 150% to 200% of your calculated load torque. This overhead accounts for startup inertia, gearbox inefficiencies, and voltage sag under load. Sizing purely for the nominal running torque guarantees thermal saturation during acceleration.

Sizing Rule of Thumb: Calculate the required load torque, divide by your gear reduction ratio (and multiply by the inverse of gearbox efficiency), then apply a 2x safety factor to find your target continuous motor torque. Size the driver for the motor's stall current, not its continuous running current.

Worked Load Example: 12V DIY Winch

Suppose you are building a 12V winch to lift a 20 kg payload using a drum with a 0.05-meter radius, coupled to a 10:1 planetary gearbox (assume 80% efficiency).

  • Force: 20 kg × 9.81 m/s² = 196.2 N
  • Load Torque at Drum: 196.2 N × 0.05 m = 9.81 N·m
  • Required Motor Torque: 9.81 N·m / (10 × 0.80 efficiency) = 1.22 N·m
  • Target Continuous Torque (2x Safety Factor): 1.22 N·m × 2 = 2.44 N·m

If your chosen motor has a torque constant ($K_t$) of 0.2 N·m/A, the continuous current draw will be 12.2A (2.44 / 0.2). Because DC motors draw maximum current at zero RPM, the stall current will typically be 4 to 5 times higher than the continuous current—roughly 50A to 60A in this scenario. You cannot use a standard 15A H-bridge here. You need a heavy-duty driver like the Cytron MD30C (rated for 30A continuous, 80A peak) or a dual BTS7960 module with adequate heatsinking. For a comprehensive look at driver IC capabilities, review the Texas Instruments motor driver portfolio, which details continuous vs. peak current limits for various silicon topologies.

Motor Topology Showdown: Brushed, BLDC, and Stepper

Not all DC motors behave the same way under load. Treating a stepper motor like a continuous-rotation brushed motor will result in immediate stalling at high speeds, while using a brushed motor for precision positioning will leave you chasing encoder drift. Below is a breakdown of which motor type fits specific load profiles.

Motor Type Torque Curve Profile Control Complexity Typical Cost (12V/24V Class) Best Load Profile
Brushed DC Peak torque at stall (0 RPM); drops linearly as speed increases. Low. Simple H-bridge for direction; PWM for speed. $15 - $45 (with gearbox) Continuous rotation, high starting torque, winches, conveyors, RC vehicles.
Brushless DC (BLDC) Flat torque curve up to base speed, then drops. High efficiency at high RPM. Medium/High. Requires 3-phase inverter and commutation (Hall sensors or sensorless FOC). $40 - $120 Drones, high-speed spindles, electric skateboards, continuous high-efficiency drives.
Bipolar Stepper Maximum holding torque at standstill; torque drops off sharply at higher speeds due to inductance. Medium. Requires specialized chopper driver (e.g., A4988, TMC2209) with step/dir pulses. $20 - $60 Low-speed precision positioning, 3D printer axes, CNC routers, camera gimbals.
AC/DC Servo Constant torque across a wide speed range; extreme peak torque for short bursts. Very High. Requires closed-loop tuning, high-resolution encoders, and dedicated servo drives. $250 - $1,000+ Industrial robotics, high-speed pick-and-place, dynamic load rejection.

Note: Steppers and servos are fundamentally different. Steppers operate open-loop and rely on magnetic detents for holding torque, making them prone to resonance and mid-band instability. Servos operate closed-loop and dynamically adjust current to match the load, allowing them to handle sudden inertial spikes that would cause a stepper to lose synchronization.

Wiring, Terminals, and Driver Demands

Miswiring a motor driver is the fastest way to brick a microcontroller or short out a power supply. The terminal identification and driver topology depend entirely on the motor type you selected.

Brushed DC Terminals and Drivers

Brushed motors have two terminals, typically labeled A/B, M1/M2, or simply +/−. Polarity dictates the direction of rotation.

  • Driver Demand: An H-bridge circuit (four MOSFETs). To control speed, the driver applies PWM to the high-side or low-side switches. To control direction, it toggles the diagonal pairs.
  • Flyback Protection: Inductive kickback from the motor windings will destroy unprotected MOSFETs. Modern drivers like the TB6612FNG include internal clamp diodes. If you are building a custom high-power H-bridge or using older modules, you must add external Schottky diodes (e.g., 1N5822) across the motor terminals.

BLDC Terminals and Drivers

BLDC motors feature three thick phase wires (U, V, W) and, if sensored, a harness with five or six thin wires for the Hall effect sensors (VCC, GND, Ha, Hb, Hc).

  • Driver Demand: A 3-phase inverter (six MOSFETs). The driver must sequentially energize the U-V-W phases in a specific commutation pattern based on the rotor's position. If using Hall sensors, the driver reads the Ha/Hb/Hc logic states to time the commutation. Sensorless drivers rely on measuring the Back-EMF (BEMF) zero-crossing on the unenergized phase, which means the motor must be 'kick-started' open-loop before it can synchronize.
  • Wiring Note: Swapping any two of the U/V/W phase wires will reverse the motor's rotation, but swapping Hall sensor wires will cause violent cogging and immediate overcurrent faults.

For plug-and-play Arduino integration with smaller brushed and stepper motors, the Adafruit Motor Shield V2 remains a reliable benchmark, utilizing I2C PWM controllers to offload timing from the main MCU.

Reading Failure Signatures: Hum, Overheat, and Stall

When a motor system fails, it usually gives physical warning signs before catastrophic silicon failure. Learning to read these signatures saves time and components.

  • The 'Hum' (Without Movement): If a BLDC motor vibrates and hums but won't spin, you have a commutation mismatch. This is almost always caused by Hall sensors that are wired out of sequence, or a driver configured for 120-degree Hall spacing when the motor uses 60-degree spacing. In steppers, a hum without movement indicates the drive frequency exceeds the motor's pull-in torque, causing it to stall immediately upon starting.
  • Overheat (Smell of Hot Enamel): If the motor casing is too hot to touch (>80°C) or smells like burning varnish, the continuous RMS current exceeds the motor's thermal dissipation limit. This frequently happens when a stepper driver is set to 100% holding current while the axis is stationary, or when a brushed motor is forced to operate near its stall torque due to mechanical binding. Implement PWM current decay for steppers, and ensure your mechanical load isn't physically binding.
  • Stall (Sudden Stop and Current Spike): The load exceeded the motor's breakdown torque. The motor stops, impedance drops to the pure DC resistance of the copper windings (often <1Ω), and current spikes to the stall limit. If your driver lacks Overcurrent Protection (OCP) or $I^2t$ thermal shutdown, the MOSFETs will absorb this let-through energy and melt. Always verify your driver's peak current rating exceeds the motor's calculated stall current.

For high-reliability builds, consult the datasheets of specialized driver ICs from manufacturers like Pololu's motor driver lineup, which explicitly detail the OCP trip thresholds and thermal shutdown hysteresis.

Frequently Asked Questions

How do I pair a 12V DC motor and driver for an Arduino project?

For Arduino projects under 3A, use a dual TB6612FNG breakout board. Connect the Arduino's 5V and GND to the driver's logic pins, and use two digital pins for direction (IN1/IN2) and one hardware-PWM capable pin for speed. Power the motor side (VM) with a separate 12V battery pack, ensuring the battery GND is tied to the Arduino GND to establish a common reference.

Why does my DC motor and driver setup overheat at low PWM speeds?

When you run a brushed DC motor at low speeds using low-frequency PWM (e.g., 490Hz, the default on many Arduino pins), the current waveform becomes highly jagged. The RMS current increases significantly compared to a smooth DC supply, generating excess $I^2R$ heat in the windings without producing proportional mechanical work. Increase your PWM frequency to at least 16 kHz to 20 kHz to smooth the current delivery and reduce thermal losses.

Can I use a stepper driver for a brushed DC motor and driver circuit?

No. Stepper drivers (like the A4988 or TMC2209) are designed to regulate current through two independent coils using microstepping decay modes. They lack the H-bridge topology required to reverse polarity across a single brushed DC armature. Attempting to wire a brushed motor to a stepper driver will either result in no rotation or a dead short across the driver's internal MOSFETs.

What size DC motor and driver do I need for a 50 lb robotic chassis?

A 50 lb (22.7 kg) chassis requires motors sized for acceleration and incline climbing, not just flat-ground cruising. Assuming 4-inch (0.1m) diameter drive wheels and a desired acceleration of 1 m/s², you need roughly 1.1 N·m of torque per wheel. With a 20:1 gearbox, target a 12V brushed DC motor with a continuous torque of at least 0.06 N·m and a free speed of 3000 RPM. Pair this with a driver capable of 15A continuous per channel, such as a dual VNH5019 shield, to handle the 30A+ combined stall current during hard starts.