Martin is correct. Too low a PWM frequency is bad. Too high a PWM frequency is also bad. If the PWM frequency is so low that the PWM doesn't average out electrically (i.e., if the current goes up and down significantly during each PWM cycle), then the resistive losses are higher, the magnetic hysteresis losses are higher (in the motor), and you get physical torque ripple which may cause vibration in your system and will also be audible and annoying. The relevant number here is the RL circuit time constant of the motor. This equals L/R, in seconds. So, for example, if your motor has 500 microHenries of inductance and 0.2 ohm resistance, then L/R=0.0005/0.2=2.5 milliseconds. You will want your PWM period to be roughly at least 10 times less than this, say 250 microseconds, which is 4kHz. If the PWM frequency is too high, then you get higher switching losses in your FET or FETs. You also have a higher frequency ripple which your battery-side wiring and capacitors must deal with. In your case, I'd think it unlikely that the switching losses would begin to be significant below about 20kHz. To know for sure, you need to do the kind of analysis which I tried (very roughly) to explain a few days ago. You look at how long your FETs take to turn on and off, as well as the resistive losses in the FETs. You then compare the switching loss to the resistive (I^2*R) losses. The switching losses should be about 10% to 25% of your total loss in the FETs. (If they are too low, you aren't switching fast enough and likely have too much motor ripple current. If they are too high, it is wasteful and if over 50%, you may get special thermal runaway problems, especially if paralleling FETs) Note that simply turning the FETs on and off VERY fast is not always the answer as it makes tiny inductances in the circuit very critical. As an example, I designed a very high performance motor driver recently which can do about 60 Amps continuous at a 48V bus voltage. It's FETs switch on and off in about 150 nanoseconds and the switching losses are still about 30% of the total loss! Going from -60 to +60 Amps in 150 nanoseconds is 800 million amps per second! At this dI/dt, a 10 nanoHenry PCB trace has an inductive voltage drop of 8 Volts! If that 8 Volts shows up in the wrong place (like between two ground pins on an IC or between the gate-drive power supply ground and the motor ground), it can destroy ICs by latchup or accidentally boosting the gate drive over the max Vgs of the FETs. The simple way to deal with this is to keep to a more reasonable turn on/turn off time (say 500 nanosec to 1 microsec) and accept the higher losses (and in this case, it would make sense to use FETs with a higher Rds_on), but because of the performance required for this PCB, I had to push the limits and take every high current path inductance into account as best as I can. Sean On Sun, Aug 9, 2009 at 7:11 PM, M.L. wrote: > On Fri, Aug 7, 2009 at 1:50 PM, Chris Loper wrote: >> PWM >> >>> When you are doing PWM and switching the FET on and off thousands of times per second, ... >> >> Mine operates at 500hz right now. >> It looks to me that the switching loss is directly (linearly) related to the PWM frequency. >> I don't think the possible hum will be an issue in a go-cart, so >> I'm planning to keep the PWM frequency low unless there is a good reason to increase it. >> >> > > This is too slow. The inductance of your permanent magnet motor is > very low. When the MOSFET is ON, the current rises linearly by i(t) = > v * t / L. So if 't' is large then you have high a very high maximum > current. > > If you switch at perhaps >5kHz then the ripple current will be smaller > and your motor, wires, batteries, transistors, capacitors will all > operate cooler because the peak current level will be lower. > -- > Martin K. > -- > http://www.piclist.com PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist > -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist