# P mosfet as high side switch heating

I designed the following simple circuit. I used an Arduino PWM digital pin as input (500Hz at 3.3V). I choose the FDD4141 because of his Low Rds(on). It is around 18 mOhm. The dissipated power at 1.3A should be around 120mW.

When I tested the circuit I noticed at 40% of the duty cycle that the MOSFET becomes hot. About 55 degrees in room temperature. That is far from the consumption of 120mW.

Can you suggest to me another MOSFET or circuit that could work similarly?

simulate this circuit – Schematic created using CircuitLab

• 1) the 18 mOhm Rds,on you mention, at what Vgs is that? Are you applying that Vgs? 2) When the MOSFET needs to be off you should apply Vgs = 0 V, are you doing that? I think you're applying 0.9 V so the MOSFET might not be properly switched off. May 6, 2021 at 14:32
• @Bimpelrekkie Yes probably the Rds is higher than declared. It's 18mOhm at Vgs -4.5V. I tested with 0.9 V on the MOSFET and it is off. May 6, 2021 at 14:37
• Two things. First ting, find a PMOS that specifies Rds(on) at 3 V or less. These exist. This will help make sure the PMOS is fully on. Second thing, devise a way to drive the gate of the PMOS from VBAT1 (for example use a gate driver powered by VBAT1, but with logic-level input from your Arduino). This will help make sure the PMOS is fully off when it is supposed to be. May 6, 2021 at 17:01
• You don't necessarily need a driver IC. Even a strong CMOS logic buffer will probably work and will drive the gate much harder than your arduino output. May 6, 2021 at 17:02

According to the FDD4141 datasheet, the threshold voltage of this P-channel FET can be as small as 1V. Your square wave is nominally 3.3V and your power is nominally 4.2V, so you just squeak by at 0.9V. There is not much margin for error there.

If for some reason your voltages are a little off, the FET may not be shutting off completely.

Similarly, according to the datasheet, the threshold voltage may be as large as 3V. When the gate is at 0V (relative to ground) the gate-source voltage will be enough for the FET to start conducting, but it may not be enough to get the resistance very low. That is, the FET would not be fully "on" in this condition.

Either of these scenarios will cause the FET to heat.

It is off-topic on this site to ask for product recommendations, so I won't give you one. However, you either need to rethink the voltages in your design (maybe you can't -- a Li battery and a 3.3V uC?) Or choose an FET that will be strongly ON at a -4V $$\V_{gs}\$$ and definitely off at -1V $$\V_{gs}\$$

• "It is off-topic on this site to ask for product recommendations" why? We are dealing with electronics, which is done with physical objects. You just can't study electronics without referring to real-world products and components. If you just give examples of products (maybe from several brands) nobody will get hurt. Cheers! May 6, 2021 at 15:11
• @Francesco. I didn't make the rule, but I believe the official rationale is that the market changes rapidly, and such recommendations would soon become stale. I think another motivation is to prevent the site from becoming swamped with promotional answers. May 6, 2021 at 16:17

From a novice perspective I would agree with the other comments about the gate voltage - the datasheet specifies a minimum threshold of -1v, and your "off" voltage is -0.9v.

The gate capacitance of that mosfet is quite large, so it's possible the digital pin is charging and discharging the gate slow enough that the "actual" gate voltage stays above -1v for long enough that the mosfet conducts with a very high RDSon on every time it turns off.

I would add a gate driver that brings the "off" voltage to 0v, and doesn't rely on the microcontroller pin to charge and discharge the gate capacitance. Perhaps there is a better way, but I would do something like this:

simulate this circuit – Schematic created using CircuitLab

I would choose M2 to be a logic level n-mosfet with low input capacitance, and R1 to be a small enough to supply a reasonable charging current. R2 is probably optional.

As others have said, you're not properly driving the gate of your PMOS.

The basic rules for using a MOSFET as a PWM switch are pretty straightforward.

To be in the 'on' state, you need to meet the following two conditions:

1. $$\V_{GS} > V_{th}\$$
2. $$\V_{DS} < V_{GS} - V_{th}\$$

When in this state, the closer the terms in 2. are to each other, the higher the 'on' resistance of the fet, so in practice you want the gate-source voltage to be significantly higher than the drain-source voltage. There's also a third condition where 1. is satisfied but $$\V_{DS} \geq V_{GS}-V_{th}\$$, and in this mode the drain current is essentially controlled by the gate-source voltage. In both of those conditions the mosfet is wasting energy by acting essentially as another load.

To be in the 'off' state, you need to meet the following condition:

1. $$\V_{GS} < V_{th}\$$

It's impossible to transition between the 'on' to the 'off' states instantaneously, and during that period of transition you're wasting energy. Therefore the other requirement of a mosfet driver is to transition between these states quickly, to minimize switching losses. Since mosfets always have some gate capacitance, if your drive circuit has a lot of series resistance it forms an RC charging circuit which wastes time during gate voltage transitions. Therefore for high-efficiency, high frequency switching you want a drive circuit that can dominate the gate capacitance term and transition the gate voltage between the on and off states as quickly as you can safely manage.

You're probably better off switching on the low side. n-channel MOSFET's are usually cheaper, have lower on resistance and faster switching times, etc. due to the nature of their construction. Additionally, I recommend using an off the shelf MOSFET driver IC, which will do a better job in the general case at fulfilling the drive requirements I described above than a direct connection to the PWM output of an Arduino.

simulate this circuit – Schematic created using CircuitLab