Mosfet capacitance?

I'm trying to select a suitable mosfet for a variety of tasks. I want one which can handle as much current as possible, but I want to keep my board small too. Typically I'd just choose one with a high continuous current rating and calculate the power dissipation, but one of the things I want to use this for is to PWM a small 12v motor at up to 46,875Hz. The motor would draw around 150mA at most I think.

I've been trying to figure out how to calculate how much heat is going to be generated switching a logic level mosfet with 3.3v and around 9mA of current.

I've been looking at several on Digikey:
http://www.digikey.com/short/z8qnr

And when sorting by price, I found this one stood out with an awfully high continuous current rating:

Seems to good to be true, so there must be some catch but I have yet to spot it.

Anyway, I've hit a bit of a road block. I believe the gate charge time will allow me to calculate how much time the mosfet is going to spend not fully on or off, but the rating is in "nC". Nano charge? What the heck is that? Is that just another word for farads? I've looked everywhere and it does seem to be nano-charge but I can't find any explanation of what this charge unit is.

The C stands for Coulombs which may be defined in terms of Amp-Seconds or Farad-Volts

scswift:
but I can't find any explanation of what this charge unit is.

You could have googled "unit of charge" or gone straight to the Wikipedia article
on electric charge...

One coulomb (symbol C) is the charge carried by a current of one amp passing
for one second.

So a nC is the charge passed by a current of 1mA for 1us, or 1uA for 1ms, or
1A for 1ns (for instance).

For a MOSFET you want the total gate charge figure, divide that by the gate current
to find the approximate time to charge up the gate and switch the device.

If you want to PWM fast, you'll need gate currents of the order 100mA+ BTW,
anything less and its likely you'll here pop (blown MOSFET). For this you use
a gate driver chip - they do exactly what they say on the tin.

Switching losses go up as the PWM frequency times the switching time, so you need
minimum switching time, which means something like 100ns, in order to reduce
the percentage of time the device is switching and dissipating. And which high speed
switching you have to pay attention to interference and use correct cabling and
layout and decoupling.

For your miniscule load of 150mA a lot of this scales right down though, 30mA
may be enough gate drive, but for anyone else wanting to build a more powerful
motor PWM switch, it will matter more.

Oh yes, choose a MOSFET with a Vds that's only about twice your supply voltage,
the lower Vds, the less gate capacitance and lower Rds(on), all else being equal.

If you want to PWM fast, you'll need gate currents of the order 100mA+

I'm using a Teensy 3.1 for this project, so I'm limited to 9mA @ 3.3v. If that's insufficient to switch my mosfet at the PWM speeds I desire I may as well go for a full h-bridge driver, it would be easier to implement and take up just as much space on the PCB. I already have one in mind which handles 44khz PWM just fine.

That said, here is one of the FETs I was looking at:

This one supposedly can handle a lot of current. And I notice that it requires a significantly higher gate charge than a lot of other FETs here:
http://www.digikey.com/short/z8qnr

So, it should switch more slowly than those, right?

But I've done the calculations, and while I don't know how the lower voltage affects the charge rating my calculations seem to indicate this one would switch so fast that 46khz should not be a problem.

The rating for this FET is 6.8nC @ 4.5v. That's 0.0000000068C. My current is 9mA which is 0.009A.

0.0000000068C / 0.009A = 0.00000075 s

And 1s / 46,875Hz = 0.000021 s

0.000021 s / 0.00000075 s = 28.4

So this FET ought to switch 24x faster than my PWM speed. If I were supplying 9mA @ 4.5v

Of course we're not switching a 4.5v we're switching at 3.3v. 3.3v / 4.5v = 0.73, which multiplied by 28.4 gives 20.8. So if my hunch is correct, even at 3.3v it will still switch 20x faster than my PWM speed.

And my intuition tells me that if it's switching 20x faster than it needs to then it will only be in the bad state 1/20th of the time., and that this should not be so long to cause it to pop. At least if my current is below its max current rating by at least 80%.

Am I in the ballpark here or am I way off?

I can reduce the PWM speed to 22khz if I have to. I haven't noticed the motor making noise at either 22khz or 44khz.

Thanks for all the links, but what is your motor ?
Why would you want 22kHz or 44kHz for the motor ? The default Arduino PWM frequency is around 500Hz.
I doubt if the motor coils act different above 5kHz.

You also need a 100 ohm resistor to the gate to protect the ATmega chip for current peaks. That will slow down the switching of the mosfet and it gets hotter.

The special mosfet gate driver chips are designed to accept logic signals and pump a whole lot of current into the gate. But at 22kHz or 44kHz they do nothing else than wasting current by trying to keep up with the frequency.

Can you use transistors ?
Or reduce the frequency to a few kHz or less ?

Some demanding applications for higher power mosfet applications (with lots of gate charge to deal with) is the use of purpose designed MOSFET gate driver ICs. These can provide several amps of gate drive and can have impressive switching transition specifications. I've seen some packaged in 8 pin packages providing two independent drivers.

Thanks for all the links, but what is your motor ?

I would like to use this board for a number of different projects, so I don't have a specific motor, but one I was testing the h-bridge driver I mentioned with was this one:
http://www.aliexpress.com/store/product/Zgb37-dc-gear-motor-zytd520-motor-eccentric-shaft-37mm-24v200r-min/202210_852537734.html

That one requires around 1A.

I would also like to drive this vibration motor:
https://catalog.precisionmicrodrives.com/order-parts/product/324-401-24mm-vibration-motor-13mm-type

That requires around 150mA.

Why would you want 22kHz or 44kHz for the motor ? The default Arduino PWM frequency is around 500Hz.
I doubt if the motor coils act different above 5kHz.

If you use a low PWM frequency then the motor will make noise. You will hear the coils resonating at the chosen frequency. 22khz and 44khz are ultrasonic... beyond the range of frequencies you can hear, so the motor will run quietly.

You also need a 100 ohm resistor to the gate to protect the ATmega chip for current peaks. That will slow down the switching of the mosfet and it gets hotter.

Yes, that's why I said the gate would be driven with 9mA. I'd have a resistor on there to limit the current to that.

Can you use transistors?

A mosfet is a transistor. Are you saying you think a BJT would work better?

I don't know if they have any special gate driver circuitry in them, but I'm using logic level mosfets. I haven't used BJTs, and I don't know all their idiosyncrasies. Using logic level mosfets makes things simple. Well, simpler.

I found this interesting presentation which explains mosfets in great detail while being fairly easy to follow:
http://www.fairchildsemi.com/Assets/zSystem/documents/collateral/onlineSeminars/Understanding-Modern-Power-MOSFETs-PPT.pdf

On page 28, slide 56... I'm not sure how to use the equation there.

Pd = ((Vin * Iout) / 2) * Fsw * ???

That first bit seems easy enough.

(12v * 1A) / 2) * 46,875hz = 281250

But then the rest of the stuff on the right...

I think Idriver should be 9mA, so I input .009 for that.
And Qgs2 isn't on my datasheet, but Qgs is. I guess I can substitute that though it will be a bit higher. So that's 0.3nC.
And Qgd is 2.4nC...

(I'm getting all these values from here: http://www.irf.com/product-info/datasheets/data/irlml6344pbf.pdf)

But after I add Qgs and Qgd... Should I divide them by 1,000,000,000 to convert to C? Or leave them as nC?

If I don't divide them I get (2.7 / .009) = 300. Double it, and the final result for Pd is 168750000 so that must be nW? If I do divide them I get 0.0000003. Then if I double that, and plug it in, I get Pd = 0.16875. So that must be watts?

It seems low-ish... but maybe it's right? 12v * 1A is only 12W to begin with.

At the sort of frequencies you're talking about the motor winding inductance will inhibit current flow so the available power will only be a fraction of it's rating.

There is no need to go ultrasonic. I'm sorry to say, but it is not a good idea.
Why don't you start with the Arduino default 500Hz, and buy a bunch of motors to see if they make noise.
If you hear noise, you can try 2khz, or 4khz.

One of those motors is a geared motor, I think a high PWM frequency is not needed at all for that one.

I doubt if the vibrating motor needs a speed control. I have tried that myself and it didn't work very well.

The geared motor is the one I've been testing the most with, and it makes an annoying whining sound at the PWM frequency at anything but ultrasonic frequencies.

Okay, well I guess I have not had such a motor in my hands yet.
Using normal BJT transistors would it make easier at very high frequencies, without the large amount of current peaks and waste of current due to the gate capacitance of a mosfet.

I just found this post in another thread:
http://forum.arduino.cc/index.php?topic=135119.msg1016284#msg1016284

I tried to do the calculations...

The gate voltage I think is 0.8v for this mosfet, and the "driver" voltage I assume is the 3.3v from my pin. That gave a difference of 2.5v and 0.8v for on and off.

Rather than divide this by the gate resistor, which I didn't know the value for, I divided it by the 9mA max current I wanted the pin to source. That gave me 278 ohms and 89 ohms. So I went with 300 ohms, though 270 would probably have been safe.

That then gave me two different gate currents. 83mA and 26mA.

And with the gate charge of 6.8nC, I got swithcing times of .000000819s and .00000265s. I averaged these to get .0000017345s.

Then, since my load is inductive I used this equation:
0.5 * voltage * current * switching_time

Which using 12v and 1A, gave me .000010407

Finally I multiplied by 2x my switching frequency of 47khz, and got .978W, which seems like a sane result, and it seems to be within tolerances for the mosfet I was doing the calculations for:

Of course I have no idea if this is actually right.

If it is though, then presumably if I dropped the PWM frequency to half that it would still be ultrasonic and I could handle up to 2A of current. I'd be pretty happy with that.

[edit]

Of course why settle for 2A?

This mosfet has half the gate charge. That translates to faster switching times and half the power dissipated right? So if my calculations above are correct, and that other FET could handle 2A at 23khz then this one ought to handle 4A. It's rated for a little over 4A too. The Rds is a bit higher but I guess that's why the current rating is lower?

Caltoa:
Okay, well I guess I have not had such a motor in my hands yet.
Using normal BJT transistors would it make easier at very high frequencies, without the large amount of current peaks and waste of current due to the gate capacitance of a mosfet.

Really? Show me a datasheet for a BJT that can switch 10A in 100ns please...

[ update: best I've found is 2SC5707 which can handle 8A and has 420ns storage time at
2.5A - compare, for instance, with AUIRFR1010Z MOSFET, <100ns switching times for 42A ]

Perhaps you would care to explain how a power BJT with a base current of 0.1 Ic doesn't
waste 10% of the current and then calculate the gate driver average current for a 10nC
load switched at 100kHz at 10V? (Hint: 10mA)

jackrae:
At the sort of frequencies you're talking about the motor winding inductance will inhibit current flow so the available power will only be a fraction of it's rating.

Inductance inhibits change in current, over-fast PWM will work fine, but you have
somewhat more iron losses, that's all.

MarkT, the motor is 12V 150mA.
But if a mosfet is used at very high frequencies, the gate capacitance requires high current pulses.
Now that I think of it, I have a Class D audio amplifier that uses mosfets at 500kHz. So there must be mosfets out there that can handle such frequencies.

One of the motors is 150mA, but another larger motor I need to drive requires 1A.

I'm trying to design a board that's flexible. I could use a motor controller but I was hoping I wouldn't have to dedicate some outputs to a motor. I guess it would be beneficial to have a motor controller though, seeing as it would allow for braking and reverse. But I have yet to find a motor controller I like which is small and can handle a wide enough voltage range. I'd like to be able to run the boards off 3 or 4 AA's (4.5-6v), or 2-4 LiPo cells (7.2v-14.4v). Found some that can do 8-36v, and some which can do 4.5-11v but none I like yet which are in the sweet spot.

And even if I ultimately did go for a motor controller, I still need some mosfets on the board to PWM some 12v LED bulbs, so I may as well learn what all these parameters mean so I can choose the best one for the job.

Not a motor driver per se, but I found this interesting chip:

It's a low side driver with 7 inputs and 7 outputs. Each output is capable of sinking up to 16V and 140mA @ 5V logic input, or 100mA @ 3.3v logic. There are built in flyback diodes as well, so it's great for driving small motors and relays. Outputs can be paralleled too, so you could combine two to get 280mA sink capability.

Not sure if it can be PWM'd at high frequency though. Says 140ns to switch low which indicated a max switching speed of 7mhz, but there's a 3K resistor on the input and if I what I've learned about mosfets recently is correct that would limit the gate current and slow the switching speed drastically, and I had calculated at 3.3v that a 300ohm resistor would supply 9mA to a particular mosfet and that would only be 20x my desired 47khz switching speed in that example which would likely still generate a fair amount of heat. So a 3K would presunably only allow me to switch around 2x 47khz or 94khz.

So I don't know which calculation is correct, but the Arduino's standard 490hz PWM would be no problem I'm sure.