Introduction: Designing a Dual 40A PWM Speed Controller for Brushed Motors

Picture of Designing a Dual 40A PWM Speed Controller for Brushed Motors

This is a step-by-step Instructable of how I designed a Dual 40A PWM Speed Controller for two brushed electric motors.

Please note that this was my first H-Bridge that I have build, and the design might not be ideal. I would love to hear from more experienced persons where I made errors and/or omissions.

If you like this Instructable, please vote for me in the Circuits Contest.


Thank you all for the positive remarks and assistance received. I have updated the Instructable, and added some calculations regarding the MOSFET switching voltages and driving transistors. See Step 7 & 8.

Some of the changes made due to user's comments are:

  • Faster MOSFET turn-off times (reducing R1 - R4 values)
  • Gate voltage reduced from 24V to around 16V (introduced a voltage divider on Gate of MOSFETs)
  • Recalculation of MOSFET switching resistors (Step 7 & 8 added for more clarity)
  • Additional control signal protection (can no longer switch between FORWARD & REVERSE without first turning of the H-Bridge outputs. This is done in the PIC 12F675, and new firmware was added under step 15.)

Step 1: Basic Design of the H-Bridge

Picture of Basic Design of the H-Bridge

The H-Bridge will be a high current bridge, thus the design will be done using MOSFET transistors.
The bridge consists of four transistors, Q1 - Q4.

Q1 and Q3 forms the positive leg of the bridge and are P-channel MOSFETs. To turn on Q1 or Q3, the Gate voltage must be about 10V lower than the Source voltage, which is connected to +24V.

Q2 and Q4 forms the negative leg of the bridge and areN-channel MOSFETs. To turn on Q2 or Q4, the Gate voltage must be about 10V higher than the Source voltage, which is connected to 0V.

Switching on Q1 and Q4 with Q2 and Q3 turned off, will cause current to flow through then, and apply +24V to terminal M1, and 0V to terminal M2. The motor will turn forwards.

To change the direction of the motor, Turn off Q1 and Q4, and switch on Q2 and Q3. +24V is now applied to terminal M2, and 0V to terminal M1. The motor will now turn in the opposite direction.

Step 2: Adding Back-EMF Protection

Picture of Adding Back-EMF Protection

It is always a good idea to protect the H-Bridge from back-EMF using fly-back diodes. Some MOSFET transistors already have build-in diodes, but the best design will also include additional fly-back diodes.

Diodes D1 - D4 are placed across the Drain-Source of the MOSFET transistors to protect them from back-EMF. Fast switching diodes are required, and should be either fast recovery or schottky diodes.

Step 3: Making the H-Bridge Failsafe

Picture of Making the H-Bridge Failsafe

Resistors R1 to R4 are used to force all the MOSFET transistors off. With no input to the Gate of the MOSFET, these resistors will ensure that they do not switch on. As the MOSFET is a voltage controlled transistor, no Gate current is needed. For the design, I opted for 1K resistors. The smaller this resistors, the faster the MOSFETs can switch on and off. Switching time is a determined by the charging time of the Gate capacitance. Thus, the smaller the resistor, the faster the switching time.

R1 and R3 pulls the Gate of Q1 and Q3 to +24V, turning them off.

R2 and R4 pulls the Gate of Q2 and Q4 to 0V, turning them off.

Now, with no control signals connected to the H-Bridge , or in the event that connections to the H-Bridge are compromised, the relevant MOSFET will be turned off.

Step 4: Add Noise Suppression

Picture of Add Noise Suppression

Capacitor C1 can be placed across the motor terminals M1 and M2. Some motors already have a capacitor connected on the motor itself.

C1 does two things. First, it suppresses noise caused by the motor, and secondly, limit the rate of change of the voltage (Dv/Dt) across the motor terminals.

Step 5: Identify High Current Paths

Picture of Identify High Current Paths

The next step in the design is to identify the paths where high motor current will flow. This will assist later in the design of the PC Board.

Connections to these paths must be made as short and thick as possible to reduce heat caused by the motor current. It will also identify the components which should be placed as close as possible to each other.

Identified components are:

  • Q1 to Q4
  • D1 to D4
  • Supply terminals (+24V and 0V)
  • Motor terminals (M1 and M2)

Step 6: Selecting H-Bridge Components

Picture of Selecting H-Bridge Components

The component selection depends on the supply voltage and load current of the motor that will be connected to the H-Bridge. Specifications for this design are as follow:

  • Motor voltage: 24V DC
  • Motor type: Brushed motor
  • Motor control: PWM speed control
  • Motor current: 5 to 20A

H-Bridge Specification

  • 24V Supply voltage
  • 100A Peak current
  • 20A continuous current

With only a limited number of components to choose from, I decided on the following:

  • P-Channel, SUP65P06
  • N-Channel, IRF3710
  • Schottkey Diode, 1N5822

The MOSFETs were chosen on their nominal current ratings, and the lowest Rds.

With this component selection, the H-Bridge will be able to switch up to 40 amps, as long as the MOSFET temperature can be kept below 100°C.

Step 7: Switching the MOSFETS

Picture of Switching the MOSFETS


N-Channel Ratings

Pmosfet max = 200W

Rds = 23mΩ

Vsd max = 20V

P-Channel Ratings

Pmosfet max = 250W

Rds = 33mΩ

Vds max = 20V


Vload = 24V

Iload max = 40A

Iload avg = 20A

First, calculate power requirements of the MOSFETs


Pmosfet max = Imax² x Rds

= 40² x 23mΩ

= 36.8W


Pmosfet max = Imax² x Rds

= 40² x 33mΩ

= 52.8W

Load will not exceed power rating of the MOSFETs.

NOTE ! ! !

The MOSFETs will need additional cooling, as their power ratings are at 25°C.

Driving Voltage

Next, calculate the required Vds driving voltage. To ensure the lowest Rds, the gate voltage should be as high as possible. Both MOSFETs are rated for a maximum Vds of 20V. This should not be exceeded.

Too low a gate voltage will increase the Rds. From the Transfer Characteristics, both MOSFETS are turned on correctly with a gate voltage of at least 8V.

As the H-Bridge will be used on a 24V battery system, we need to take into account the maximum and minimum battery voltage. Fully charged, the voltage can be around 30V. The low battery warning operates at 20V, which will be the lowest voltage the H-Bridge will normally operate at. For safety, I will use 18V.

Vmax = 30V

Vmin = 18V

Resistors R1 – R4

To ensure fast switch-on and switch-off times of the MOSFETs, the input impedance of the gate must be as low as possible. I have chosen these resistors as 1KΩ. This low resistance will ensure that the MOSFETS are turned off hard and fast.

Calculate the voltage divider resistance values (R1 – 4, and R27 – R30)

Vout = Vin x (R1/(R1 + R27))


R27 = (Vin X R1) / Vout - R1

10V = 18V x (1K/(1K + R27))

R27 = 800Ω

Use = 820R

With R27 = 820R, at Vbatt = 18V

Vgs = 18V x (1k/(1K + 820R))

= 9.89V

With Rx = 820R, at Vbatt = 30V

Vgs = 30V x (1k/(1K + 820R))

= 16.48V

In both cases, Vds is above 8V and below 20V, and should ensure the lowest Rds for any voltage between 18V and 30V.

Step 8: Interfacing Between 5V and the MOSFETs

Picture of Interfacing Between 5V and the MOSFETs


To interface this leg to 5V, transistor Q5 is used. Current Ice is calculated as follow:

Use Vbatt of 30V (worst case)

Ice = Vsupply / (R1 + R27)

= 30V / (1K + 820R)

= 16mA

Typical transistors have a gain of between 50 .. 100. Lets use Hfe = 50 (worst case)

Now, current needed into base of Q5 is calculated as follow:

Ibe = Ice / Hfe

= 16mA / 50

= 0.3mA minimum base current.

To calculate R5, I used nominal base current of 1mA to drive Q5. For 5V control, the voltage across R5 will be

5V - 0.7V, or 4.3V.

R5 = V / I

= 4.3 / 1mA

= 4300 ohm.

I opted for 2K2, thus ensuring Q5 is turned on fully.

To interface this leg to 5V, transistor Q6 is used. Current Ia is calculated as follow:

Use Vbatt of 30V (worst case)

Ia = Vsupply / (R1 + R27)

= 30V / (1K + 820R) = 16mA

Typical transistors have a gain of between 50 .. 100. Lets use Hfe = 50 (worst case)

Now, current needed into base of Q6 is calculated as follow:

Ib = Ia / Hfe = 16mA / 50 = 0.3mA minimum base current.

To calculate R8, I used nominal base current of 1mA to drive Q6 via Q7.

R8 = V / I

= 30 / 1mA

= 30K

I opted for 10Kohm.

Q7 will also be switched using 5V. Again, I opted for 1mA base current into Q7.

For 5V control, the voltage across R9 will be

5V - 0.7V, or 4.3V.

R5 = V / I

= 4.3 / 1mA

= 4300 ohm.

I opted for 2K2, thus ensuring Q7 is turned on fully.

Step 9: Controlling the Positive Leg of the H-Bridge

Picture of Controlling the Positive Leg of the H-Bridge

Resistor R1 keeps Q1 Gate at +24V. To turn on Q1, the Gate voltage should be 10V less than the Source voltage (+24V). This is done using transistor Q5. When Q5 is turned on via R5, the Gate voltaqe of Q1 is pulled to 0V, turning on Q1. Resistor R6 ensures that Q5 is kept off without a signal on point A.

Similar, resistor R3 keeps Q3 Gate at +24V. To turn on Q3, the Gate voltage should be 10V less than the Source voltage (+24V). This is done using transistor Q9. When Q9 is turned on via R14, the Gate voltaqe of Q3 is pulled to 0V, turning on Q3. Resistor R13 ensures Q9 is kept off without a signal on point C.

Step 10: Controlling the Negative Leg of the H-Bridge

Picture of Controlling the Negative Leg of the H-Bridge

With Q7 turned off, the base of Q6 is pulled to +24V via R7. This ensures Q6 stays turned off. The Gate of Q2 is pulled low by R2, turning off Q2. When Q7 is turned on via R9, the base of Q6 is pulled low, and Q6 turns on. +24V is now applied to the Gate of Q2, turning Q2 on. Resistor R10 ensures that Q7 is kept off without a signal on point B.

Similar, with Q11 turned off, the base of Q10 is pulled to +24V via R15. This ensures Q10 stays turned off. The Gate of Q3 is pulled low by R4, turning off Q3. When Q11 is turned on via R17, the base of Q10 is pulled low, and Q10 turns on. +24V is now applied to the Gate of Q3, turning Q3 on. Resistor R19 ensures that Q11 is kept off without a signal on point D.

Step 11: Adding Pulse With Modulation (PWM) Control

Picture of Adding Pulse With Modulation (PWM) Control

Q8 is added in series with Q7 to control the switching of Q2. Now, Q7 and Q8 needs to be turned on before Q6 and Q2 can be turned on. The PWM signal is fed in to Q8 via R11. Resistor R12 ensures that Q8 is kept off without a signal on the PWM line.

Similar, Q12 is added in series with Q11 to control the switching of Q4. Now, Q11 and Q12 needs to be turned on before Q10 and Q4 can be turned on. The PWM signal is fed in to Q12 via R18. Resistor R20 ensures that Q12 is kept off without a signal on the PWM line.

Step 12: Configure the H-Bridge

Picture of Configure the H-Bridge

All that is left to do, is to connect the different legs of the H-Bridge together.

Point A is connected to point D. Now, applying a 5V signal to FORWARD will turn on Q1 and Q4. +24V will be present on motor terminal M1, and 0V on terminal M2. The motor will spin in one direction, lets call it forward.

Point B is connected to point C. Now, applying a 5V signal to REVERSE will turn on Q2 and Q3. +24V will be present on motor terminal M2, and 0V on terminal M1. The motor will spin in the opposite direction, lets call it reverse.

A single PWM signal will be used on the H-Bridge. Thus, both PWM signals are connected together.

This completes the design of the H-Bridge. The following control signals are now present:

  • PWM

Step 13: Interfacing With a Microcontroller

Picture of Interfacing With a Microcontroller

There were two options to choose from, each with it's own advantages/disadvantages. For both options, the PWM signal will be the same.


With this option, there are two lines controlling the direction of the motor, FORWARD and REVERSE.


  • A change of state in a single control signal can not change the direction of the motor.
  • When the FORWARD and REVERSE control signals are both LOW, all four MOSFETs are turned off. No supply will be present on the motor terminals.
  • With FORWARD and REVERSE signals LOW, standby current is reduced, as all the driving transistors for the MOSFETs are switched off.


  • Controller requires three pins from the uC.
  • The H-Bridge can be damaged if both FORWARD and REVERSE control signals are HIGH at the same time. Additional circuitry is needed to prevent this condition.



  • Controller only requires 2 pins from the uC.
  • Single control signal to determine motor direction.
  • Incorrect FORWARD/REVERSE control signals can not cause any damage to the H-Bridge.


  • Either Q1 or Q3 will always be turned on, depending of the status of the DIRECTION control signal.
  • Increased standby current, as either Q1 or Q3 will always be turned on.
  • There will always be 24V present on one of the motor terminals, even with no PWM signal.

I have decided to go with OPTION 1 in the rest of the design.

Step 14: Add H-Bridge Input Protection

Picture of Add H-Bridge Input Protection

With the H-Bridge completed, we need to look at what can go wrong when using the H-Bridge.

There is one condition that will totally destroy the H-Bridge. This will occur when 5V is applied to the FORWARD, REVERSE and PWM signals at the same time. The FORWARD signal will turn on Q1 and Q4, and the REVERSE signal will turn on Q2 and Q3. With Q1 and Q2 turned on, or Q3 and Q4 turned on, we create a dead short across the supply side of the H-Bridge. Short-circuit current will flow through the H-Bridge, most likely destroying the MOSFETs, as well as all wiring associated with the H-Bridge.

To protect against this condition, a PIC 12F675 is added to the control signals. The PIC is programmed to prevent both FORWARD and REVERSE sided of the H-Bridge to be turned on at the same time.

Additionally, to change the motor direction, both FORWARD and REVERSE inputs must be LOW for at least 20ms. This will prevent the H-Bridge to be switched between FORWARD and REVERSE too fast.

The FWD signal is fed into the 12F675 via R23. Resistor R25 ensures that the input to the 12F675 is pulled low without a signal present on the FWD point.

Similar, the REV signal is fed into the 12F675 via R24. Resistor R26 ensures that the input to the 12F675 is pulled low without a signal present on the REV point.

The PWM signal is not used in the protection circuit.

To keep the idling current of the H-Bridge as low as possible, the +5V needed for the 12F675 must be supplied from the device controlling the H-Bridge. Capacitor C2 and C3 are used to filter out any noise on the +5V supply.

Step 15: Adding H-Bridge Cooling Fan Control

Picture of Adding H-Bridge Cooling Fan Control

A LM35 temperature sensor is added to the PIC 12F675 to measure the temperature of the MOSFET heatsinks. The output of theLM35 is measured by the 12F675, and will turn on the COOLING line of the temperature exceeds 50°C. The COOLING line will be turned off once the temperature is below 40°C again. The cooling fans are controlled by Q13 connected in a open collector configuration. Q13 is controlled by the COOLING signal via resistor R22. Resistor R21 ensures that the base of Q13 is pulled low without a signal present on the COOLING signal.

Because the H-Bridge will be used on a 24V battery system, 12V is unavailable for the fans. Obtaining 24V fans is much more difficult and expensive when compared to 12V fans. To overcome this shortcoming, a small DC/DC converter is used to convert the 24V to 12V. Supply to the DC/DC converter and cooling fan is controlled by Q13, and will not use any current when switched off.

! ! ! NOTE ! !
Before connecting the cooling fans, adjust the output of the DC/DC converter to the correct output voltage. In my case, I used two 12V fans.

Step 16: Adding H-Bridge Temperature Protection

Picture of Adding H-Bridge Temperature Protection

Temperasture protection was added to the 12F675 to prevent the H-Bridge from exceeding the rated temperature of the MOSFETs. This protection uses the same LM35 as for the cooling fan control.

When the temperature of the H-Bridge reaches 90°C, the FORWARD and REVERSE control signal to the H-Bridge is blocked, and the H-Bridge turns off. The temperature has to fall below 60°C for the H-Bridge to turn on again.

The temperature protection works independent from the cooling fan.

! ! ! UPDATE ! ! !

After testing, I made some slight changes to the temperature protection. The new ASM and HEX files are included.

  • H-Bridge will now turn of at 80 Degreec C
  • H-Bridge will only reset at 40 Degrees C
  • Forward/Reverse inputs must also both be pulled low to reset the H-Bridge

Step 17: Driver PC Board

Picture of Driver PC Board

The design is for a dual H-Bridge, and the PC Boards were made to contain both H-Bridges. The design was split into 2 boards:

  • Driver Board
  • MOSFET Board

The first board is the Driver board.

The PCB is a standard through-hole board, with no special components needed.

! ! ! NOTE ! !
Before connecting the cooling fans, adjust the output of the DC/DC converter to the correct output voltage. In my case, I used two 12V fans.

Step 18: MOSFET PC Board

Picture of MOSFET PC Board

Again, the PC Board contain both H-Bridges.

The second board is the MOSFET board. The PCB is a standard through-hole board,

After all components are soldered, and the heatsinks fitted, the surface of the current carrying tracks needs to be increased. Before tinting the tracks, I laid lengths of 1.5mm solder wick onto the tracks as close to the connections as possible. This should reduce the chances of the tracks burning off during normal operation of the H-Bridge.

! ! ! NOTE ! !

The 820R resistors must be soldered on the solder side of the PC Board to allow the heatsink to be mounted on the component side of the PC Board.. The design does make provision to replace these resistors with 1206 SMD resistors if required.

Step 19: MOSFET Heatsinks

Picture of MOSFET Heatsinks

The MOSFETS are all mounted on top of a 100 x 40 x 5 mm aluminium heat sink that fits onto the PC Board. Each MOSFET is further fitted with an additional 13 x 19 mm finned heatsink. Thermal paste must be applied to all heat conducting areas. See drawing for detailed mounting method.

Step 20: MOSFET Cooling Fans

Picture of MOSFET Cooling Fans

The cooling fans, one for each H-Bridge, is mounted on top of the heatsinks using 4mm bolts and nuts. The direction of the fans are such that the hot air is extracted from the heatsink, and blown into the atmosphere. Cool air is then sucked into the housing of the H-Bridge via separate ventilation holes.

Step 21: Motor and Battery Connections

Picture of Motor and Battery Connections

All the battery and motor wires from the H-Bridge should be done using at least 4mm² silicone wire. Due to the high currents present, the PC Board does not have terminal blocks for the connections. The wiring should be soldered directly onto the PC Board. Remember to keep all wiring as short as possible

Step 22: Final Testing

Picture of Final Testing

After assembly, the speed controller was bench tested to make sure everything was working correctly. All recordings were taken with the speed controller connected to a dummy load of 8 Ohm.

I had the following limitations in conducting prolonged load testing:

  • Maximum current available from bench power supply is 3 Amps at 24V.
  • Load testing was limited to 24V x 3A, or 72 Watt.
  • The dummy load was made up of 20 x 1 Watt resistors in parallel. I could not test the system with an inductive load.
  • Power dissipation through the load resistor was limited to 20 Watt. Load resistor had to be submersed in water to prevent overheating.
  • Heat of the bench power supply had to be monitored. This was the limiting factor during testing.
  • Continuous load current of 3 Amp could only be maintained for 30 minutes.

No problems were detected during the bench tests. At 75 Watt load, no temperature increase could be detected on the heat sinks of the MOSFETs.

Step 23: Installation Into My Project

Picture of Installation Into My Project

The final step was the installation of the speed controller into an existing Electric Wheelchair Controller. Refer to one of my previous Instructables:

Electric Wheelchair Controller

Apart from the following minor software issues on the Electric Wheelchair Controller, this speed controller was installed successfully into the electric wheelchair:

  • Left and Right motor signals had to be swapped in software. It was easier to do this in software compared to changing the control signal wiring between the speed controller and the Electric Wheelchair Controller.
  • Forward and Reverse control signals had to be changed in the Electric Wheelchair Controller to be compatible with this speed controller.
  • Motor direction was wrong, and had to be changed in the Electric Wheelchair Controller. Again, it was easier to do this in software compared to swapping the motor wiring on the speed controller.

XT60 and DEAN plugs were used to connect the fully assembled Electric Wheelchair Controller to the existing wiring of the wheelchair. The battery and motor wiring connections were made using XT60 plugs. These plugs are rated for 60A. The electromechanical motor brake connections were made using DEAN plugs. This ensured that the wiring can not be connected incorrectly. The plugs also makes it possible to remove the controller with the least amount of effort.

Step 24: Final Words and Credits

Picture of Final Words and Credits

This concludes the design and installation of my Dual 40A PWM Speed Controller for Brushed Motors.

Thanks to all the viewers, and the positive comments received on this Instructable. I definitely gained valuable knowledge on the following:

  • MOSFET switching
  • H-Bridge operation
  • Pulse With Modulation (PWM)
  • DC motor control

A special thanks to the following contributors:

I hope you enjoyed this Instructable.


Eric Brouwer

Step 25: Death of the Wheelchair Project

Picture of Death of the Wheelchair Project

During the final setup of the wheelchair, one of the speed controller channels failed with a big bang. The power MOSFETs actually exploded, leaving only the tap and three leads.

The motor was suspected, and removed from the wheelchair. I removed the electromechanical brake from the motor, as well as the reduction gearbox. The motor was connected directly to the 24V batteries, and current measurements taken........ Starting current exceeded my measuring equipment's 200A scale. After 1 second, current dropped down to 39A. At the same time, smoke was coming out of the motor.

On opening the motor, it was discovered that the seal between the motor and gearbox failed, as the motor was 1/3 full of grease. The grease had a consistency of dried peanut butter. After the motor was cleaned, it was again tested. Tests confirmed that the motor windings had failed, and the motor needs to be replaced.

The faulty MOSFETs were replaced, and the channel tested correct on the healthy motor.

After spending a lot of time and money to get the wheelchair running again, a decision was taken to finally give up on this project.


umursengul (author)2017-04-26

After seeing this project I decided to build my own but based on a different microcontroller and different MOSFETs. You can find the hardware design files here:

Still designing the controller circuit.

But thank you for this amazing Instructable. This really clears a few points I have been stuck on. Thanks!

Eric Brouwer (author)umursengul2017-05-03

Thanks for your feedback. Glad my Instructable could help.
The MOSFETs are not critical, my design was based on what components I could source locally.
Good luck with your design.

CelioS (author)2017-01-24

Very good instructable, very clear, its a powerfull inspiration for a newbie like me. Thanks a lot, please keep sharing your knowledge!

Eric Brouwer (author)CelioS2017-01-24

Thank you very much.

bjkayani (author)2016-11-25

Amazing work you have done here. I am inspired. This is what instructables is all about. I was recently planning to built a motor controller and this will serve as a great help. Some things you could look into is replacing the pic with a logic gate ic since programming a mc is a troublesome job. Further more you should add some beefy electrolytic caps to Vin to suppress noise on the power line. Regardless. Great project. Cheers and good luck

Eric Brouwer (author)bjkayani2016-11-26

Thanks for your great feedback.

I was limited with space, and thus used the PIC for the logic control and temperature measuring/protection.

I agree that I should have added the beefy caps to the 24V supply. Again, space was a problem on the PC board. But the unit was used on a 24V battery pack (24V 40Ah), and worked fine.

I hope you will get your motor controller up and running soon.

JohnC430 (author)2016-10-24

I'm glad you finished. Congratulations!! I need an explanation about Step 22. the scope waveform shows a positive going waveform "Full ON" and then at 50% on a series of pulses in the positive and then another series going negative. what were your measuring points? where did you attach the scope ground?

Eric Brouwer (author)JohnC4302016-10-25

Thanks. It was a LOT of work, but I enjoyed it.
All recordings were taken across the motor terminals M1 and M2 with a recorder. Recorder inputs are isolated, thus does not have a ground terminal. The recordings shows the actual output waveform of the H-Bridge going to the motor.

JohnC430 (author)Eric Brouwer2016-10-25

Thanks. The output waveform of "Modified sine wave" inverters is like that and I wondered how you did it. I know it must be easy but I'm still trying to figure out how to do it.
Have you tested it yet on the motors using batteries?

Eric Brouwer (author)JohnC4302016-10-27

I used an Arduino to control the speed controller signals. In the wavefore, the controller was just switched between Off/Forward/Reverse.

Yes, the system was installed into the wheelchair. See step 23.

Unfortunately, while I was still busy with the final testing and parameter programming of the wheelchair, one of the motors failed mechanically. I must still investigate is it's the gearbox or electromechanical brake on the motor.

Unfortunately, the wheelchair project was scrapped after it was determined that one of the motor's windings had failed.

See Step 25 :( :( :(

The good news is that the speed controller worked correct. However, if I find another use for it, I will install additional fuses between the speed controller and motor to protect the H-Bridge in the event that a motor fails again.

Sorry, I forgot to add the code

nqtronix (author)2016-10-27

+1 for going through the trouble to update all schematics and for the pictures of the final assembly. I really appreciate it!

Eric Brouwer (author)nqtronix2016-10-27

Thank you. It was a pleasure creating this Instructable.

nqtronix (author)2016-10-14

I like your design, especially because you choose discrete components, which are either widely available or have alternatives - perfect for the community! The only thing better is the excellent step by step design walk-trough, it was a very interesting read.

While I definitely wouldn't consider myself experienced - I've never actually build a motor driver - I noticed that your driver pushes the gates quite hard, they are only rated for ±20V. There's an easy fix, just add a 2.2k resistor instead of the wire in between the pcbs to build a voltage devider.

An other issue might be slow switching times, which causes both mosfets to conduct at the same time. Decreasing R1-4 to 1k will speed up this process ten times, cutting the switching losses down to 1/10. In my designs I usually use a push-pull driver right infront of the gate, this reduces the output impedence easily by about 200-300. If the temperatures are fine though, there's no need to worry.

Do you have a project in mind which requires this driver?

JohnC430 (author)nqtronix2016-10-25

Hi nqtronix. you mentioned a "push-pull" what is that? I am not familiar with that. please explain/describe it. Thanks.

nqtronix (author)JohnC4302016-10-25

A push-pull driver is essentially a current amplifier made up of two transistors, the output voltage stays the same. The most basic version does not require any additional parts and is therefore a simple, small and cheap solution. It is very well suitable for frequencies up to 100kHz or so. To switch capacitive loads (such as a mosfet gate) I'd suggest a small capacitor (10-100nF X7R) as close to the transistors as possible. Do note that this circuit is generally NOT suitable for amplifying small or precision signals. The output signal is limited by the supply voltage (VCC) to the range of 0.7V - VCC-0.7V, wich may be an issue for some low voltage circuits.

Eric Brouwer (author)nqtronix2016-10-27

Here is a basic push-pull circuit. It is the two left side transistors that drives the MOSFET gate.

Eric Brouwer (author)nqtronix2016-10-19

For interest, I have included some recordings of the final bridge output voltage. Have a look at Step 22.

nqtronix (author)Eric Brouwer2016-10-19


Eric Brouwer (author)nqtronix2016-10-14

Thank you for your comments. See my reply above.
Yes, see the link to one of my previous Instructable. The Speed Controller in this project did not survive....

JohnC430 (author)Eric Brouwer2016-10-16

I misunderstood when I read "The speed controller in this project did not survive" i thought u were referring to the one in this instructable.

JohnC430 (author)Eric Brouwer2016-10-16

did not survive because of the 10K resistor across G/S or because you had over 20VDC as your input power or both. 10K causes a very slow turn-off (nothing to pull down the gate) and if you turned on the other transistor in the leg while this is still turning off then boom! since you had such a large input power supply. You need a small "dead-time" between one Q turning off and the other turning on. Makes your circuit a little more complex, but at 40 Amps motor drive this is already a power project and you need safety on everything. In fact look for other ways to drive the Gates so they switch FAST and not with just resistors which are absolutely not a fast solution. I would look for a way to use an NPN-PNP totem pole as the gate driver. Limit the Totem pole voltage to between 12 and 15 Volts. Read about driving MOSFET's fast. no need to go crazy on that but just get the concept of gate drivers. sorry that I am being so bold as to make these suggestions, but I am only trying to help since you have already done so much and so well.

blanchae (author)nqtronix2016-10-16

I've put a voltage divider instead of just a pull-up or pull-down resistor. This forces the Gate voltage to whatever voltage that I spec.

jaack65 (author)2016-10-17

24 volt 40 amp power supplies aren't cheap. and wiring in picture doesn't appear that the wiring isn't capable of 40 AMPS! My charts say 12 gauge wire for this current.

Eric Brouwer (author)jaack652016-10-23

This is the final wiring. The battery and two motors are wired using 4mm (11AWG). The Red/Black ripcord wires are for the motor's electromechanical brakes.

JohnC430 (author)jaack652016-10-17

are u looking at the fan wires?

Eric Brouwer (author)jaack652016-10-17

The speed controller will be used on a battery system (wheelchair). Power is obtained from 2 x 12V, 45Ah batteries connected in series.
I am using 4mm² wires, or 11 gauge. This is the same size as the original wiring of the system.

JohnC430 (author)2016-10-22

what does it look like when you connect the motor?

Eric Brouwer (author)JohnC4302016-10-23

I have not tested the controller with the motors yet. Installation is in progress.
See Step 23.

JohnC430 (author)2016-10-22

I thought you were aiming for 40 Amps. 3 Amp resistive loads don't simulate a 40 Amp motor drive.

Eric Brouwer (author)JohnC4302016-10-23

Yes, I am. But initial testing was limited to the capabilities of my bench power supply.
Connecting to the motors require a lot more work. The motors incorporates electromechanical brakes that have to be synchronised with the motors. If the brakes are not released before power to the motors are applied, the brake/clutch mechanism as well as the speed controller will be damaged. I am in the process if installing the controller into the project.

Eric Brouwer (author)2016-10-14

Thanks to JohnC430 and nqtronix for your positive contributions. I have never used MOSFETS before, so I was a bit overwhelmed by the datasheets.

I will change the value of R1 - R4 to 1K to increase the switch-off speed of the MOSFETs. I will also add additional 2K2 resistors between the Gate end Collector of the MOSFET and driving transistors. This will limit the Gate-Source voltage to around 8V. This is above the 4V Gate Threshold voltage, and less then the 20V Gate-Source voltage.

I will see if there is space available on the MOSFET PC Board to add the additional Zener diodes across R1 - R4 for added MOSFET protection as well. When I have time, I will update the Instructable accordingly.

nqtronix (author)Eric Brouwer2016-10-14

At first I had written:

With a 1k pullup I'd suggest using 220Ω series resistors (~19.7V gate drive), maybe 330Ω (~18.0V gate drive) for a slighly larger safety margin. In general you want to set the gate voltage as high as possible to ensure the lowest R_DS,on resistance as possible.

But then I realized that the 2.2k resistor will cause the mosfet to turn on slower than off, which may be more beneficial than the lower R_DS,on resistance. This is the point where my lack of experience shows...

IMHO the zener diode suggested by JohnC430 isn't really required, the voltage divider will clamp the voltage anyway. The zener diode becomes important if the device should be suitable for different supply voltages.

JohnC430 (author)nqtronix2016-10-22

Yes I agree about the Zener diode not required in this circuit. voltages are too low.

andrewty (author)2016-10-20

Are the gates to Q1 & Q3 (Pchannel mosFETS) drawn upside down?

Eric Brouwer (author)andrewty2016-10-21

I am not sure if you refer to the physical location of the Gate on the schematic.
If so, this depends on the specific component you select in Eagle.

blanchae (author)2016-10-16

Very nice write-up, well done! Some things to consider:

- When selecting MOSFETs, select RDs(on) to be the lowest value you can find. This will reduce the heat dissipation on the mosfets. Usually this will correspond with a higher Id(max) value.

- You shouldn't immediately switch the direction from FWD to REV or vice versa. There should be a small idle period in between. MOSFETs turn on incredibly fast and if there is any capacitance charging or discharging in the circuit (stray or component) then there could be a period where the MOSFETs are still transitioning logic states and are in the analog region. If the MOSFETs are in the analog region then they are going to drop a LOT of current and dissipate a lot of heat consequently blowing. They fry fast too!

- MOSFETs have an incredibly high input impedance Zin and the Gate is very static sensitive. The first thing that I do is to connect the Gate/Source resistor - this simple step will protect the Gate.

Back in the 90s, I was in autonomous sumo robotics competitions and everyone said that you can't create a H bridge using MOSFETs. I thought that just didn't make sense and designed several circuits and posted them to the robotics newsgroups. After receiving countless emails asking questions, I posted the designs on my website:

Of course this is all 90s info and content.

Eric Brouwer (author)blanchae2016-10-19

For interest, I have included some recordings of the final bridge output voltage. Have a look at Step 22. I have included a function in the 12F675 where the Forward and Reverse control signals must be made LOW before direction can be changed. Between direction changes, the bridge is disabled for about 20ms.

ksstms (author)2016-10-16

Well done, mate! Love the explanation. Finally an electronincs instructable that is not about putting a module from ebay in a box.

Eric Brouwer (author)ksstms2016-10-18

Glad you enjoyed it.

signOnthe (author)2016-10-16

Very nice ible! Thank you for your time.

Eric Brouwer (author)signOnthe2016-10-18

It's a pleasure

yrralguthrie (author)2016-10-16

Very good instructable for learning.

Thank you

euchcat (author)2016-10-16

Wonderful job ! it's just the good approach, magnifique !

Eric Brouwer (author)euchcat2016-10-18

Thanks for your feedback

jestertoo (author)2016-10-17

Fantastic presentation.

Eric Brouwer (author)jestertoo2016-10-18

Thank you very much

JohnC430 (author)2016-10-17

one simple way to look at gate drive is to try and make the driver with fast edges and to pump the Cgs with 1 Amp during turn on and off. this pulse lasts approx. 200nS so its two pulses per gate drive pulse. 1 Amp seems like a lot, but the average current works out to be only 20mA at approx. 100KHz so it does not burden your Aux supply.

About This Instructable




More by Eric Brouwer:ESP8266-01 IoT Smart Timer for Home AutomationInstructables Hit Counter (ESP8266-01)Converting Camping Deep Freezer Into Fridge/Freezer Using AtTiny85
Add instructable to: