motor driver mosfet heats up

Thread Starter

giom18

Joined Apr 16, 2018
7
Hi,this is my first time using a mosfet based motor driver. I have this motor driver design set up on a breadboard for a bipolar stepper motor. I was able to drive the motor forwards and backwards for about 5 minutes. I realized that two of the P mosfets were getting hot until they became untouchable. Then I turned off the power supply which was I limited to 6V, 0.8A. Then I turned off the power supply until the mosfets were cold. I turned the supply on again but I didn't send any commands (0000) to the motor driver and I realized that the same mosfets were getting hot again. I tried to move the motor forwards or backwards but it would only stall. I would appreciate if someone could help me troubleshoot the design of the motor driver. The mosfets I am using are 2N7000( 200 mA, 60 VOLTS, RDS(on) = 5 ohms), IRZ44N (VDSS = 55V, RDS(on) = 0.022ΩID = 47A) and 4P03L04 (VDS-30V, RDS(on) 4.1mΩ, ID-80A)

The motor I am using is this one https://www.amazon.com/gp/product/B00PNEQKC0/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 Nema 17 Rated current 2.0A & resistance 1.4ohm

My vcc comes from a dc power supply, I limited the voltage to 6V and the current to 0.8A. My driver levels are these: to stop 0000, for forwards 0101, 0110, 1010, 1001. where the most left bit is CON4 and the most Right bit is CON0. for backwards, 1001, 1010,0110, 0101. I am driving the motor at a range of 50Hz to 200Hz. CON 1 connects to coil A CON 2 connects to coil A' CON 3 connects to coil B and CON 4 connects to coild B'. Additionally the GPIO logic level is 3.3V and the max current output of my MCU is 8mA. I measured the voltage at the drain of the 2n7000 and I was able to see only 2.5-2.7V instead of 3.3V. I'm guessing there must be something wrong with the design since two of the mosfets get hot even when the motor is stopped ( the power supplies shows 0.0008A). When is the motor is on (CCW or CW) the power supply shows 0.35A. When there is a load it rises up to 0.75A
I'll appreciate any suggestions, also I am not suppose to use motor driver ics since it's for a school project.
 

Attachments

pmd34

Joined Feb 22, 2014
527
Hi giom18, your heating issue may be caused by the back EMF generated from your motor exceeding the voltage ratings of the MOSFETs. You should really have protection diodes in place to short any over voltage spikes to the supply rails.
 

Thread Starter

giom18

Joined Apr 16, 2018
7
Thanks for your answer.
I apologize for my ignorance, but the built-in diodes are not protective enough? if they aren't, will 1N4001 diodes be enough or could you please provide a better suggestion? I'm planning to supply at least 1.2A in the future. How big do the back emf has to be in order to exceed the voltage ratings of the mosfets since their voltage ratings are very high. Also even when the motor is stopped (GPIOs 0000) some of the mosfets still heat up, so I believe there must be wrong with the design,
 

danadak

Joined Mar 10, 2018
4,057
Do you have dead time timing for the H Bridge



You have gates tied together in vertical leg of N and P. There is a period where both vertical
leg FETs could be on, which would produce a large amount of current out of supply. I question
the timing you are getting, especially because of the way gates not being driven low Z for Tr and
Tf at each gate.

http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridges-the-basics/

Off the shelf stuff looks like -

https://www.banggood.com/search/h-bridge.html


Regards, Dana.
 
Last edited:

shortbus

Joined Sep 30, 2009
10,045
Hi giom18, your heating issue may be caused by the back EMF generated from your motor exceeding the voltage ratings of the MOSFETs. You should really have protection diodes in place to short any over voltage spikes to the supply rails.
How would you do that on a stepper motor driver? Since they drive the coils in both directions/polarities. Many of the older drivers and steppers useed capacitors not diodes.

My guess on the overheating would be the circuit being built on breadboard, and the bad contact problem some breadboards have when using mosfets.
 

Thread Starter

giom18

Joined Apr 16, 2018
7
Thanks for your suggestion Dana. I actually used drv8825 and they worked perfect, but for this project I'm not supposed to use drivers ics. I do not have a dead time, I basically load one sequence at a time (ie 1010) to a timer interrupt service routine. The sequence that I load is 1001, 1010,0110, 0101. I was wondering if I load 1001, 0000, 1010, 0000, 0110, 0000, 0101 and 0000 might be enough for a dead time. My other option was to implement the circuit design below instead, they don't have the gates tied together. Since it's a bipolar stepper motor I would have to implement two of these half bridges. Last question is why are 100 ohms or less resistor needed in series from the GPIO signal to the gate of the 2N7000? I have seem in different designs but the only answer I found was for "stability". Also I got this from friend "Do you not see a problem with 6V/1.4ohm= 4.2A current limiting then dropping Voltage so RdsOn rises and heats up?" but I didn't quite understand. Does he mean I should reduce the voltage VCC?
 

Attachments

shortbus

Joined Sep 30, 2009
10,045
Questions about this -
1. what voltage are you putting on the gates? If it is your mentioned 3.3V the mosfets are barely turning on and will heat up.

2. You don't show any gate to ground resistors, called "pull down resistors", to keep the mosfet off when they are supposed to be off. On breadboard this is extremely important, and should be used all of the time. The gate to ground resistor puts the gate at a known voltage, the gates can and do charge up by themselves and turn on the mosfets, especially from the stray capacitance on a breadboard.

3. your using a mosfet with an maximum of 200mA .02A to drive a motor that draws up to 1.8A but trying to run it at .8A

All of the above will cause heat in mosfets.
 

Thread Starter

giom18

Joined Apr 16, 2018
7
Hi shortbus thanks for your input.
1. Yes the voltage I'm sending to the mosfets is 3.3V, unfortunately that's the mcu I have available.
2. Aren't R30, R31, R? and R32 pull down resistors (from my first atachment)? they go from the gates of the 2N7000 to gnd.
3. If the 2n7000 are unsuitable for this application, can I just replace with another IRZ44N?
 

MaxHeadRoom

Joined Jul 18, 2013
28,702
If driving the 2n7000 from a micro the pull down should be 22k or more, especially using 3.3v, the app notes for the 2n7000 show no resistor in most cases for TTL and Cmos.
The driving circuit output is usually sufficient to keep it low in these cases.
Max.
 

danadak

Joined Mar 10, 2018
4,057
R in series with gate normally in the few 10's of ohms, to suppress stray L ringing
effects due to large MOSFET gate C.

The only other possibility for it to be this high is discharging the gate C dumps a lot
of charge into UP Vss substrate, which could cause noise margin failure in internal
logic. A way to look at this is with a scope capture right at I/O pin and see what the
jump in V of the internal I/O NMOS driver output transistors drain V. Note scope ground
lead right at Vss pin of UP.

The reference made earlier to pulldowns. When most processors start up these days
they set I/O pins to HiZ. So any external MOSFET gate left floating will take on any
voltage due to leakage effects and coupling.


Regards, Dana.
 

Thread Starter

giom18

Joined Apr 16, 2018
7
Hey guys thanks for all the help so far. So I've been playing with the first schematic that I uploaded since the 2nd schematic doesn't seem to work at all. So I tried different values for pull down resistors on the gate of the 2n7000's. The motor sometimes stalls or just doesn't turn on. Then I removed them and the motor worked fine. I placed the pull down resistors back again and motor didn't start. Then I removed them again and the motors wouldn't start. I tried to repeat this process for a while then having the power supply on I touched one gate of a 2n7000 to a gnd, and the motors started up running again. I tried to replicate the error over and over and if I short the 2n7000 to gnd makes the motor run again. So I need pull down resistors to avoid high impedance from the GPIOs but they should be small values? or what else am I missing here?
 

bertus

Joined Apr 5, 2008
22,278
Hello,

What is the supply voltage?
When it is the given 6 Volts, the mosfets might not be turned on fully and be still in the linear region.
This also might cause the heating of the mosfets.
When using a supply voltage of 6 volts, have a look at some logic gate mosfets.

Bertus
 

shortbus

Joined Sep 30, 2009
10,045
Am I so far off the edge on this? He is using the 2N7000, called by the makers a 'small signal mosfet', to try and drive a motor. The VGS on it is ~20V so it should be fully on at 10V, but he is driving it at 3.3V just slightly above the maximum VGS(th), and at that gate voltage it is only giving ~1mA of current through the DS.

This is a job, driving an stepper for a power mosfet not a small signal one. Or if having to use a small signal one it should at least be one of logic level gate type.
 

Attachments

Thread Starter

giom18

Joined Apr 16, 2018
7
yeah, I'm only using the 2N7000 for Q_1 and Q_2, I attached a schematic with labels. I'm also uploading some scope captures that I tried swapping pull down resistor values.Also VCC is now 11.1V 0.8A limited from a dc power supply.
1. the first scope capture I used 10k resistors, motor didn't move
2. the second scope capture I used 100 ohms., motor didn't move
3. in the third I didn't use the pull down resistor and the motor started working.
The voltage at gate decreases when I use pull down resistors :/
 

Attachments

Top