I have been struggling to solve a problem on my Project setup. Currently my setup consists of an Arduino UNO which is connected to the following motor driver:
This driver, via PWM from the UNO drives a 70W 12V motor. The signal is measured by an optical rotary encoder and fed back into the controller to determine the output. The output to the driver can be seen below(green line):
From the above image it is clear that the PWM output to the driver is quite smooth, however the problem I am currently experiencing is that at a duty cycle less than 100%, the mosfet(IRF5305S) on the driver gets extremely hot, and even hotter the lower the duty cycle. I first tested this system on a smaller motor without any heat dissipation from the driver. Normal analogWrite function is used to write the PWM signal. At first pin 5 was used, but after some research I found out that the other PWM pins use a lower frequency of 488Hz, so I switched to them. This did not seem to solve the problem.
The heat only comes from when using the setup with the 70W motor, which draws approx 1.5A running and 2A starting. The driver is rated at 5A so the running current is well below the rated current.
From reading on different forums it is clear that the issue lies with the PWM signal and possibly the frequency thereof. I have tried lowering the PWM frequency using the PWM.h library but this only caused irregular control of the motor.
That IRF5035 not a logic level MOSFET so will not fully turn on with 5V so it gets hot. Replace it with a suitable logic level MOSFET. The IRLZ44 may be a substitute.
To choose a suitable MOSFET you should know the stall current of the motor. The stall current specification should be listed in the motor data sheet. The stall current will be drawn, briefly, every time the motor starts. The stall current can be 10 times or more the running current.
Where did you find that? Post a link. They should not have advertised "Arduino compatible".
A 70 W motor will consume about 6 Amps at 12V and maximum rated power. Expect the start/stall current to be several times that, so look for an Arduino-compatible motor driver rated for at least 20 Amperes. More is better, of course.
That is a classic indication of improper gate drive. The reason I say this is it is ok if on or off but get hot during PWM. If you put a scope on the MOSFET gate--source it will be turning on and or off slow. This keeps the MOSFET in the linear range causing it to dissipate a lot of extra power and reduces the EMI. Since you gave no information on the MOSFET relay I will take a SWAG and say it is wired like this. Try driving the device with at least 10mA and see if that helps. Try a 300 Ohm resistor if you have one. This is the one on the board. You can also parallel it. By driving it harder you should get a faster turn on, this is dependent on the CTR of the optocoupler on the board. If I am wrong please post a schematic and a link to technical information on the device.
The MOSFET shown on your board is avalanche rated and needs about 9.5Vgs to fully enhance. This slows down the turn on/off. The avalanche rating saves them an external diode. The avalanche current is passing through the equivalent of 0.12 Ohm resistor (internal diode). This will also add heat. You can place an external schottky diode to absorb some of this energy thereby causing it to cool down a bit.
Which doesn't matter here.
The mosfet gate is switched with an opto coupler, from the 12volt supply.
Opto couplers are not that fast, which adds to the switching losses.
Doubt that that matters.
Modules like that usually have a fixed resistor for the optoLED on the board.
You can only make things worse by adding another series resistor.
OP could post clear pictures of both sides of the board, so we can work out the traces and values.
I don't see a back-EMF diode on the board, and OP didn't mention one.
Leo..
Obviously just not up to the job.
Could be the country of origin spec variation in manufacture..........
Try this one....... https://www.ebay.com.au/itm/234276368913