I'm designing a brushed DC motor controller for an 8.3 kW, 24 V, 350 A forklift motor.

I will be controlling only one direction so I'm using a 70 kHz PWM from an MCU.

The circuit will be a push-pull transistor pair (TIP122 and TIP126) for driving the IRF3205 MOSFET. The circuit will consist of 12 parallel MOSFETs and their drivers.

enter image description here

Note: Here I used BD140 and 139. This wouldn't be used, it is just for my first test.

How should I do proper thermal management? Is there anything wrong with my idea?

I have calculated the heat that needs to be dissipated which is (Rdson * I^2) = 0.008*30^2 = 7.2 W and since I'm using 12 it will be 86.4 W of heat. I want to ensure the junction doesn't heat much above 100°C. Ambient worst case would be 50°C so in free air about 1 W would make the junction reach 112.5°C, I had an idea to use a Peltier for active cooling, but I really have no idea how to calculate the actual or approximate values.

I also don't know if my design is sufficient. I want to test this design at home and I don't have anyway of putting such a high load nor do I have a supply that can deliver such power. I believe MOSFETs behave differently when the load is higher. I can try a single MOSFET at 30 A and then parallel them, but I want to know how can I view the time it takes to saturation and cut off on an oscilloscope. I'm using a Siglent SDS1104X-E.

One additional problem. Is there a way to limit such high currents if a single MOSFET got much higher load, without putting the MOSFET in active region as that would increase losses and thus the heat generated? I thought about changing the PWM frequency. Is this practical?

Note: I will be implementing much more in the circuit like fault detection and swapping MOSFETs and monitoring the current and heat of the MOSFETs and much more but I want to ensure the basic circuit is functional first.

  • 2
    \$\begingroup\$ BTW, you are likely going to need a level-shifter to properly drive the MOSFETs per your schematic. The MCU likely puts out 5V (theoretical best-case). You lose 1.2V of that from the darlington pair - barely enough to bring the MOSFETs out of cutoff. You will be up in smoke in 900ms with that kind of forklift current. \$\endgroup\$
    – MOSFET
    Dec 28, 2023 at 16:12
  • \$\begingroup\$ I will be connecting the high side of push pull to 12v, and i think transistors unlike mosfets only require enough current to turn on doesn't matter the voltage on the base. Is this true ? \$\endgroup\$
    – AhmedH2O
    Dec 28, 2023 at 16:24
  • 2
    \$\begingroup\$ @AhmedH2O Untrue. Look at the rated Vgs to achieve the rated RDson. You want at leas that unless you go ito the curves to determine whether a higher RDSon at lower Vgs is acceptable. Ignore Vgs threshold because you want the MOSFET fully conducting, not just barely conducting. That number is not for switching applications. \$\endgroup\$
    – DKNguyen
    Dec 28, 2023 at 16:28
  • 1
    \$\begingroup\$ @AhmedH2O By the way, they are called BJTs, not transistors since both MOSFET and BJTs are types of transistors. So you have BJTs and MOSFETs in your circuit, not MOSFETs and transistors. MOSFETs have a gate while the same terminal on a BJT is called a base. \$\endgroup\$
    – DKNguyen
    Dec 28, 2023 at 16:33
  • \$\begingroup\$ I still dont understand, the bjt doesnt care about voltage only current, I will drive a bjt to turn on a mosfet the bjt controls 12v so it is enough for the mosfet where is the issue. I think you mean BJTs require high voltage at the base, but im almost certain it conducts if enough current is passing between base and emitter no matter the voltage, if this isn't correct i will need to really review what I know throughly . \$\endgroup\$
    – AhmedH2O
    Dec 29, 2023 at 2:51

3 Answers 3


FET choice

  1. TO220 IRF3205: 55V RdsON=8mOhm Qg=146nC

  2. TO220 CSD18510KCS: 40V 1.7mOhm Qg=75nC

  3. TO220 CSD18535KCS: 60V 2.0mOhm Qg=about 40nC

  4. SMD STL260N4LF7: 40V 1.1mOhm Qg=42nC

By using a more modern MOSFET, you can have much lower RdsON, which means much lower losses, and a lower gate drive current due to lower Qg.

Even if these are more expensive than IRF3205, total cost will be lower due to savings on cooling.

Let's try the SMD MOSFET, 10 in parallel. 1.34W conduction losses per FET: you can mount your PCB on a heat sink and cool it from the back with a squishy pad.

With TO220 I'd pick #3, 10 in parallel. 2.45W conduction losses per FET, so total 24.5W, much easier to cool also.

Freewheeling diode

Then you need either a freewheeling diode or synchronous MOSFETs. Conduction losses in these are calculated differently, because while they have to take the whole current, when they do so the duty cycle is much lower.

  • D = Duty Cycle [0..1]

  • Current in switch FETs: I=350A*D with duty cycle D

  • Current in sync FETs or diode: I=350A*D with duty cycle (1-D)

Using Schottky diodes, dissipation is VfI(1-D), maximum is at 50% duty cycle. With 0.5V Vf maximum total dissipation is 44W!

Using MOSFETs, dissipation is RdsONI^2(1-D), so the maximum is not at 50% duty cycle, but around 66%. With 4 parallel 2mOhm FETs, maximum total dissipation is 9W, much more reasonable.

Gate drive

For FETs #3 I used 40nC gate charge from the gate charge curve. With 10 FETs that's 400nC. With 4A gate current it should switch in 100ns which is reasonable.

Switching losses estimation: Frequency . I . V . Qg/Ig

70kHz -> 58W

Thus a lower frequency would be preferable, like a few kHz. If it sounds too whiny, you can always randomize the PWM period. To switch faster would require a ridiculously high gate current for all these MOSFETs: this would need several drivers, which introduces the problem of skew.

Going with synchronous MOSFETs, one driver for all, I looked for a driver with adaptive dead time or at least anti cross conduction, because it's always nice when your MOSFETs don't get shot into orbit due to a software bug in the PWM dead time.

NCP5183 - No protection

UCC27282 UCC27301A - Shoot through prevention

ISL784x4 - Automatic dead time

I had an idea to use a Peltier for active cooling, but I really have no idea how to calculate the actual or approximate values.

Peltier coolers will cool below ambient but the efficiency is very low, so your heat sink now has to get larger to get rid of the original heat from the MOSFETs and all the power used by the Peltier to transport the heat. Simple and robust is good: a chunk of aluminium is pretty reliable.

You need a temperature sensor.

Many MOSFETs mean the heat will be well spread over a large area, making the heat sink more efficient. You may need a small fan.

You will also need some pretty thick copper and bus bars.

One additional problem. Is there a way to limit such high currents if a single MOSFET got much higher load

RdsON increases with temperature, so the hotter FET will conduct less current.

If you try to control each FET individually to share current then you have a new problem: they still have to switch at the exact same time, so any extra complication in the control circuit adding skew will be a problem.

All trace and bus resistances should be the same for all FETs. If the FETs are in a line, this means the input should be on one side, the output on the other side, and equal amounts of copper for both. Basically all FETs should have equal resistance including copper connections, traces, etc. Otherwise the FETs located closer to the power supply will get more current. Likewise, driver in the middle and short tracks to the gates for minimum skew. One gate resistor per FET, otherwise they can oscillate.

With diodes, it's the opposite: Vf has a negative tempco, which goes against current sharing.

I was planing on taking the back emf from the inductors and using it to implement a regenerative breaking by charging a capacitor and then a charging circuit will utilize this power.

If you use synchronous MOSFETs instead of diodes, you can have regenerative braking. In this case, braking recharges the battery: the pair of synchronous FETs act as a buck converter when accelerating, but when braking the current changes direction so they act as a boost converter from motor to battery.

In case the battery is disconnected during braking (or its voltage is too high so it can't accept charge current) this will dump braking energy into the supply bus capacitors on your board. The controller must be smart enough to detect an unsafe increase on the supply bus due to regen braking, and switch instead to shorting the motor using the synchronous MOSFET. In this case braking power is lower, but the energy is dissipated in the motor's internal resistance, which is fine. An alternative is to use a resistor to dump the excess power, but it is going to be large, heavy and expensive.

Here's a bit of python code for plotting dissipation versus number of MOSFETs and RdsON. It only takes into account conduction losses though, no switching losses.

  • \$\begingroup\$ Thanks for pointing out, I knew that there are better fets out their however i didnt know that there fets with such low rdson and gate charge, the issue though is that I live in a developing country with very few places selling electronics also import is extremely hard and doesnt apply to my case, actually the available parts are very small that im lucky to find IRF3205 let alone find a driver or such niche specific power fets, I didnt find a driver capabile of my application, so i resorted to push-pull as the second best thing, if i need bootstraping i will need to design it alone as well. \$\endgroup\$
    – AhmedH2O
    Dec 29, 2023 at 2:44
  • \$\begingroup\$ Damn! OK, have you solved the diode issue? Can you find Schottky diodes which can handle the current, or have you decided if you want synchronous FETs instead? (with diodes you won't have regenerative braking) How will you generate the PWM? \$\endgroup\$
    – bobflux
    Dec 29, 2023 at 9:48
  • \$\begingroup\$ I think i will use your idea of synchronous fet, I think 1 fet will be enough correct me if im wrong please. \$\endgroup\$
    – AhmedH2O
    Dec 29, 2023 at 14:24
  • \$\begingroup\$ 1 synchronous FET would have max dissipation of 145W which is too high. Since max dissipation in sync FETs occurs at 66% duty cycle and main FETs at 100% duty cycle, they don't heat at the same time. If you size the heat sink for just the main FETs, with 4 sync FETs you don't need a larger heat sink. -> pastebin.com/D9zRMDBB \$\endgroup\$
    – bobflux
    Dec 29, 2023 at 18:16
  • \$\begingroup\$ I really appreciate the code that plots the curves, I would really appreciate if you could point me to any study material discussing the switching losses. \$\endgroup\$
    – AhmedH2O
    Jan 2 at 14:44

First, here's a quick reference for your application as it stands: https://www.ti.com/lit/ab/slpa020/slpa020.pdf?ts=1703778632072&ref_url=https%253A%252F%252Fwww.google.com%252F

Your approach can work. But a few points worth mentioning. You might want to lower the switching frequency to as low as possible (say 2kHz - 10kHz). The magnitude of a forklift motor can handle the low switching frequency and this will dramatically cut down on switching losses in the MOSFETS. The tradeoff will be a characteristic whining sound from the motor; you can up the switching frequency if this is an issue at the expense of worse thermal performance. You are also going to want to make sure the MOSFETS are tightly thermally coupled on the same heatsink for optimal load balancing.

You are also going to need a rectifier for the freewheeling current when the MOSFETS switch off. This will incur a thermal penalty on the design. A better approach would be to use synchronous rectification to mitigate this issue - a half-bridge topology with a bootstrap high-side driver. This will be a bit more complicated but might be worth it. If you need 100% duty cycle, using this topology gets even more complicated (but not unreasonable) and may very well be worth the effort. Another idea would be to use an IGBT module that is designed to handle 100's of amps and includes the freewheeling diode. All you would need is a suitable IGBT driver betweeen the micro and the IGBT. This is also the easiest method from an assembly standpoint - much better than mounting an array of 30 TO-220 packages.

  • 1
    \$\begingroup\$ Might want to tell him where this freewheeling diode should go...too many do not understand how the freewheeling diodes in an H-bridge work and so also put it across the MOSFET in a low side driver like the OP's circuit so that it looks the same, but it's not. \$\endgroup\$
    – DKNguyen
    Dec 28, 2023 at 16:09
  • 1
    \$\begingroup\$ Right. The free-wheeling diode gets installed reverse-biased across the DC motor. NOT the transistor(s). \$\endgroup\$
    – MOSFET
    Dec 28, 2023 at 16:15
  • \$\begingroup\$ I forgot to mention the diode I was planing on taking the back emf from the inductors and using it to implement a regenerative breaking by charging a capacitor and then a charging circuit will utilize this power. For the frequency I decided on above 30khz for lowering the noise I also got higher since I saw a video mentioning lower current delivery at lower frequencies. I also though about using the MOSFET in high side but it got too complicated with the bootstraping and I didnt think it had any advantage but I might be wrong thanks for the ideas Im going to read them until I really get them. \$\endgroup\$
    – AhmedH2O
    Dec 28, 2023 at 16:15
  • 1
    \$\begingroup\$ Another potential complication is ensuring the 12 paralleled MOSFETs share current "evenly". \$\endgroup\$ Dec 28, 2023 at 16:16
  • \$\begingroup\$ "... to implement a regenerative breaking ..." You don't want it breaking. You want it braking! \$\endgroup\$
    – Transistor
    Dec 29, 2023 at 18:50

You want a separate gate resistor at each MOSFET gate closest to the MOSFET to prevent ringing between the MOSFET and the gate driver, as well as between MOSFETs. A single shared gate resistor will not protect against the latter.

I think 51 Ohms is also too high, especially 70kHz with such large MOSFETs. Start with 1-5 Ohms per MOSFET,

Your heat calculation is also neglecting switching losses. Switching produces losses and switching at high frequency produces even more. They are significant at 70kHz. It is a trickier calculation though. Ideally you want switching and conduction losses to be equal so you can double your number as a crude, optimistic estimate, but it will be likely too low if you did not size things properly.

In your calculation, did you account for increased RDson at higher die temperatures? At max operating temperature, it is typically 1.5x-2.5x room temperature RDson. It is a little curve in the datasheet.

  • \$\begingroup\$ I actually didnt plan on the rdson increasing much i thought the increase would be good to balance the paralleled mosfets, however I didnt know about switching losess i didnt think there is losses, do you mean the losses in the charge of the gate or their are other losses \$\endgroup\$
    – AhmedH2O
    Dec 28, 2023 at 18:00
  • \$\begingroup\$ @AhmedH2O Switching losses are when the MOSFET transition between conducting and non-conducting states. High resistance but no current (i.e. not conducting) = low losses. Low resistance but high current (i.e. conducting) = low losses. But moderate resistance with moderate currents (transitioning) = high losses. Just like a regular resistor. Those are switching losses. That's why a MOSFET burns out almost instantly if it is not conducting enough, and you are sending the MOSFET into that partially conducting state every time you switch it. Insignificant heat for simple on/off, but for PWM... \$\endgroup\$
    – DKNguyen
    Dec 28, 2023 at 18:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.