Usando PWM (Pulse with Modulation).
Casi todos los que lean este post, habrán hecho en algún momento, un proyecto para prender un led o accionar un motor mediante un microcontrolador o por medio de cualquier otro circuito.
Pero que sucede si queremos controlar la luminosidad del led que estamos encenciendo o deseamos regular la velocidad del motor?.
Pudiéramos pensar que si prendemos y apagamos la señal de alimentación de la carga (led o motor) lo suficientemente rápido como para que el parpadeo no se note, podríamos “simular” la variación de luminosidad de un led o el cambio en la velocidad del motor:
Esto funciona siempre y cuando no hagamos este “switcheo” más allá de 30 veces por segundo. A partir de allí. El "blink" del led se empezará a notar y El ojo humano captará ese parpadeo. En el caso de un motor, éste se moverá en una forma pulsante.
La idea general del PWM es esta, solo que soluciona este problema de tiempo.
La forma de lograrlo es dejar el pulso fijo en el tiempo y variar su amplitud.
Supongamos que logramos ajustar el período T a su valor óptimo mínimo en el cual un led no parpadee y un motor no salte.
Esto es aproximadamente a una frecuencia de 30 pulsos o ciclos por segundos para el caso de un led. En el caso del motor habrá que determinarlo empíricamente ya que depende de sus características eléctricas y mecánicas,
Volviendo al led, quiere decir que trabajamos con un período de tiempo de:
f= 30 cps ==> T=1/f ==> T=1/30 ==> T= 0.0333 s ==> T=33.3 ms
El esquema anterior representa un pulso con un “duty cycle” o ciclo de servicio igual al 50% es decir, la mitad del período está a 0 y la otra mitad está a Vcc.
Lo que se hace con PWM es variar dinámicamente el “duty cycle” de manera que el tiempo de alta disminuya o aumente y en proporción inversa, el de baja aumente o disminuya dependiendo de si queremos una led más atenuado o más brillante, o un motor más lento o más rápido, respectivamente.
LED MENOS ILUMINADO
LED MAS ILUMINADO
Recuerden que este período se repite constantemente en el tiempo:
De esta forma tenemos 2 formulitas muy sencillas para el cálculo de los tiempos:
1) Si variamos, fijamos o controlamos t alta entonces: t baja= T- t alta
2) Si variamos, fijamos o controlamos t baja entonces: t alta= T- t baja
Y el ciclo de servicio o “Duty Cycle” lo calculamos así:
DT= t alta / (t alta + t baja)
En una próxima entrega codificaremos esto en Assembler para PIC.
Saludos,
Marcelo.
Casi todos los que lean este post, habrán hecho en algún momento, un proyecto para prender un led o accionar un motor mediante un microcontrolador o por medio de cualquier otro circuito.
Pero que sucede si queremos controlar la luminosidad del led que estamos encenciendo o deseamos regular la velocidad del motor?.
Pudiéramos pensar que si prendemos y apagamos la señal de alimentación de la carga (led o motor) lo suficientemente rápido como para que el parpadeo no se note, podríamos “simular” la variación de luminosidad de un led o el cambio en la velocidad del motor:

Esto funciona siempre y cuando no hagamos este “switcheo” más allá de 30 veces por segundo. A partir de allí. El "blink" del led se empezará a notar y El ojo humano captará ese parpadeo. En el caso de un motor, éste se moverá en una forma pulsante.
La idea general del PWM es esta, solo que soluciona este problema de tiempo.
La forma de lograrlo es dejar el pulso fijo en el tiempo y variar su amplitud.
Supongamos que logramos ajustar el período T a su valor óptimo mínimo en el cual un led no parpadee y un motor no salte.
Esto es aproximadamente a una frecuencia de 30 pulsos o ciclos por segundos para el caso de un led. En el caso del motor habrá que determinarlo empíricamente ya que depende de sus características eléctricas y mecánicas,
Volviendo al led, quiere decir que trabajamos con un período de tiempo de:
f= 30 cps ==> T=1/f ==> T=1/30 ==> T= 0.0333 s ==> T=33.3 ms

El esquema anterior representa un pulso con un “duty cycle” o ciclo de servicio igual al 50% es decir, la mitad del período está a 0 y la otra mitad está a Vcc.
Lo que se hace con PWM es variar dinámicamente el “duty cycle” de manera que el tiempo de alta disminuya o aumente y en proporción inversa, el de baja aumente o disminuya dependiendo de si queremos una led más atenuado o más brillante, o un motor más lento o más rápido, respectivamente.

LED MENOS ILUMINADO

LED MAS ILUMINADO
Recuerden que este período se repite constantemente en el tiempo:

De esta forma tenemos 2 formulitas muy sencillas para el cálculo de los tiempos:
1) Si variamos, fijamos o controlamos t alta entonces: t baja= T- t alta
2) Si variamos, fijamos o controlamos t baja entonces: t alta= T- t baja
Y el ciclo de servicio o “Duty Cycle” lo calculamos así:
DT= t alta / (t alta + t baja)
En una próxima entrega codificaremos esto en Assembler para PIC.
Saludos,
Marcelo.