This discrete MOSFET H-bridge motor driver enables bidirectional control of one high-power DC brushed motor. The small 1.3″ × 0.8″ board supports a wide 6.5 V to 30 V voltage range and is efficient enough to deliver a continuous 25 A without a heat sink. Additional features of this second-generation (G2) driver include reverse-voltage protection along with basic current sensing and current limiting functionality.
The Pololu G2 high-power motor driver is a discrete MOSFET H-bridge designed to drive large brushed DC motors. The H-bridge is made up of one N-channel MOSFET per leg; the rest of the board contains the circuitry to take user inputs and control the MOSFETs. The absolute maximum voltage for this motor driver is 30 V, and higher voltages can permanently destroy the motor driver. Under normal operating conditions, ripple voltage on the supply line can raise the maximum voltage to more than the average or intended voltage, so a safe maximum voltage is approximately 24 V.
Note: Battery voltages can be much higher than nominal voltages when they are charged, so the maximum nominal battery voltage we recommend is 18 V (and use with 24 V batteries is recommended) unless appropriate measures are taken to limit the peak voltage.
The versatility of this driver makes it suitable for a large range of currents and voltages: it can deliver up to 25 A of continuous current with a board size of only 1.3″ × 0.8″ and no required heat sink. The module offers a simple interface that requires as few as two I/O lines while still allowing for your choice of sign-magnitude or locked-antiphase operation. A current sense output gives an indicator of motor current, and the driver can limit the motor current to a configurable threshold. The power supply inputs feature reverse-voltage protection, while integrated detection of various fault conditions helps protect against other common causes of catastrophic failure; however, please note that the board does not include over-temperature protection.
The G2 High-Power Motor Driver 18v25 is a second-generation successor to our original High-Power Motor Driver 18v25. The G2 driver is much smaller than the original, but its interface and output capabilities make it a near drop-in replacement in typical applications. See “Differences from original high-power motor drivers” below for more details.
This version can be distinguished from the 24v21 by the number 150 on top of the tall silver electrolytic capacitors.
- Operating voltage: 6.5 V to 30 V (absolute maximum)
- Output current: 25 A continuous
- Inputs compatible with 1.8 V, 3.3 V, and 5 V logic
- PWM operation up to 100 kHz
- Current sense output proportional to motor current (approx. 10 mV/A; only active while H-bridge is driving)
- Active current limiting (chopping) with default threshold of 60 A (can be adjusted lower)
- Reverse-voltage protection
- Undervoltage shutdown
- Short circuit protection
G2 high-power motor driver versions
There are four versions of the single-channel G2 high-power motor drivers that share compatible pinouts, and four versions of the dual-channel G2 high-power motor drivers that share compatible pinouts. The dual-channel drivers have the form factor of an Arduino shield, but they can also be used with other controllers as general-purpose motor drivers. The following table provides a comparison of the G2 drivers:
|Pololu G2 High-Power Motor Drivers|
|1||G2 High-Power Motor Driver 18v25||30 V||18 V||25 A||60 A|
|G2 High-Power Motor Driver 18v17||17 A||40 A|
|G2 High-Power Motor Driver 24v21||40 V||28 V||21 A||50 A|
|G2 High-Power Motor Driver 24v13||13 A||30 A|
|2||Dual G2 High-Power Motor Driver 18v22 Shield||30 V||18 V||22 A||60 A|
|Dual G2 High-Power Motor Driver 18v18 Shield||18 A||50 A|
|Dual G2 High-Power Motor Driver 24v18 Shield||40 V||28 V||18 A||50 A|
|Dual G2 High-Power Motor Driver 24v14 Shield||14 A||40 A|
Pololu G2 High-Power Motor Driver 24v21 and 24v13.
The dual-channel G2 drivers are also available in the form factor of a Raspberry Pi HAT for easy use with a Raspberry Pi.
Note: As an alternative to these motor drivers, our Simple Motor Controllers have similar power characteristics and offer high-level interfaces (e.g. USB, RC hobby servo pulses, analog voltages, and TTL serial commands) that make them easier to use for some applications.
Using the motor driver
The motor and motor power connections are on one side of the board, and the control connections (1.8 V to 5 V logic) are on the other side. The motor supply should be capable of supplying high current. There are two options for making the high-power connections (VIN, OUTA, OUTB, GND): large holes spaced 5 mm apart, which are compatible with the included terminal blocks, and pairs of 0.1″-spaced holes that can be used with perfboards, breadboards, and 0.1″ connectors.
For good performance, it is very important to install a large capacitor across the motor supply and ground close to the motor driver. We generally recommend using a capacitor of at least a few hundred μF and rated well above the maximum supply voltage; the required capacitance will be greater if the power supply is poor or far (more than about a foot) from the driver, and it will also depend on other factors like motor characteristics and applied PWM frequency. A through-hole capacitor can be installed directly on the board in the holes labeled '+' and '−' (connected to VM and GND, respectively). The driver includes three on-board 150 µF capacitors, which might be sufficient for brief tests and limited low-power operation, but adding a bigger capacitor is strongly recommended for most applications.
Warning: Take proper safety precautions when using high-power electronics. Make sure you know what you are doing when using high voltages or currents! During normal operation, this product can get hot enough to burn you. Take care when handling this product or other components connected to it.
The logic connections are designed to interface with 1.8 V to 5 V systems (5.5 V max). In a typical configuration, only PWM and DIR are required.
|VIN||This is the main 6.5 V to 30 V (absolute max) motor power supply connection.|
|VM||This pin gives you access to the motor power supply after reverse-voltage protection. It can be used to supply reverse-protected power to other components in the system, but it should not be used for high currents. This pin should only be used as an output.|
|+, −||These pads are intended for a power supply capacitor (they are connected to VM and GND, respectively).|
|3V3 (out)||This regulated 3.3 V output provides a few milliamps, which can be useful as a reference or for powering small external circuits. This output should not be connected to other external power supply lines. It is disabled when the driver is in sleep mode. Be careful not to accidentally short this pin to the neighboring VM pin while power is being supplied as doing so will instantly destroy the board!|
|GND||Ground connection for logic and motor power supplies.|
|OUTA||Motor output pin A (connects to one terminal of a DC motor).|
|OUTB||Motor output pin B (connects to the other terminal of a DC motor).|
|PWM||LOW||Pulse width modulation input: a PWM signal on this pin corresponds to a PWM output on the motor outputs.|
|DIR||LOW||Direction input: when DIR is high, current will flow from OUTA to OUTB; when it is low, current will flow from OUTB to OUTA.|
|SLP||HIGH||Inverted sleep input: This pin is pulled high by the driver board, enabling the driver by default; drive SLP low to put the motor driver into a low-power sleep mode.|
|FLT||Fault indicator: This open-drain output is driven low when a fault has occurred. See below for details. In order to use this output, you should externally pull this pin up to your system’s logic voltage.|
|CS||Current sense output: This pin outputs a voltage proportional to the motor current when the H-bridge is driving (but not while it is braking, including when current limiting is active). The output voltage is about 10 mV/A plus a 50 mV offset.|
|VREF||Reference voltage input: An additional resistor can be connected between this pin and GND to lower the current limiting (chopping) threshold. Without an additional resistor, the current limit defaults to about 60 A. See below for details.|
Motor control options
With the PWM pin held low, both motor outputs will be held low (a brake operation). With PWM high, the motor outputs will be driven according to the DIR input. This allows two modes of operation: sign-magnitude, in which the PWM duty cycle controls the speed of the motor and DIR controls the direction, and locked-antiphase, in which a pulse-width-modulated signal is applied to the DIR pin with PWM held high.
In locked-antiphase operation, a low duty cycle drives the motor in one direction, and a high duty cycle drives the motor in the other direction; a 50% duty cycle turns the motor off. A successful locked-antiphase implementation depends on the motor inductance and switching frequency smoothing out the current (e.g. making the current zero in the 50% duty cycle case), so a high PWM frequency might be required.
|Motor Driver Truth Table|
The motor driver supports PWM frequencies as high as 100 kHz, but note that switching losses in the driver will be proportional to the PWM frequency. Typically, around 20 kHz is a good choice for sign-magnitude operation since it is high enough to be ultrasonic, which results in quieter operation.
A pulse on the PWM pin must be high for a minimum duration of approximately 0.5 µs before the outputs turn on for the corresponding duration (any shorter input pulse does not produce a change on the outputs), so low duty cycles become unavailable at high frequencies. For example, at 100 kHz, the pulse period is 10 µs, and the minimum non-zero duty cycle achievable is 0.5/10, or 5%.
Current sensing and limiting
The driver’s current sense pin, CS, outputs a voltage proportional to the motor current while the H-bridge is driving. The output voltage is about 10 mV/A plus a small offset, which is typically about 50 mV.
The CS output is ; it is inactive (low) when the driver is in brake mode (slow decay), which happens when the PWM input is low or when current limiting is active. Current will continue to circulate through the motor when the driver begins braking, but the voltage on the CS pin will not accurately reflect the motor current in brake mode. The CS voltage is used internally by the motor driver, so to avoid interfering with the driver’s operation, you should add a capacitor to this pin or connect a load that draws more than a few mA from it.
The G2 driver has the ability to limit the motor current through current chopping: once the motor drive current reaches a set threshold, the driver goes into brake mode (slow decay) for about 25 µs before applying power to drive the motor again. This makes it more practical to use the driver with a motor that might only draw a few amps while running but can draw many times that amount (tens of amps) when starting.
The current limiting threshold is nominally set to about 60 A by default. You can lower the limit by connecting an additional resistor between the VREF pin and the adjacent GND pin; the graph below shows how the current limit relates to the VREF resistor value. For example, adding a 100 kΩ resistor between VREF and GND lowers the current limit to approximately 41 A. Note that the current limiting threshold is not highly precise (we have seen some units limit the current as low as about 50 A when the threshold is set to the board’s default of 60 A), and it is less accurate at especially low settings (indicated by the dashed portion of the curve).
The motor driver can detect several fault states that it reports by driving the FLT pin low; this is an open-drain output that should be pulled up to your system’s logic voltage. The detectable faults include short circuits on the outputs, under-voltage, and over-temperature. All of the faults disable the motor outputs but are not latched, meaning the driver will attempt to resume operation when the fault condition is removed (or after a delay of a few milliseconds in the case of the short circuit fault). The over-temperature fault provides a weak indication of the board being too hot, but it does not directly indicate the temperature of the MOSFETs, which are usually the first components to overheat, so you should count on this fault to prevent damage from over-temperature conditions.
Real-world power dissipation considerations
The MOSFETs can handle large current spikes for short durations (e.g. 100 A for a few milliseconds), and the driver’s current chopping will keep the average current under the set limit. The peak ratings are for quick transients (e.g. when a motor is first turned on), and the continuous rating of 25 A is dependent on various conditions, such as the ambient temperature. PWMing the motor will introduce additional heating proportional to the frequency. The actual current you can deliver will depend on how well you can keep the motor driver cool. The driver’s printed circuit board is designed to draw heat out of the MOSFETs, but performance can be improved by adding a heat sink.
Warning: This motor driver has no over-temperature shut-off. An over-temperature or over-current condition can cause permanent damage to the motor driver. You might consider using either the driver’s integrated current sense output or an external current sensor to monitor your current draw.
Two 8-pin straight breakaway male headers and two 2-pin 5mm terminal blocks are included with each motor driver. You can solder the terminal blocks to the four large through-holes to make your motor and motor power connections, or you can solder one of the 1×8 0.1″ header strips into the smaller through-holes that border these larger holes. Note, however, that the terminal blocks are only rated for 16 A, and each header pin pair is only rated for a combined 6 A, so for higher-power applications, thick wires should be soldered directly to the board.
The other 1×8 header strip can be soldered into the small holes on the logic connection side of the board to enable use with solderless breadboards, perfboards, or 0.1″ connectors, or you can solder wires directly to these holes for the most compact installation.
Note: In most applications, it is necessary to connect an additional large capacitor (not included) across the power supply, as described under “Connections” above.
The board has two 0.086″ (2.18 mm) diameter mounting holes intended for #2 or M2 screws (not included); they are separated by 0.62″ (15.75 mm) both horizontally and vertically.
Differences from original high-power motor drivers
Pololu G2 High-Power Motor Driver 24v21 next to original high-power motor driver 24v20 and 24v23 CS.
The G2 high-power motor driver is designed to work as a near drop-in replacement for our original high-power motor drivers; this version, the 18v25, is comparable to the original 18v25 and can provide about the same amount of current in most situations. The board width and the arrangement of the required pins are the same for both versions, but the G2 18v25 is smaller in size, matching the board dimensions of the original 18v15 as well as the lower-power G2 drivers (18v17 and 24v13).
This second-generation driver adds new features including reverse-voltage protection on the power supply inputs and basic current sensing and current limiting functionality. It also works with lower logic voltages, making it compatible with 3.3 V systems; however, note that it has a slightly higher minimum motor supply voltage than the original HPMD (6.5 V vs. 5.5 V).
The pinout of the G2 driver differs from the original in several ways:
- The G2 driver has only one fault pin, which is an open-drain output that is driven low when a fault occurs. (The original driver had two fault pins that were driven high to indicate faults.)
- A current sense output is available on the G2 driver in place of the second fault pin.
- A new VREF pin and adjacent GND pin let you connect a resistor to adjust the G2 driver’s current limit.
- The G2 driver provides a 3.3 V output instead of the original driver’s 5 V output.
Note that unlike the G2 High-Power Motor Driver 18v17 and 24v13, the 18v25 driver includes a circuit to pull the SLP pin high to enable the driver by default. This makes it more similar to the original high-power motor drivers, whose corresponding RESET pin could similarly be left disconnected if unused.
We Also Recommend
Adafruit DC Motor & Stepper Motor HAT for Raspberry Pi
Adafruit Motor/Stepper/Servo Shield for Arduino (v2.3)