Effective DC motor control requires matching the motor's torque-speed curve to the load's physical inertia, then selecting a driver rated for at least 150% of the motor's stall current. If you size a driver only for the continuous running current, the inrush surge at startup will trip overcurrent protection or melt the H-bridge MOSFETs. This guide breaks down how to match motors to loads, calculate real-world sizing, wire common driver modules, and diagnose the acoustic and thermal signatures of a failing drive system.

Matching the Motor to the Load Profile

Choosing the right motor starts with the load profile. A conveyor belt requires high starting torque to overcome static friction, while a cooling fan requires very little starting torque but scales up quadratically with speed. Treating a stepper motor and a servo as interchangeable for these tasks is a common mistake; steppers excel at holding position and open-loop low-speed torque, while servos rely on closed-loop feedback for high-speed dynamic accuracy. For general rotational drive, we typically choose between three DC motor types.

DC Motor Type Comparison for Drive Selection
Motor Type Torque Curve & Load Fit Control Needs & Driver Typical Cost (Hobby/Ind.)
Brushed DC (BDC) High starting torque, linear speed-voltage curve. Best for simple winches, wheeled robots, and linear actuators. H-Bridge driver (e.g., DRV8871, BTS7960). Requires PWM for speed, H-bridge for direction. $4 - $25
Brushless DC (BLDC) Flat torque curve across wide RPM range. High power density. Best for drones, RC vehicles, and high-speed spindles. Electronic Speed Controller (ESC) or 3-phase gate driver (e.g., DRV10983). Requires rotor position feedback (Hall or sensorless BEMF). $20 - $150+
Coreless DC Extremely low rotor inertia, rapid acceleration. Best for precision optics, medical valves, and fast-acting robotics. Standard H-Bridge, but requires high-frequency PWM (>20kHz) to prevent cogging and acoustic whine. $15 - $80

For the remainder of this guide, we will focus on Brushed DC (BDC) motor control, as it remains the most common entry point for DIY automation and requires the most fundamental understanding of H-bridge topology and terminal wiring.

Sizing Rules and a Worked Load Example

Never size a motor or driver based purely on continuous running current or blind horsepower conversions without load context. The golden rule of DC motor sizing is to calculate the continuous torque required by the load, multiply by a 2.0 to 2.5 safety factor for startup inertia, and select a motor whose stall torque exceeds that number. Your driver must then be rated for the motor's stall current, not just its nominal running current.

Bench Tip: If your mechanical system has high inertia (like a heavy flywheel), bump the safety factor to 3.0. The kinetic energy required to spin up the mass will hold the motor in a near-stall state for several seconds, generating massive heat in both the motor windings and the driver's MOSFETs.

Worked Example: Sizing a 12V Winch Motor

Let's size a motor for a small 12V winch lifting a 5 kg payload.

  1. Calculate Load Force: Mass (5 kg) × Gravity (9.81 m/s²) = 49.05 Newtons.
  2. Calculate Required Torque: The winch spool has a radius of 0.02 meters (20 mm). Torque = Force × Radius = 49.05 N × 0.02 m = 0.981 Nm continuous torque.
  3. Apply Safety Factor: 0.981 Nm × 2.5 (for startup surge and gearbox friction) = 2.45 Nm required peak torque.
  4. Motor Selection: We select a 12V BDC gearmotor rated for 3.0 Nm stall torque. At 12V, this motor draws 1.5A continuously, but its stall current is 12A.
  5. Driver Selection: A standard L298N (rated for 2A continuous) will instantly overheat and fail. We need a driver rated for at least 15A continuous to handle the 12A stall current safely without thermal shutdown. A BTS7960 module (43A peak, ~24A continuous with heatsinking) priced around $14 is the correct choice.

Driver Selection, Wiring, and Terminal Identification

High-current brushed DC motor control usually relies on an H-bridge integrated circuit or a module built around discrete MOSFETs. The BTS7960 is a staple for high-power 12V/24V systems, while the TI DRV8871 is excellent for lower-power 3.6A applications. Understanding the terminal breakdown is critical to avoid frying your microcontroller.

BTS7960 High-Power Driver Terminal Identification
Terminal Label Function Wiring Target
B+ / B- Motor Power Supply Connect to main battery/power supply (e.g., 12V/24V). Use heavy gauge wire (10-12 AWG).
M+ / M- Motor Outputs Connect to the brushed DC motor terminals. Polarity dictates direction.
VCC Logic Supply Connect to microcontroller 5V or 3.3V pin. Powers the opto-isolators on the board.
GND Logic Ground Connect to microcontroller GND. Must share a common ground reference with VCC.
R_EN / L_EN Enable Pins Bridge these to VCC or pull HIGH via GPIO to enable the H-bridge halves.
R_PWM / L_PWM Speed & Direction Apply PWM to one for speed, hold the other LOW. Swap to reverse direction.
Wiring Warning: Always route motor power wires (B+ to M+) physically away from logic wires (VCC, PWM). Brushed DC motors generate massive electromagnetic interference (EMI) from the carbon brushes. If your ESP32 or Arduino resets randomly when the motor spins, solder a 100nF ceramic capacitor directly across the motor's physical terminals to suppress high-frequency brush noise.

Reading Failure Signatures: Hum, Overheat, and Stall

When a DC motor control system fails, it rarely does so silently. The physical and acoustic signatures will tell you exactly where the breakdown is occurring before you even need to break out a multimeter.

  • The Acoustic Hum: If your motor emits a high-pitched whine or hum without spinning, your PWM frequency is likely too low (under 16kHz), causing the motor windings to act as a speaker. Alternatively, the motor is mechanically bound, and the driver is pulsing current against a static load. Raise your PWM frequency to 20kHz-25kHz in your microcontroller's timer registers to push the noise out of human hearing range.
  • Driver Overheat: If the H-bridge IC or MOSFETs are too hot to touch (exceeding 80°C) but the motor is running fine, you are exceeding the driver's continuous RMS current rating. This happens when the Rds(on) (on-state resistance) of the MOSFETs dissipates too much power as heat (P = I²R). You must either add forced-air cooling, parallel a second driver, or upgrade to a module with lower Rds(on) MOSFETs.
  • The Dead Stall: If the motor jams mechanically, its back-EMF drops to zero. The only thing limiting current is the DC resistance of the copper windings (often less than 1 ohm). Current spikes to V/R (e.g., 12V / 0.8Ω = 15A). If your driver lacks Overcurrent Protection (OCP) or current-sense feedback, this stall condition will punch through the silicon die of the H-bridge, permanently shorting the power supply to ground. Always use drivers with built-in OCP or add an inline automotive fuse.

For a deeper dive into the physics of back-EMF and winding resistance, refer to the foundational DC motor theory guides at Electronics Tutorials.

DC Motor Control FAQ

How do I control DC motor speed without losing low-end torque?

Use Pulse Width Modulation (PWM) rather than linear voltage reduction. If you drop the voltage to a DC motor using a linear regulator or a resistor, you proportionally starve it of current, destroying its torque. PWM switches the full supply voltage on and off thousands of times per second. The motor's inductance smooths this into an average voltage, but the current pulses remain high, preserving the magnetic field strength and maintaining high torque even at low RPMs.

Why does my DC motor control circuit keep resetting the microcontroller?

This is almost always caused by voltage sag (brownout) or back-EMF spikes. When a DC motor starts, it pulls stall current, which can drag a weak power supply's voltage down below the microcontroller's minimum operating threshold (e.g., dropping a 5V rail to 3.8V, resetting an Arduino). Furthermore, when you turn the motor off, the collapsing magnetic field generates a massive reverse voltage spike (back-EMF). If you don't have flyback diodes installed across the motor terminals (or built into your driver module), this spike travels back up the ground plane and scrambles the microcontroller's logic. Separate your motor power supply from your logic power supply, tying them together only at a single common ground point.

Can I use a stepper motor driver for brushed DC motor control?

No. While both systems move electromagnetically, their commutation requirements are entirely different. Stepper drivers (like the A4988 or TMC2209) are designed to sequence current through multiple distinct phase windings in precise microsteps to hold a rotor in a specific magnetic detent. A brushed DC motor relies on physical carbon brushes and a commutator ring to handle the internal switching; it only has two external terminals. Feeding a brushed motor from a stepper driver will result in improper current routing, lack of speed control, and likely thermal destruction of the driver IC. Use an H-bridge for brushed DC, and a dedicated ESC or 3-phase inverter for brushless DC.