domingo, setembro 30, 2007

PWM - Utilizando 89S52

What's PWM ?

Pulse-width modulation control works by switching the power supplied to the motor on and off very rapidly. The DC voltage is converted to a square-wave signal, alternating between fully on (nearly 12V) and zero, giving the motor a series of power "kicks".

If the switching frequency is high enough, the motor runs at a steady speed due to its fly-wheel momentum.

By adjusting the duty cycle of the signal (modulating the width of the pulse, hence the 'PWM') ie, the time fraction it is "on", the average power can be varied, and hence the motor speed.

Advantages are,
  1. The output transistor is either on or off, not partly on as with normal regulation, so less power is wasted as heat and smaller heat-sinks can be used.
  2. With a suitable circuit there is little voltage loss across the output transistor, so the top end of the control range gets nearer to the supply voltage than linear regulator circuits.
  3. The full-power pulsing action will run fans at a much lower speed than an equivalent steady voltage.


  1. Without adding extra circuitry, any fan speed signal is lost, as the fan electronics' power supply is no longer continuous.
  2. The 12V "kicks" may be audible if the fan is not well-mounted, especially at low revs. A clicking or growling vibration at PWM frequency can be amplified by case panels. A way of overcoming this by "blunting" the square-wave pulse is described in Application Note #58 from Telcom. (a 58k pdf file, right-click to download). I've tried this, it works, but some of advantage #3 is lost.
  3. Some authorities claim the pulsed power puts more stress on the fan bearings and windings, shortening its life.
AT89s52 Keil Source Code - 2 PWM's - Output in pin's P1_0 (left motor) & P1_1 (right motor)

3 comentários:

Engenharia disse...

Amigo, vc teria a rotina em assembly para postar novamente? Creio que será util no meu projeto..
Obrigado desde já...

Marsolla disse...

Olá amigo, infelizmente não tenho mais o código, e ele estava em C. Este foi um projeto que fiz a 2 anos atras, fico devendo essa.

Anônimo disse...

Amigo, por gentileza vc teria o esquema ou a programação em "C" desse cicuito? achei interessante, ja até programei o meu 8252 pra fazer isso, mas não esta funcionando muito bem, gostaria de mesclar o seu programa com o meu. Obrigado! Aguardo....