MassMind.org H-Bridge DC Motor Driver (New!)

Low cost, high quality 1HP motor driver for brushed DC motors, ideal for use in closed loop servo systems.

Features

This device is designed to control brushed DC motors up to 40 V and 18 A (720 Watts, 0.97 HP) continuous operation. It is ideal for adapting CNC machines such as routers, mills and 3D printers to Servo operation with low cost DC motors. It is pin compatible with the MassMind BOB PID Servo Control. It can also be used as the power stage of a mobile robot., DC-AC inverters, and for driving Peltier modules.

Open Loop Control: For basic open loop control, supply a PWM signal with a duty cycle for the desired speed to the PWM (aka STEP) pin and set the direction on DIR, while enabling the driver with a high value on ENB.

Closed Loop Control: A microcontroller, such as the ATmega328p (Arduino Uno, Arduino Nano, several other Arduino variants), should be present to read the e.g. STEP/DIR signals from the motion controller, read the position encoder e.g. quadrature and perform the calculations required for e.g. PID control of the motor position. The MassMind BOB PID Servo Control is a perfect fit.

Device Characteristics
Parameter Min Typ Max Unit
Motor side voltage 6 36 40 V
Motor side continuous current 18 A
Logic side input voltage 1.8 5 V
PWM frequency 0 100 kHz
Duty cycle 0 100 %
Current limit signal frequency 10 100 kHz
Ambient temperature for operation 0 40 °C
Weight 0.85
(24)
oz
(g)

MOSFET driver

A DRV8701^ full bridge mosfet driver provides the capabilities to drive the MOSFET gates at an appropriate voltage with acceptable switching speed, while also protecting them from being damaged from heating due to insufficient gate voltage, shoot-through, etc.

It also controls an indicator LED for signaling the fault modes the device is able to detect, such as motor overcurrent and driver undervoltage.

Finally, the driver also performs a current limiting function to avoid damaging the transistors. The current level is set via a low pass filtered PWM signal or by a onboard trimpot.

Please note: Catch diodes, FET gate resistor, FET gate zener clamp diodes are NOT needed in this design. The internal diodes of the FETs are fast enough to catch any spikes, switching currents are set by one resistor on the board (not individual resistors for each FET), and the voltage clamps are provided with the gate driver.

MOSFETs in H bridge configuration

The device utilizes four IRFB7546 MOSFETs. These transistors have a breakdown voltage of 60 V and a RDSon of 6.0 mOhm typically (a worst case resistance of 14.1 mOhm at 175 °C Tj) with a Vgs of 10 V.

Current Limiting

Current limiting is accomplished by the driver by turning off the appropriate transistors by a voltage comparator sensing the voltage drop across RSENSE and comparing it to the voltage on LIM pin.

For setting the current limit using the onboard potentiometer one needs to measure the voltage between ground and the wiper pin. Then, one can calculate the current with the following expression:

I = 10[ohm-1]  Vpin - 0.5[A]

or

Vpin = (I + 0.5) / 10

For example, to get the maximum continuous current of 18 A, The wiper pin needs to measure 1.85 V. 18 + 0.5 = 18.5 then divide by 10 = 1.85

Overtemp Protection

The current sensing resistor on the PCB reduces the current applied when the PCB temperature rises, preventing runaway and limiting max current when approaching the top end of capacity. In extreme cases, when extreme currents are applied, the resistor will act as a fuse, cracking and shutting down the unit, protecting the drivers.

PMinMO Connector (Option)

Connector Pin Signal Description
JP1 -Bottom
(all even pins
are ground)
1 ENB Enable
3 DIR Direction
5 PWM PWM signal for motion
7 GND Ground pin for the board.
9 5V Positive supply input for the board. PWM signal for off-board current limit

This connector is a direct match for the output of the BOB PID Servo Controller.

Terminal Block (Option)

1 Enable (nearest power / motor connector)
2 Direction
3 Ground
4 PWM

Assembly

Parts List

Kit
 
 
Part
 
Qty
 
Description

416080
PCB 1 The printed circuit board and all surface mount components. Double sided, plated thru holes, professionally made.
MTR 1 Power and motor screw terminal blocks: Phoenix Contact 1935776 rated 32 amps 13.5mm for up to 12 guage wire. (The more common smaller ones are 17 amps 11.3mm)
PWR 1
C7 1 220 to 470uF axial through hole electrolytic capacitor. Long lead in the square pad
Q1-4 4 IRFB7546 MOSFETs. These must be thermally connected to a heatsink, but electrically isolated from one another.
Mica 4 TO220 mica washer (taped to PCB)
Washer 4 TO220 #4 shoulder washer. bushing/insulator
Bolt 4 #4-40 bolt
JP1 1 Header 0.1" 2 x 5 PMinMO standard but DIR / STP(PWM) swapped. (or use a 0.2" spacing screw terminal)

Steps

1. [ ] Install JP1 shrouded header with the notch towards the inside of the board. (or install a 4 pin screw terminal in the same space)

2. [ ] Install MTR and PWR screw terminals.

3. [ ] Align the board with the heatsink and verify the position of mounting holes and the placement of Q1-4 MOSFETs. Mark, punch, drill, and tap holes for #4-40 bolts into the heatsink.

4. [ ] The power drivers will run across the back of the board, on 0.475" centers, about 0.25" from the back and with the first one centered at 0.280" from the left edge. The 4 power transistors Q1-Q4 MUST be insulated from the heatsink. This means the transistor bodies and metal tabs are NOT electrically connected to the heatsink.

Use the clear Mica insulating washers, these go between the transistor body and the heatsink (see '1' in the diagram above). Use heatsink compound on both sides of the Mica washer, this only requires a tiny smear in the middle (which will squish flat when tightened down).

There is also a plastic insulator "shoulder washer" (see '2' in the diagram) this stops the metal screw touching the metal tab of the transistor. No heatsink compound is required on the screw.

After the transistors are mounted you should check them with a multi-meter (ohm meter or continuity tester) to make sure the transistor tab is NOT CONNECTED to the heatsink. Likewise the transistor tab should NOT be connected to the metal screw.

Once the mechanical mounting is done, solder the MOSFETs to the PCB.

5. [ ] Install C7 long lead in the square hole, and the stripe side towards the round hole. It can be installed all the way down on the PCB for physical stability, or bent over toward the RSENSE resistor, and secured with a bit of hot glue or double back foam.

Mechanically, the PCB is 1.97" wide by 1.57" deep, with mounting holes, as measured from the bottom left corner, at:
  1. 0.11", 0.11"
  2. 1.85", 0.11"
  3. 0.11", 1.45"
  4. 1.85", 1.45"

Installation / Connection

Power: The device comes with two screw terminals. The one marked with the MOTOR-A and MOTOR-B labels should be connected to the two cables for powering your motor. The other terminal, marked V+ and V- should be connected to a power supply of the correct voltage, ensuring the correct polarity of the connection: Ground to V- and the positive supply to V+.

Terminal Block: An 0.2" spacing, 4 position terminal block can be installed for the signal header as an option. In this case, the LIM pin must be patched to ENB so the current limit is provided on board and is adjusted via the trim pot or you can hort the SJ1 jumper (lower left corner of the board, under the current adjust pot) to provide logic power to the current limit (LIM) signal. The signals will be:
 

  1. ENB (nearest power / motor connector) the enable signal for the driver, active high. When the enable signal is present, the PWR LED will light (assuming the motor power supply is already powered). If the enable signal is not present, the PWR LED, and every MOSFET on the board will be turned off.
     
  2. PWM signals the motor to turn or stop, active high. PWM on this signal varies how hard the motor will try to turn. When in low state, the driver brakes the motor through the low side MOSFETs.
     
  3. Ground
     
  4. DIR signals the direction of turn, forward or reverse.
     

PMinMO 2x5 Header: This standard connector accepts signals from our BOB PID controller:

1. ENB the enable signal for the driver, active high. This is NOT the square pad, it's the opposite one. When the enable signal is present, the PWR LED will light (assuming the motor power supply is already powered). If the enable signal is not present, the PWR LED, and every MOSFET on the board will be turned off.

3. DIR signals the direction of turn, forward or reverse.

5. PWM signals the motor to turn or stop, active high. PWM on this signal varies how hard the motor will try to turn. When in low state, the driver brakes the motor through the low side MOSFETs.

7. Ground (all even numbered pins are also ground)

9. LIM / +5 a current limit signal. This is the square pad on the PCB. On the standard PMinMO, this is +5, but the driver get's it's own logic power from motor power. The 5V applied to this pin will instead be use with the onboard trimpot for setting current limit. Or you can implement your own current control by providing your own voltage to this pin. It is possible to use a PWM signal to adjust the current limit, as a low pass filter is present on the board. You can also short the pads of SJ1 on the PCB to provide LIM from the onboard logic power; be aware this will back drive whatever you connect to pin 9 when the driver is enabled.

Operation

Safety Checklist

First Movements

Note that the LED on the board will NOT light, and nothing will move, even when motor power is applied, until the ENB (enable) signal is high.
 

  1. Ensure ENB is low before continuing then apply motor power. Check that there are no arcs, pops, cracks, or fires. The LED should still be off. If the LED comes on, check that ENB is low (0 volts).
     
  2. Supply a direction signal to DIR and PWM at 0 percent duty cycle. i.e. 0 volts DC. Either supply +5 to the LIM pin 9 of the PMinMO connector or short the SJ1 pads if you are using terminal blocks to provide a current limit reference.
     
  3. With PWM off… set ENB high, and check that the motor does not move. The LED should light on the board.
     
  4. Apply a low duty cycle PWM signal and verify that the motor moves making note of the direction.
     
  5. Set PWM off, reverse direction (low to high or high to low) then apply a low duty cycle PWM again and verify the motor moves in the opposite direction.

Adjust Current Limit

To avoid burning out a motor, adjust the onboard current limit system to provide no more power than the motor can manage. The voltage at the current limit test point near the should be set while the unit is running at full speed. Start with the desired maximum wattage and divide by your motor supply voltage to find maximum current. Then use that current to calculate the correct setting using this formula:

Vpin = (I + 0.5) / 10

For example, a 350 watt motor using a 35 volt supply should be limited to 10 Amps maximum current. 10 + 0.5 is 10.5, divided by 10 is 1.05, so the pot should be set to about 1 volt.

Hint: For anything over 10 amps, just set Vpin to the current divided by ten… it's close enough.

Procedure:

  1. Start with the current pot all the way down... Counter Clockwise. Note: on the v1.1 unit the trimpot does not have a stop, and will rotate continuously. The flat spot indicates position, and is at minimum when towards the edge of the board.
     
  2. Apply 100% PWM... The motor should NOT turn at full speed. Connect the ground lead of your multimeter to ground in the terminal block, and the positive lead to the small round pad just above the pot, near "C6".
     
  3. Slowly turn pot up (Clockwise) until voltage is the calculated Vpin. Note: The LIM signal pin 9 on PMinMO connector must be at +5 volts or SJ1 must be shorted to provide the max current limit signal.
     
  4. Shut down PWM.

Heat

Be very careful to monitor the heat of the drivers for at least 20 minutes during normal operation. It can take time for heat to build up, and excess heat can fry the drivers. It's probably a good idea to monitor the motor as well.

See also:

Questions:

Comments: