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:
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.
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.