I do a lot of motor speed control using PWM. Generally, you should choose a PWM frequency above human hearing (>20KHz). This guarantees that you won't create any growls, squeals or other noises.
Also, a lot of motors don't like the chopped DC that PWM produces (this is especially true of the brushless types). In that case, you need to provide a storage inductor and a filtering capacitor to smooth the output. By properly choosing the components, you can wind up with a signal to the motor that is a varying DC voltage with only tens of millivolts of ripple. The higher the PWM frequency, the smaller the inductor needs to be. I generally use 78KHz as the minimum frequency.
Generally, the topology you will want to use is called a "buck" regulator. An excellent tutorial, as well as component selection guides can be found on the National Semiconductor website.
I realize that such frequencies generally eliminates the possibility of using software PWM, but such an approach is necessary for serious use. As an example, one of my designs uses one PWM channel of an 18F8722, and smoothly controls a 25A at 48V brushless motor (over 1HP).




Bookmarks