Motor drivers mosfets heating up

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 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 350mA.
I’ll appreciate any suggestions, also I am not suppose to use motor driver ics since it’s for a school project.

The IRZ44N is not logic level - I see you are using a level shifter to drive it though. You need
10V or more supply for it to work reliably.

The 4P03L04 is logic level, which doesn’t match the N-channel device - not a big thing.

Your motor is 1.4ohms, so at 6V supply you need to be able to supply 4A or the supply voltage
will droop, making your MOSFETs half-on and half-off, which can lead to rapid heating.
At 10V supply you’d need about 7A supply for the same reason.

The 4k7 pull-ups on the 2N7000 drains is very high, it will mean very slow switching of the
gates, meaning PWM may be unworkable.

Your H-bridge circuit is flawed, it will suffer from shoot-through and pull massive current spikes
directly to ground everytime it is switched - you cannot get away with sharing the gates between
high-side and low-side devices as you do, you must have them separately controlled, and sequenced
so there is dead-time allowing one device to turn fully off before the other starts to conduct.

There are hundreds of really bad H-bridge designs out there on the internet I’m afraid.

If you want to see how its really done, checkout the datasheets for H-bridges and H-bridge
MOSFET driver chips like the HIP4081A. Usually there’s a 12V supply just for the drivers,
which is arranged not to droop if the main supply droops, so that the MOSFETs get proper
drive at all times and don’t cook themselves by being half-on-half-off.

The standard bootstrapped high-side-low-side driver circuits also allow fully independent powering
of the drivers and main MOSFETs - either supply can be off and nothing breaks. Indeed the main
supply voltage is fully independent - it can be <1V to 600V with some drivers.

Many driver chips support dead-time generation and under-voltage shutdown (for the driver
supply), eliminating two of the many expensive failure modes for MOSFET H-bridges.

Drivers also can drive the highly capacitive MOSFET gates properly and give fast reliable switching
at 10’s of kHz PWM

Take the easy route, use driver chips…