How to make a high current bi-directional motor driver circuit

dc motormosfetrelay

I have a 14.4V DC drill motor that can draw 10 amps when under full load. I need a circuit that can control the speed and direction of the motors, using an Arduino with PWM. We are using relays instead of a H bridge is because of the high current. My first attempt at a circuit is shown bellow:

enter image description here

Ignore the yellow pen, this was a suggestion by someone else. Pin 1 and pin 2 of the relay are connected to the same digital-out pin on the arduino. The relay module I have has built in optocouplers and pull down resistors for the direction switching.

The FET is a IRL3705N. It has a threshold voltage of min 1V and max 2V. It has a sufficient heat sink attached to it, as shown in the picture, along with the motor and gear box bellow.

enter image description here

Issues with this circuit

The FET acts strangely. In my very first attempt at this circuit RG was 100 ohm and I had another 900 ohm resistor between the optocoupler and the 12V source. This potential divider meant that the gate to ground voltage was a 10th of the 12V, i.e 1.2V, which according to the datasheet should be sufficient to create a conducting path between the source and drain, however it didn't. We removed the 1K resistor so that the gate gets the full 12V and it then worked. Our guess was that this is because the Gate to Source voltage needs to be at least 1V higher than the voltage across the motor, and not just 1V higher than ground. But we are not sure. Is the left half (the gate turn on circuit) of my schematic correct?

The other issue is that we have blown a few of the MOSFETs, and I'm not sure if its because the diode is in the wrong place. When the motor is a generator, the diode is initially reverse biased. This is because the position of the relay switches when driving the motor determines the polarity the generator will be, and this position always means the diode is reverse biased when the motor is a generator. Therefore in the code we have it set so that every time the speed becomes zero, the relays change position. This then allows the energy in the circuit to be returned to ground. The problem is that this does not work when the motor is quickly reduced from full speed to low speed.

Is there a better circuit that will not have these issues? If my circuit is fine, please also leave a comment.

Thanks!

Best Answer

The FET is a IRL3705N. It has a threshold voltage of min 1V and max 2V.

Threshold voltage is just the point at which the FET starts to turn on. To be fully turned on it needs 5V or more (see datasheet fig 1. and fig 2.). A 14.4V drill motor can easily draw over 30A at startup, so the FET needs to turn on as hard as possible to maintain a low Drain-Source resistance.

If the FET is only partly turned on then it will drop more voltage and heat up. This also applies when switching it on and off. If you are applying PWM then you must ensure that the Gate voltage rises and falls quickly. Each transition causes the FET to heat up a little. As PWM frequency is increased there are more transitions and the FET will get hotter, so the rise and fall times need to be shorter.

Your circuit shows the Gate being driven by an optocoupler switching +12V to a (1k?) resistor. With this driver circuit the Gate voltage should rise reasonably quickly (assuming the optocoupler is being driven hard enough) but will fall quite slowly due to the large amount of charge stored on the Gate. To improve the switching speed you could add a push-pull driver using an NPN and PNP transistor, like this:-

enter image description here

Both transistors are connected in 'Emitter Follower' configuration, so they amplify the current by about 100 times (Hfe of the transistors) and reduce switching time by about the same amount.

For efficiency the PWM frequency should be high enough (>3kHz) that motor inductance smooths out the current, but low enough to not cause too much switching loss. At this frequency the flyback diode needs to be a fast switching type, preferably a high current Schottky type to keep voltage drop down.

When the motor is a generator, the diode is initially reverse biased.

If throttle is reduced quickly then the motor will continue to generate voltage until it stops, but as that voltage is the same polarity it won't hurt the rest of the circuit. If you switch direction while the motor is spinning the diode will become forward biased and 'brake' the motor. After switching direction You should not apply PWM until the motor is stationary, else a very high current will flow through the FET. With the diode providing braking the motor should stop quickly.