Power Electronics & Motor Drives: The Ultimate Guide
The power stage that turns a battery into three-phase motor current: inverters, gate drivers, SiC vs GaN, PWM, losses, and thermal sizing.
Between the battery and the motor sits a box of silicon that most robot builders treat as a black label with an amp rating on it. That box is the motor drive, and it is where a startling amount of a robot's efficiency, heat, noise, and reliability gets decided. The FOC controller computes what current each phase should carry; the power stage is the muscle that actually makes that current flow, switching tens of amps on and off tens of thousands of times a second across devices that would vaporize if you held them halfway on for more than a microsecond.
The whole job of a motor drive is to take a fixed DC bus (a battery, or a rectified mains supply) and synthesize three phase voltages of arbitrary amplitude and frequency, on demand, with as little loss as physics allows. It does this with switches rather than analog devices, because a switch that is either fully on (near-zero voltage across it) or fully off (near-zero current through it) dissipates almost no power, while a device operating in its linear region cooks. Everything in this guide follows from that single decision to build a voltage source out of hard-switched transistors and a bit of filtering inductance you already own for free (the motor windings themselves).
This is the deep version. We separate the power path into its honest stages: the DC bus and its capacitance, the three-phase inverter of half-bridges, the gate drivers that turn logic into gate charge, the switching devices themselves (MOSFET, IGBT, SiC, GaN), and the current sensing that closes the loop. Then we do the loss math that actually sizes the heatsink, the regenerative-braking problem that pumps the bus, and the EMI that couples all of it into your sensors. Real device numbers, real equations, real tradeoffs.
The take: A motor drive is a voltage-source inverter: three half-bridges of switches, a stiff DC-link capacitor, and gate drivers, all commanded by PWM so the motor's own inductance averages the chopped voltage into smooth current. Size it by two loss mechanisms that trade against each other. Conduction loss (I squared times on-resistance, or forward voltage times current) dominates at high torque and low speed. Switching loss (energy per transition times switching frequency) dominates at high frequency. Pick the device family by voltage and frequency: silicon MOSFETs below ~100 V, IGBTs for high-voltage high-current low-frequency, SiC for high-voltage high-frequency, GaN for low-voltage very-high-frequency. The heatsink is sized by total loss, and the DC-link capacitor is sized by its ripple-current rating, which usually binds before the voltage rating. Get those two right and the rest is layout discipline.
Companion reading: motor controllers & FOC, brushless DC motors (BLDC), robot power & batteries, thermal management & cooling, and robot wiring, cables & connectors.
Table of contents
- Key takeaways
- The power path, end to end
- The DC bus and DC-link capacitance
- The three-phase inverter of half-bridges
- Switching devices: MOSFET, IGBT, SiC, GaN
- Gate drivers and dead-time
- PWM: how a switch becomes a sine
- Current sensing: shunt vs Hall
- Switching vs conduction losses and thermal design
- DC-DC conversion and auxiliary rails
- Regenerative braking and bus pumping
- EMI and the layout that survives it
- Selecting and sizing a drive
- Failure modes and bring-up
- Frequently asked questions
The power path, end to end
Trace the energy from source to shaft and every block earns its place.
Source. Either a battery (most mobile robots, drones, legged platforms) or the AC mains rectified to DC (industrial drives, fixed machines). A battery already gives you a DC bus. Mains needs a rectifier: a diode bridge (cheap, but draws pulsed current and pollutes the line) or an active front end / power-factor-correction stage (draws clean sinusoidal current, and can feed energy back to the grid). For the battery side, the chemistry, sag, and protection are covered in the robot power & batteries guide.
DC link. A bank of capacitors across the bus that stiffens the voltage. The inverter yanks current from this bus in sharp pulses; the capacitor supplies those pulses locally so the long, inductive wire back to the battery does not have to. This is the single most abused component in amateur drives.
Inverter. Three half-bridges (six switches) that connect each motor phase to either the positive or negative rail. By modulating how long each phase spends connected to each rail, the inverter synthesizes any three-phase voltage set up to the bus voltage.
Gate drivers. Small ICs that take a logic-level PWM command and deliver the amps of gate current needed to switch a power transistor on and off fast. They also handle the awkward fact that the high-side switch's gate reference floats up to the bus voltage.
Sensing. Current sensors on the phases (or the DC link), a bus-voltage divider, and temperature sensors. This is the feedback the FOC controller needs to regulate torque.
Controller. The MCU or FPGA running the current loop. It reads the sensors, runs the Clarke and Park transforms, computes the required phase voltages, and emits the PWM duty cycles. We cover the control side in depth in the motor controllers & FOC guide; this guide is everything downstream of the duty-cycle command.
Rule of thumb: the controller decides what voltage each phase should have; the power stage decides whether that voltage arrives cleanly and how much heat it costs to deliver it. A perfect control algorithm on a badly designed power stage still produces a hot, noisy, unreliable drive.
The DC bus and DC-link capacitance
The DC link is a stiff voltage reservoir sitting directly across the inverter's rails. Its job is to source and sink the high-frequency ripple current the inverter demands, so the battery or rectifier upstream sees something close to smooth DC.
Here is why it matters. When a half-bridge switches, it connects a phase carrying tens of amps to the bus in a few tens of nanoseconds. The current in the wire from the battery cannot change that fast, because that wire has inductance (roughly 1 microhenry per meter of loop). The energy has to come from somewhere local: the DC-link capacitor. Remove it and every switching edge would try to slew current through the battery wiring, and the inductance would answer with a voltage spike of V = L * dI/dt that can be hundreds of volts, enough to punch through the switches.
Sizing by ripple current, not voltage
Beginners size the DC-link cap by voltage rating and capacitance value. The binding constraint is usually RMS ripple current. The inverter pulls a chopped current from the bus, and the capacitor carries the AC component of it. Every amp of ripple flows through the capacitor's equivalent series resistance (ESR) and dissipates I_ripple_rms squared * ESR as heat, right inside the capacitor. Electrolytics have meaningful ESR and a published ripple-current limit; exceed it and the cap runs hot, dries out, and fails in months.
I_cap_ripple_rms ≈ I_phase_rms * sqrt( 2*m*[ sqrt(3)/(4*pi) + cos^2(phi)*(sqrt(3)/pi - 9*m/16) ] )
m = modulation index (0 to ~1.15 with SVPWM)
phi = load power factor angle
That expression looks fierce, but the takeaway is simple: DC-link ripple current is a large fraction (often 0.4 to 0.7) of the phase RMS current, and it peaks near half modulation. A drive pushing 30 A RMS into the motor might see 15 to 20 A RMS of ripple in its DC-link capacitor. The cap must be rated to carry that continuously without overheating.
Film vs electrolytic
Two capacitor families dominate DC links.
| Property | Aluminum electrolytic | Film (polypropylene) |
|---|---|---|
| Capacitance per volume | High | Low (bulkier) |
| ESR | Moderate to high | Very low |
| Ripple current per uF | Low | High |
| Lifetime | Wears out (electrolyte dries) | Very long, benign failure |
| Cost per uF | Low | Higher |
| Typical use | Cost-sensitive, low-frequency | SiC/GaN, high ripple, automotive |
Electrolytics give you bulk capacitance cheaply and are fine for modest, low-cost drives. High-performance and high-frequency drives (especially SiC and GaN) use film capacitors: their low ESR carries huge ripple current with little heating, they last far longer, and they fail open rather than shorting. Many real drives use both: a big electrolytic or film bank for bulk energy storage plus small ceramic capacitors right at each half-bridge to handle the nanosecond-scale switching transients.
Rule of thumb: put ceramic decoupling capacitors physically as close to each half-bridge as the layout allows. The loop between the high-side switch, the low-side switch, and the local capacitor (the "commutation loop") should enclose as little area as possible, because its inductance times dI/dt is the voltage overshoot that stresses your switches. Nanohenries here matter.
The three-phase inverter of half-bridges
The inverter is three copies of one circuit: the half-bridge (also called a leg or a phase leg). Understand one and you understand the drive.
A half-bridge is two switches in series across the DC bus, with the midpoint connected to one motor phase. Call them the high-side switch (top, connects the phase to the positive rail) and the low-side switch (bottom, connects the phase to the negative rail). At any instant, exactly one is on:
- High-side on, low-side off: the phase is pulled up to the positive rail (bus voltage).
- Low-side on, high-side off: the phase is pulled down to the negative rail (ground).
By rapidly alternating and varying the fraction of time spent high (the duty cycle), the average voltage on that phase can be set anywhere between 0 and the bus voltage. Do this on all three phases with sinusoidally varying duty cycles 120 degrees apart, and you have synthesized a three-phase voltage source. The motor inductance smooths the chopped output into clean sinusoidal current.
The freewheeling diode and the current-continuity rule
Motor current cannot stop instantly, because inductor current is continuous. When you switch a phase from the top rail to the bottom, the phase current keeps flowing and must find a path. That path is the body diode (or an antiparallel diode) of the opposite switch. This is why every power switch in an inverter has a diode across it: to give the inductive motor current somewhere to go during the switching transition and the dead-time. In a MOSFET the body diode is intrinsic; IGBTs need a separate co-packaged diode; SiC and GaN have their own quirks (GaN has no body diode but conducts in reverse through the channel).
Why exactly six switches
Three phases, two switches each, six switches. That is the standard two-level, three-phase, six-switch voltage-source inverter, and it drives the overwhelming majority of robot motors. Higher power grids and traction sometimes use three-level topologies (more switches, cleaner output, lower per-switch voltage stress) but for robotics the two-level six-switch bridge is the workhorse. Integrated modules pack all six switches, their diodes, and sometimes the gate drivers into one package: an "intelligent power module" (IPM). ODrive, VESC, and mjbots moteus all build around this same six-switch core, differing mostly in device choice, current rating, and firmware.
Switching devices: MOSFET, IGBT, SiC, GaN
The switch is the heart of the drive, and there are four families worth knowing. They differ in the voltage they block, the current they carry, how fast they switch, and how they lose energy.
Silicon MOSFET. The default below about 100 to 200 V. A MOSFET conducts through a resistive channel, so its conduction loss is I squared * R_ds(on), and R_ds(on) is the headline spec. Modern low-voltage MOSFETs have milliohm on-resistances, so a 48 V robot drive at 50 A loses only a few watts per device in conduction. They switch fast, drive easily, and their body diode freewheels. This is what nearly every battery-powered robot drive under 60 V uses.
IGBT (insulated-gate bipolar transistor). The high-voltage, high-current workhorse of industrial drives (400 to 1200+ V). An IGBT conducts with a roughly fixed forward voltage drop (V_ce_sat, often 1.5 to 2.5 V) rather than a resistance, so its conduction loss is V_ce_sat * I, nearly independent of current. That makes IGBTs efficient at very high current where a MOSFET's I squared R would explode, but the fixed drop wastes power at low current, and they switch slowly (a current "tail" at turn-off costs switching energy). IGBTs dominate mains-fed industrial drives and large machines but are rare in low-voltage robotics.
SiC MOSFET (silicon carbide). A wide-bandgap MOSFET that blocks high voltage (650 to 1700 V) with far lower on-resistance and much faster switching than a silicon device of the same rating. SiC lets a high-voltage drive switch at high frequency with low loss, which shrinks the magnetics and the heatsink. It is now standard in EV traction inverters and high-end industrial servo drives, and it is creeping into high-voltage robot actuators. The cost is price and the very fast edges (high dV/dt) that make EMI and gate-drive design harder.
GaN HEMT (gallium nitride). A wide-bandgap device that switches even faster than SiC at lower voltages (typically 100 to 650 V). GaN's near-zero gate charge and reverse-recovery let it run at very high switching frequencies with tiny losses, enabling extremely compact, efficient drives and chargers. It has no body diode (it conducts reverse through the channel with a higher drop, so dead-time hurts more), and it is unforgiving of layout and gate overshoot. GaN shows up in compact drone ESCs, small high-frequency actuators, and onboard chargers.
| Device | Voltage range | Conduction model | Switching speed | Best robotics use |
|---|---|---|---|---|
| Si MOSFET | up to ~200 V | I squared * R_ds(on) | Fast | Battery robot drives, ESCs, most <60 V |
| IGBT | 400 to 1700 V | V_ce_sat * I (fixed drop) | Slow (tail current) | Mains industrial drives, large machines |
| SiC MOSFET | 650 to 1700 V | I squared * R (low) | Very fast | EV traction, high-voltage servo, HV actuators |
| GaN HEMT | 100 to 650 V | I squared * R (very low) | Fastest | Compact high-frequency drives, ESCs, chargers |
Rule of thumb: pick the device by bus voltage first. Below 100 V, a silicon MOSFET is almost always right and cheapest. Above a few hundred volts, the choice is IGBT (cheap, low frequency, high current) versus SiC (expensive, high frequency, low loss). GaN wins where size and switching frequency matter more than absolute power.
Gate drivers and dead-time
A power transistor is voltage-controlled, but switching it fast means shoving charge into its gate capacitance quickly. To turn a MOSFET on in 50 nanoseconds you might need to deliver its gate charge Q_g (tens of nanocoulombs) in that time, which is amps of instantaneous gate current. That is the gate driver's job: translate a logic-level PWM signal into the current pulse that charges and discharges the gate.
The high-side floating-gate problem
The low-side switch is easy: its source sits at ground, so a driver referenced to ground can drive it. The high-side switch is the trouble. Its source is the phase output, which swings from 0 to the bus voltage every switching cycle. To keep the high-side device on, its gate must be held several volts above its source, which means several volts above the bus. Two common solutions:
- Bootstrap. A capacitor is charged from the low-side supply when the phase is low, then floats up to provide gate drive when the phase goes high. Cheap, universal, but the bootstrap cap must be refreshed periodically, so you cannot hold the high side on indefinitely at zero speed without a trickle-charge or a separate supply.
- Isolated supply. A small isolated DC-DC provides a dedicated floating rail for each high-side gate. More expensive, but supports 100 percent duty cycle and cleaner high-voltage isolation. Standard on SiC/high-voltage drives.
Dead-time: the gap that prevents self-destruction
The two switches in a leg must never conduct simultaneously, because that would short the DC bus through both of them, a fault called shoot-through that destroys the devices in microseconds. But switches take finite time to turn off. So the gate driver inserts dead-time: a blanking interval where both switches are commanded off before the other turns on. During dead-time, the freewheeling diode carries the phase current.
Dead-time is mandatory and it costs you. During the blanking gap, the actual phase voltage is set by the current direction (whichever diode conducts) rather than by your command, so the delivered voltage differs from the commanded voltage by an error proportional to the dead-time and the switching frequency. This dead-time distortion is worst at low speed and low current, where the error is a large fraction of the small commanded voltage, and it shows up as torque ripple and current-zero-crossing flat spots. Good FOC firmware measures the current sign and adds a compensating voltage; this is why the power stage and the control loop are genuinely one system.
V_error_per_phase ≈ (t_deadtime * f_sw) * V_bus * sign(I_phase)
t_deadtime = dead-time (typ. 0.3 to 2 us for Si, 50 to 300 ns for GaN/SiC)
f_sw = switching frequency
War story: A team built a direct-drive gimbal joint that hunted and buzzed near zero speed no matter how they tuned the current loop. The culprit was 2 microseconds of conservative dead-time at 40 kHz on a low-inductance motor: at the tiny commanded voltages needed to hold position, the dead-time voltage error swamped the command, and the current crossed zero in ugly steps. Cutting dead-time to 500 ns (the faster gate drive allowed it safely) and enabling dead-time compensation in firmware killed the buzz. The magnetics were fine; the power stage was lying to the controller about the voltage it delivered.
PWM: how a switch becomes a sine
Pulse-width modulation is how a two-state switch produces an analog average. Compare a desired reference voltage against a high-frequency triangular carrier: when the reference exceeds the carrier, the high-side switch is on; otherwise the low-side is on. The fraction of each carrier period spent high (the duty cycle) sets the average phase voltage. The motor inductance is a low-pass filter that turns the chopped voltage into smooth current, provided the switching frequency is high enough that current ripple stays small.
Switching frequency: the central tradeoff
Switching frequency (f_sw) is the knob that trades ripple against loss.
- Higher f_sw means less current ripple (smoother torque, quieter, less iron loss in the motor) and moves the audible whine above hearing. It also means more switching loss, because you pay the switching energy more times per second.
- Lower f_sw means less switching loss and cooler devices, but more current ripple and audible whine.
Typical robot drives run 8 to 40 kHz. Low-inductance motors (high-Kv drone outrunners) need higher f_sw to keep ripple sane; high-inductance industrial motors tolerate lower f_sw. The relationship between motor electrical time constant (tau_e = L / R), f_sw, and current ripple is direct:
delta_I_ripple ≈ (V_bus / L) * (1 / f_sw) * duty*(1-duty)
worst at duty = 0.5
Halve the inductance or halve f_sw and the ripple doubles. This is why a builder swapping a high-inductance motor for a low-inductance one on the same ESC suddenly sees hot devices and rough running: the ripple current climbed and the fix is a higher switching frequency or a series inductor.
Space-vector PWM
Naive sinusoidal PWM wastes about 15 percent of the available bus voltage. Space-vector PWM (SVPWM) treats the three-phase output as a rotating vector and picks the two nearest inverter switching states plus the zero states to synthesize it, injecting a common-mode third harmonic that lets the fundamental phase voltage reach V_bus / sqrt(3) instead of V_bus / 2. That extra headroom (a modulation index up to ~1.15) means more speed from the same battery for free. Nearly every FOC drive uses SVPWM. The details of the modulator live in the motor controllers & FOC guide; what matters for the power stage is that SVPWM sets when each switch turns on and off, and therefore sets the switching-loss count and the DC-link ripple pattern.
Current sensing: shunt vs Hall
FOC regulates phase current, so the drive must measure it accurately and fast. Three approaches, each with a real tradeoff. The feedback devices that measure position are covered in the encoders guide; here we care about current.
Low-side shunt. A small precision resistor (a few milliohms) in series with each low-side switch's source. The voltage across it (V = I * R_shunt) is amplified and sampled. Cheap, accurate, and ground-referenced so no isolation is needed. The catch: the shunt only carries phase current when its low-side switch is on, so you must sample the ADC precisely during that window, which shrinks at high modulation. Two-shunt or three-shunt schemes and careful ADC timing handle this. This is the most common approach in low-cost robot drives.
In-line (in-phase) shunt. The shunt sits in the phase wire itself, so it sees continuous phase current regardless of switching state. That removes the sampling-window problem, but the shunt now floats at the switching node (it swings with the phase voltage), so it needs an isolated or high-common-mode-rejection amplifier that tolerates fast dV/dt. More expensive, more accurate, used in higher-end servo drives.
Hall-effect / magnetoresistive sensor. A galvanically isolated sensor measures the magnetic field around the phase conductor. It sees continuous current, provides isolation for free (important on high-voltage drives), and handles large currents without dissipating power in a shunt. The costs are offset drift with temperature, lower bandwidth, and higher price. Used on high-current and high-voltage drives where a shunt's power dissipation or isolation is a problem.
| Method | Isolation | Continuous reading | Cost | Accuracy | Typical use |
|---|---|---|---|---|---|
| Low-side shunt | No | No (PWM-window only) | Low | High | Low-voltage robot drives, ESCs |
| In-line shunt | Needs isolated amp | Yes | Medium | High | Servo drives, higher-end FOC |
| Hall / MR sensor | Yes (built in) | Yes | Higher | Medium (drift) | High-current, high-voltage drives |
Rule of thumb: for a battery robot under 60 V, low-side shunts with a fast synchronized ADC are the sweet spot. Move to in-line or Hall sensing when you need current at 100 percent modulation, when the bus voltage demands isolation, or when the current is too large to shunt without wasting real power.
Switching vs conduction losses and thermal design
Everything about sizing a drive comes down to two loss mechanisms, and they trade against each other. The thermal management guide covers heatsinks and cooling in depth; here is the loss math that feeds it.
Conduction loss
The power dissipated while a device is fully on and carrying current.
MOSFET: P_cond = I_rms^2 * R_ds(on)
IGBT: P_cond = V_ce_sat * I_avg (+ a small r_ce * I_rms^2 term)
For a MOSFET, conduction loss grows with the square of current, so it dominates at high torque (high current) and low speed. Double the current and quadruple the conduction loss. R_ds(on) also rises with temperature (roughly +0.4 percent per degree C for silicon), so a hot device loses more, which heats it more: watch for that positive feedback. For an IGBT, the fixed forward drop makes conduction loss grow only linearly with current, which is exactly why IGBTs win at very high current.
Switching loss
The energy burned during each on/off transition, when voltage and current briefly overlap. You pay it once per switching event, so it scales with frequency.
P_sw = (E_on + E_off) * f_sw
E_on + E_off ≈ (1/2) * V_bus * I * (t_rise + t_fall) (rough model)
Switching loss grows with bus voltage, current, the device's transition times, and the switching frequency. It dominates at high f_sw and high voltage. This is the entire case for SiC and GaN: their transition times are a fraction of silicon's, so their switching loss is far lower, which lets them run at high frequency and high voltage where a silicon device would cook.
The tradeoff and the thermal chain
Total device loss is P_cond + P_sw. Raising f_sw smooths the current and cuts motor loss but raises inverter switching loss. There is an optimum, usually where the two are comparable. The heatsink is then sized by total loss and the thermal path, exactly like a motor winding:
T_junction = T_ambient + P_total * (R_th,jc + R_th,cs + R_th,sa)
R_th,jc = junction-to-case (device)
R_th,cs = case-to-sink (thermal interface material)
R_th,sa = sink-to-ambient (heatsink + airflow)
Keep the junction below its rating (150 C for silicon, 175 C for SiC) with margin. A drive that "works on the bench" and then thermally shuts down under a sustained stall has hit this limit: the continuous current rating of a drive is a thermal number, the same way a motor's continuous current is, and it depends on the heatsink and airflow you actually give it, not the number on the datasheet.
Rule of thumb: at low speed and high torque, conduction loss dominates, so minimize R_ds(on) (or use an IGBT). At high frequency and high voltage, switching loss dominates, so use fast wide-bandgap devices and slow the gate down only as much as EMI forces you to. Size the heatsink for the worst-case continuous operating point, usually a stall or a low-speed climb, not the peak.
DC-DC conversion and auxiliary rails
A robot has one big battery bus and a handful of small quiet rails: 3.3 V for the MCU, 5 V for sensors and encoders, 12 or 15 V for the gate drivers, sometimes an isolated rail per high-side gate. DC-DC converters make these from the bus.
- Buck (step-down) converter. The universal workhorse: switches the input at high frequency into an inductor and capacitor to produce a lower, regulated voltage efficiently (typically 85 to 95 percent). Every robot has several. It is topologically a half-bridge feeding an LC filter, the same physics as the motor inverter in miniature.
- Boost (step-up). Raises voltage, used where a rail must exceed the sagging battery, or in the front end of some chargers.
- Isolated DC-DC (flyback, push-pull). Provides galvanic isolation for floating gate-drive supplies and for safety separation on high-voltage drives.
- Linear regulators / LDOs. Simple, quiet, but dissipative; used for the final clean rail feeding an ADC reference or an analog front end where switching noise would corrupt current sensing.
The auxiliary rails matter more than their size suggests: a noisy 5 V rail corrupts your current-sense amplifier, and a gate-drive rail that sags under load slows your switching and raises loss. Sequencing matters too. The gate-drive supply must be valid before you enable the PWM, or a half-driven switch can sit in its linear region and burn. Most gate drivers have undervoltage lockout (UVLO) precisely to refuse to switch until their supply is high enough.
Regenerative braking and bus pumping
When a motor decelerates or is back-driven, it becomes a generator: mechanical energy flows back through the inverter into the DC bus. This is regenerative braking, and it is free energy recovery when the battery can take it and a hazard when it cannot.
Where the energy goes
The inverter is inherently bidirectional (the same six switches and diodes carry current either way), so regenerated current flows into the DC link and tries to charge it. If the battery accepts it, you recover energy and extend runtime. But the battery may refuse: it is full, it is cold, or a diode (an ideal-diode ORing FET, a charger, or a protection MOSFET) blocks reverse current. Then the regenerated energy has nowhere to go except into the DC-link capacitors, and the bus voltage climbs.
Energy into bus per stop ≈ (1/2) * J * omega^2 (rotational KE)
DC-link voltage rise : V climbs until absorbed or clamped
Bus pumping and the brake chopper
An unabsorbed regen event pumps the bus: the voltage rises, and if it exceeds the capacitor or switch rating, something fails. Three defenses:
- Brake chopper (dump resistor). A seventh switch that connects a power resistor across the bus when the voltage exceeds a threshold, burning the excess energy as heat. Standard on industrial drives and any drive that must stop a heavy inertia hard. Size the resistor for peak power and average energy.
- Let the battery absorb it. If the pack is not full and the path is bidirectional (no blocking diode), regen simply recharges the battery. This is the elegant answer for mobile robots, and it is why the battery protection path must allow reverse current.
- Limit the deceleration. In firmware, cap the regen current so the bus voltage stays under a ceiling. The robot brakes more gently but never over-volts. Cheap and safe when you control the motion profile.
War story: A warehouse AMR ran flawlessly on the test floor and then tripped an overvoltage fault every time it emergency-stopped from full speed with a full payload and a nearly full battery. The regen energy from the loaded mass had nowhere to go: the battery was at 100 percent and could not accept charge. The fix was a modest brake-chopper resistor plus a firmware regen-current clamp that shaped the deceleration. Nothing was wrong with the motors or the control loop; the energy accounting had simply been ignored. Always ask where the kinetic energy goes when the robot stops.
EMI and the layout that survives it
A motor drive is a deliberate radio transmitter you are trying to keep quiet. EMI (electromagnetic interference) is generated by the fast switching edges rather than the average power. Every transition slews voltage (dV/dt) and current (dI/dt) in nanoseconds, and those slews couple into everything nearby.
The two coupling paths
- Conducted EMI travels on the wires: the DC bus, the phase leads, the ground, the sensor cables. High-frequency ripple and common-mode currents ride the cables and can corrupt your encoder signal or trip a nearby device. Filtered with common-mode chokes, X/Y capacitors, and ferrites; see the wiring and connectors guide for cable and shielding practice.
- Radiated EMI leaves as an electromagnetic field from the fast-switching loops and the phase cables acting as antennas. Controlled by minimizing loop areas, shielding the motor cables, and slowing the edges.
The dV/dt and dI/dt tension
Fast edges cut switching loss (less voltage-current overlap) but generate more EMI and more overshoot. This is the fundamental tension of wide-bandgap devices: SiC and GaN switch faster and lose less, and they radiate more and ring harder. The primary knob is the gate resistor: a larger gate resistor slows the edge, cutting EMI and overshoot at the cost of higher switching loss. You tune it to the slowest edge that meets your EMI budget while keeping loss acceptable.
Common-mode current deserves special mention. The fast common-mode voltage steps at the motor terminals drive a current through the motor's parasitic capacitance to its frame, and if that current returns through the bearings it causes bearing electrical discharge machining (EDM), pitting the races and killing the bearing over months. Long motor cables make it worse. Mitigations: shielded, properly grounded motor cable; a common-mode choke; sometimes an insulated bearing or a shaft grounding ring on large machines.
Rule of thumb: EMI is designed in at layout time and rarely fixed later. Minimize the commutation loop area, keep the current-sense traces short and away from the switching node, single-point ground the analog section, shield the motor cables, and choose the gate resistor for the slowest edge your thermal budget tolerates. A drive that passes on the bench and fails EMC in the product almost always has a big switching loop or an unshielded phase cable.
Selecting and sizing a drive
Put it together into an order of operations. Work from the motor and the mission back to the silicon.
1. Fix the bus voltage
Set by the battery pack (a 6S LiPo is ~22 to 25 V, a 12S ~44 to 50 V) or the rectified mains. Higher voltage means lower current for the same power, which cuts conduction loss by the square and thins the wiring, at the cost of pricier switches and stricter safety. This choice sets the device family: below ~100 V, silicon MOSFET; above a few hundred, IGBT or SiC.
2. Fix the current from torque
The motor's torque demand sets the phase current (I = torque / Kt, from the BLDC guide). Use the continuous RMS current over the duty cycle to size conduction loss and the heatsink, and the peak current to size the device's peak rating and the current-sense range. A drive that must hold a leg against gravity sees its hold current as a continuous thermal load with no duty-cycle relief.
3. Pick the switching frequency
Set by the motor inductance (low L needs high f_sw to control ripple) and the audible-noise target. Higher f_sw smooths current and raises switching loss; find the point where conduction and switching loss are comparable. Typical: 8 to 20 kHz for high-inductance industrial motors, 20 to 60 kHz for low-inductance drone/gimbal motors.
4. Choose the device and compute losses
Pick a device with adequate voltage margin (rated at least 1.5 to 2x the bus to survive regen and switching overshoot) and current margin. Compute P_cond + P_sw at the worst continuous operating point, then size the heatsink so the junction stays under rating with margin.
5. Size the DC-link capacitor
Rated voltage above the peak bus (including regen rise), and rated ripple current above the computed I_cap_ripple_rms. Add local ceramic decoupling at each half-bridge to tame the commutation loop.
6. Choose current sensing and plan regen
Low-side shunts for low-voltage cost-sensitive drives; in-line or Hall for high modulation, high current, or high voltage. Decide where regen energy goes: battery absorption, brake chopper, or firmware clamp.
Worked example
A quadruped leg actuator: 48 V bus, a low-Kv outrunner needing 20 A RMS continuous and 60 A peak, low winding inductance so 40 kHz switching.
- Device. 48 V bus, so a 100 V silicon MOSFET (2x margin) with low R_ds(on), say 3 milliohm.
- Conduction loss per device.
20^2 * 0.003 = 1.2 Wcontinuous per switch, roughly (accounting for duty and diode conduction the phase-leg total is a few watts). Manageable with a small heatsink and airflow. - Switching loss. With ~50 ns transitions at 48 V, 20 A, 40 kHz:
E_sw ≈ 0.5 * 48 * 20 * 50e-9 ≈ 24 uJper event, times 40 kHz ≈ ~1 W per device. Comparable to conduction, so 40 kHz is a reasonable choice; going much higher would make switching loss dominate. - DC-link. Ripple current roughly 0.5 * 20 ≈ 10 A RMS, so a film capacitor rated well above 10 A ripple, plus ceramics at each leg.
- Sensing. Low-side shunts, three-shunt, with dead-time compensation in firmware.
- Regen. The leg back-drives on landing; the 48 V pack is rarely full mid-run, so battery absorption plus a firmware regen-current clamp suffices, no brake resistor.
That is the whole sizing loop: voltage sets the device family, current sets the conduction loss and heatsink, inductance sets the frequency, and the frequency and voltage set the switching loss. The capacitor and sensing follow.
Failure modes and bring-up
Drives fail in a small number of recognizable ways, almost all thermal or transient.
- Shoot-through. Both switches in a leg conduct together (insufficient dead-time, a gate-drive glitch, or a Miller-induced false turn-on from fast dV/dt on the opposite switch). The bus shorts and the devices explode in microseconds. Fix: adequate dead-time, a negative gate-off voltage or a Miller clamp on fast devices, tight gate loops.
- Overvoltage from regen. Covered above: unabsorbed braking energy pumps the bus past the capacitor or switch rating.
- Overcurrent / desaturation. A stalled motor or a short pulls current past the device limit. Fast drives use a hardware overcurrent trip (shunt comparator, or desaturation detection on IGBTs) that shuts the gates in under a microsecond, faster than firmware can react.
- Thermal runaway. Sustained loss drives the junction up, R_ds(on) rises, loss rises, and the device cooks. Almost always an undersized heatsink or a stall the drive was never rated to hold.
- Capacitor wear-out. Electrolytic DC-link caps dry out under ripple-current heating and lose capacitance, letting the bus ring harder until something else fails. The slow, quiet death of cheap drives.
- Gate-drive supply collapse. A sagging or noisy gate rail slows switching, raises loss, and can leave a device in its linear region. UVLO exists to prevent this.
Bring-up discipline saves hardware. Power the drive through a current-limited bench supply first, not the battery, so a wiring error trips the supply instead of the switches. Verify the gate-drive rails and dead-time with a scope before enabling PWM. Spin the motor open-loop at low voltage before closing the current loop. Watch device temperature during the first sustained-torque test. Most first-power failures are a swapped phase, a missing dead-time, or an inverted current-sense sign, all cheap to catch on a bench supply and expensive to catch on the battery.
Frequently asked questions
What actually is a motor drive versus a motor controller? The terms overlap, but the useful split is this: the controller is the brains (the MCU running FOC, computing what voltage each phase needs), and the drive or power stage is the muscle (the inverter, gate drivers, and switches that deliver that voltage as real current). In a small ESC they live on one board; in an industrial cabinet they may be separate. This guide is the power stage; the control algorithm is in the motor controllers & FOC guide.
Why does a robot drive need a big capacitor across the battery? Because the inverter draws current from the bus in sharp high-frequency pulses, and the wire back to the battery has inductance that cannot supply pulses that fast. The DC-link capacitor sources those pulses locally, keeping the bus voltage stiff and preventing the wiring inductance from generating destructive voltage spikes. Size it by its ripple-current rating alongside capacitance and voltage.
When should I use SiC or GaN instead of a silicon MOSFET? Use a silicon MOSFET below about 100 V; it is cheaper and entirely adequate for most battery robots. Reach for GaN when you need very high switching frequency in a compact low-to-mid-voltage drive (small ESCs, chargers). Reach for SiC when the bus is high voltage (400 V and up) and you want low loss at high frequency, as in EV traction and high-end servo. Both switch faster, run cooler, and cost more, and both demand careful layout and EMI control.
What is dead-time and why does it cause torque ripple? Dead-time is a brief interval where both switches in a leg are off, inserted so they never conduct together and short the bus. During that gap the phase voltage is set by the current direction rather than your command, injecting a voltage error proportional to dead-time and switching frequency. At low speed and low current that error is a big fraction of the small commanded voltage, so it distorts the current near its zero crossings and produces torque ripple. FOC firmware compensates by measuring the current sign and adding a correcting voltage.
Conduction loss or switching loss: which dominates? Depends on the operating point. Conduction loss (I squared R for a MOSFET) grows with current and dominates at high torque and low speed. Switching loss (energy per transition times frequency) grows with bus voltage and switching frequency and dominates at high f_sw and high voltage. Size the heatsink for the sum at the worst continuous point, usually a stall or low-speed high-torque climb.
How do I choose the switching frequency? Balance current ripple against switching loss. Low motor inductance and a quiet-noise requirement push you higher (20 to 60 kHz for drone and gimbal motors); high inductance and efficiency push you lower (8 to 20 kHz for industrial motors). Ripple current scales as V_bus divided by inductance and frequency, so a low-inductance motor on too low a frequency runs hot and rough. Pick the frequency where conduction and switching loss are roughly comparable.
Where does regenerative braking energy go? Into the DC bus. If the battery can accept charge (not full, warm, and no blocking diode in the path), you recover it and extend runtime. If it cannot, the energy charges the DC-link capacitors and the bus voltage climbs until a brake-chopper resistor burns it off or a firmware regen-current clamp limits the deceleration. Ignore this and a hard stop with a full battery trips an overvoltage fault or damages the caps.
Why do low-side current shunts only work part of the time? A low-side shunt sits in series with the low-side switch, so it only carries phase current when that switch is on. At high modulation the low-side on-time shrinks, leaving too little window to sample the ADC reliably. Two- and three-shunt schemes with carefully timed sampling handle it up to a point; beyond that, move to in-line shunts or Hall sensors that see continuous phase current regardless of switching state.
Why does higher bus voltage make a drive more efficient? Power is voltage times current, and conduction loss is current squared times resistance. At double the voltage you carry half the current for the same power, cutting I squared R conduction loss by four. That means cooler switches, thinner wires, and higher continuous torque from the same silicon. The tradeoffs are pricier high-voltage devices and stricter safety and isolation requirements, which is why robot drivetrains move up in voltage only as their power demands grow.
What is the most common way a drive fails on first power-up? A wiring or firmware error, not a component defect: a swapped motor phase, a missing or too-short dead-time causing shoot-through, or an inverted current-sense sign that makes the loop drive current the wrong way. Bring the drive up on a current-limited bench supply so these trip the supply instead of exploding the switches, verify gate rails and dead-time on a scope before enabling PWM, and spin open-loop at low voltage first.