I have been working on a H-bridge design that controls a 12V motor to rotate forwards or backwards at an adjustable speed using PWM from an Arduino. The motion starts slow and increases to max speed for 10s then decreases back to slow. The entire motion is approximately 40s. I am using Q2 and Q4 for switching direction and applying PWM to Q1 and Q3 for speed control. This motion is initiated by inputs from the two relays. The circuit is show below:
For the PMOS I am using the TO-252 package of the IXTY48P05T and for my NMOS I am using the D2PAK package of the IRLZ34NSTRLPBF. My diodes are through hole 1N4004.
Under no-load conditions my motor work perfectly fine. The problem that I am having is when I apply a purely resistive load (since I want to test the limits of my design w/o damaging a motor) my mosfets begin to short around 19A. Even the diodes fail under this resistive load, specifically D2 and D4.
I would be happy if I could only get 25A out of this circuit since the motor is only rated for 20A and I will be using a 20A fuse, but this circuit should sustain a minimum of 30A continuous current yet it fails at 19A. Where am I going wrong?
I can provide code if needed.
Edit: Duty cycle "flow"- 10% -> 90% -> 10%
Edit: I updated the circuit above. Thanks to the help from this amazing community! I managed to get my power dissipation down to approx. 3.2W for the PMOS and 700mW for the NMOS. New schematic:
I figured I could go with the SUM110P06-08L and SUM40012EL since the both have low Rdson and a manageable Qg. I stuck with the TC4420EOA to drive Q1 and Q3 since I am familiar with this chip and I no longer can operate at 100% duty due to the charging/discharging gate resistors. The resistors on Q1 and Q2 were specifically selected for these MOSFETs. Q1 charges fast through R4 (R9 in LTspice) and discharges slow through R5 (R3 in LTspice). Q2s gate charges slow through R7 (R4 in LTspice) and discharges fast through R6 (R10 in LTspice). The diodes direct current depending on charging or discharging. I know doing this methods puts unnecessary strain on the MOSFETs which generates heat but I refuse to use a NMOS for high side-switching. R3 (R1 in LTspice), R9 (R2 in LTspice), R7 (R8 in LTspice), and R12 (R5 in LTspice) are meant to prevent latching. I went with the FAN3268T since this uses TTL and I don't have to worry about adding a charge pump to hold Q2 or Q4 "ON". I will drive the FAN3268T with two inputs from the uC. R10 and R11 in KiCad are simply gate resistors.
I simulated this in LTspice using the MOSFETs with the closest Rdson and Qg compared to SUM110P06-08L and SUM40012EL. This circuit is shown below:
The Arduino UNO Mini has a PWM frequency of 980Hz for pin D5. V3 and V4 are supposed to be simulating FAN3268T. Where V2 is simulating TC4420EOA The circuit characteristics are shown below for V3 and V4 being 12V (Reverse operation at 10% Duty input (90% duty load)):
The circuit characteristics are shown below for V3 and V4 being 0V (Forward operation at 10% Duty input (10% duty load)):
Should I be worried about the voltage spike on the gate of Q1 during "power on"?
I was going to add TVS diodes across drain and source and between gate and source on each MOS but I was worried about leakage. Are diodes in these places necessary? I know they help with ESD but modern MOSFETs have this protection built into them now.
I added a fan circuit as well to help manage the generated heat. I plan to use heatsinks too.
Also if anyone sees any issues that may arise with this setup please comment!
ANY feedback is much appreciated!
Edit: New post at this link.
For future viewers, if anyone plans to use this circuit I am NOT responsible for failed designs, ANY damage, harm to self or others, etc.