I've made up a 112A brushed motor driver, and after detonating a few freewheeling diodes, I made a matching active freewheel driver for the motor to reduce the power dissipated, however i am left with how to drive the pair without causing some fun if they both turn on at the same time,
I see that most cheap micro's have a feature called "phase correct PWM" and to me it sounds like if I inverted one pin, and made the freewheel a few counts higher than the main PWM, it should always respect the dead time in hardware, Am i on the right track, or am i going to release some more smoke?
called phase-correct PWM. In this mode, the timer counts from 0 to 255 and then back down to 0. The output turns off as the timer hits the output compare register value on the way up, and turns back on as the timer hits the output compare register value on the way down. The result is a more symmetrical output. The output frequency will be approximately half of the value for fast PWM mode, because the timer runs both up and down.
And just to cover any kind of X / Y problems, attached is my schematic, the parts are what i had on hand, and i would think its overkill, but i could be wrong
How about using a H bridge and let the motor dump the energy back into the supply or something like that? A freewheeling diode basically shorts the motor so no wonder it explodes and causes the motor to heat up.
How about using a H bridge and let the motor dump the energy back into the supply or something like that? A freewheeling diode basically shorts the motor so no wonder it explodes and causes the motor to heat up.
A freewheeling diode only shorts the motor winding as long as current is flowing due to the inductance of the winding (typically a few miliseconds). When the current is zero the diode stops conducting and the voltage goes negative because of the back-EMF. When the freewheeling diode explodes, the current was too high or the diode too slow.
A H-bridge is only neccessary if you want to reverse the motor. Otherwise a half bridge is fine. Its frequency must be high enough (>1kHz) otherwise the back-EMF generates a high negative current in the freewheeling mosfet.
I would reduce R7/R8 quite a lot (1k) to speed up switching. Otherwise turn off will be delayed for quite some time (>1us), requiring a huge deadtime. I would also replace Q5/6/7/8 with something less powerfull for faster switching (BC547/557/337/327). R13/14 are probably not necessary, also R9/11.
The body diode of the freewheeling mosfets is made of many thousands of cells in parallel. If just one of these cells has slow reverse recovery you will pop it and the mosfet will be short circuit. Much simpler and easier at this low voltage level to use a Schottky diode with a suitable current rating.
The IRF1405 is rated for 20V
absolute maximum between Gate and Source. You are driving it with 20V. This is not a good idea.
Rather than trying to 'roll your own' gate drivers, I would use a half-bridge driver IC such as the IR2103. This uses a bootstrap circuit to provide the correct Gate drive without needing a high voltage supply.
if I inverted one pin, and made the freewheel a few counts higher than the main PWM, it should always respect the dead time in hardware, Am i on the right track
You are on the right track - just make sure that there is sufficient deadband to ensure that each FET is fully off before the other one turns on (and
no chance of both being turned on at once at startup or during a software failure!).
The upper FET has a body diode that covers the deadband gap during freewheeling, but you could also add an external Schottky diode to reduce stress on the FET and improve efficiency.
...a 112A brushed motor driver
In your circuit there is only one FET switching power to the motor. But the IRF1405 is only rated for 75A max. This not a 112A motor driver. 20A would be a more realistic rating.
You can't do pwm 100 Amps in a to-220.
Buy an IGBT or Mosfet module that you mount on a proper heatsink. See
Semikron semitop for example.
You'll need ~3x overspec with natural convection. Maybe 2 with forced convection.
You can't do pwm 100 Amps in a to-220.
Sure you can - just need to put a few of them in parallel.
Buy an IGBT or Mosfet module that you mount on a proper heatsink.
IGBTs have higher voltage drop, which makes them less suitable for low voltage applications. Any module that can handle over 100A is likely to be more expensive than a few paralleled FETs - and a
lot more expensive when you start blowing them up!
You'll need ~3x overspec with natural convection. Maybe 2 with forced convection.
Agreed, or better yet ignore the ratings and choose devices with lower loss so they don't get hot.
My 'rule of thumb' for low voltage motor controllers is to keep voltage drop below 0.1V using low RDSon devices (in parallel if necessary) in packages that can stay cool without oversized heat sinks. That way I get high efficiency, great overload capability, excellent reliability and a compact layout. I would rather put 4 FETs in parallel than one FET with a massive heatsink and forced air cooling.
A few of those uC also have what's called a "dead band generator", that you can use to set how much time goes after one signal goes down and its complementary goes up and vice-versa. Phase correct PWM isn't related to this, it has other properties.
2 end-stages with power BJTs to drive that MOS looks overkill to me. Knowing how many A are you switching, in how much time do you want to switch and at what PWM frequency may shed some light on the choices. In your circuit you're most probably missing power supply capacitance. And maybe motor current limiting.
To clarify, 112A stall current, so just needed something that would survive the stall, while running its closer to 33A,
The PWM frequency is 16Khz,
The 2 stage transistor stage was to limit the idle power draw, while trying to get the most out of the transistors without exceeding there base current spec (thats why the 220 Ohm resistor),
I agree a dedicated driver would have done a far nicer job, but i wanted to build one then and there, and those where what i had on hand, (didnt want the project to die while waiting until next weekend)
The PNP pullup suggestion helped greatly, now the heating is mostly gone, I found a 400A (peak) diode bridge that i am currently using as freewheeling diode while i tweak in the active driver, (vf is slightly less than the mosfet)
I reduced the gate driver to 19.6V, and everything still seems fine, it has a small power supply for that rail located on the same PCB.
Sadly the micros i have on hand make no mention of a deadband feature in the PWM, would you have some example models?
The supply capacitance is 120uF, Its a 12V 180A switchmode power supply with current foldback (Solar battery bank charger that i salvaged)
Ew, cascaded emitter followers... and what's up with the funky mismatched resistors?
A good driver doesn't need to "fix it in software"; this might work, for instance.
Tim
To clarify, 112A stall current, so just needed something that would survive the stall, while running its closer to 33A,
That's a reason to have current limiting. How much time do you have to handle 112A, and how much time will your controller handle it? Also, when you'r PWM'ing 112A, unless the switching times are slow (say > 1us) you'll see huge transient inductive spikes at nodes in the power stage, which can destroy your FETs.
Sadly the micros i have on hand make no mention of a deadband feature in the PWM, would you have some example models?
ATiny25/45/85. It's actually called "dead time generator", sorry.
That's a reason to have current limiting. How much time do you have to handle 112A, and how much time will your controller handle it? Also, when you'r PWM'ing 112A, unless the switching times are slow (say > 1us) you'll see huge transient inductive spikes at nodes in the power stage, which can destroy your FETs.
Ding.
If you had designed the controller, from the start, to be
current mode controlled, such a situation would be
manifestly impossible, because there is no such thing as overcurrent, to a current mode controller: it simply delivers whatever current it is commanded to!
Or if you did, but you designed it so that the input range exceeds the capability of the rest of the circuit, well, that's your own fault...
Tim