sábado, 25 de diciembre de 2010

PWM: Una manera sencilla de controlar un nivel de tensión

En muchos casos se necesita hacer un control preciso de la tensión analógica. Por ejemplo, en el caso de un motor de contínua, la velocidad de giro es directamente proporcional a una tensión (o voltaje) aplicado.

Desde un dispositivo digital, como pueda ser un microcontrolador, no es sencillo el obtener un nivel de tensión analógico preciso. Es necesario de la utilización de dispositivos DAC, que convierten codificaciones digitales en niveles de tensión dentro de un rango.

Además la precisión alcanzada no es del todo aceptable en casos de un microcontrolador de 8 bits. Por ejemplo, si necesitamos reproducir una señal con un rango de valores de 5V, con una precisión de 8 bits, podemos tener 256 niveles diferentes de entre 0 y 5 V, o lo que es lo mismo, saltos mínimos de 5/256= 19.5 mV. El aspecto de esta señal presentará escalones como mínimo de incrementos o decrementos de 19.5mV.




El PWM, o modulación por anchura de pulsos, permite el uso de señales de dos niveles (pulsos que conmutan por ejemplo de o a 5V) para conformar ondas de cualquier aspecto de entre 0 y 5 voltios y solucionar en parte el problema de la poca precisión explicada anteriormente. El aspecto se consigue añadiendo un pequeño filtro paso bajo.

Si generamos una señal cuadrada (pulsos de duración determinada que conmutan de 0 a 5V) éstos tendrán un nivel de tensión continua que será el valor medio de los niveles. Es fácil de comprender: si tenemos durante un segundo la señal a 5 voltios y durante otro segundo 0 voltios, el nivel medio en 2 segunsdos habrá sido de 2.5 V exactos. Esto es lo que se consigue con el filtro pasobajo sobre la señal, que provoca destruir la señal con frecuencia alta, la pulsante, quedandose exclusivamente con la señal media.

Si esto lo extrapolamos a frecuencias mucho mas rápidas, del orden de decenas de kiloherzios o centenas de kilohercios podremos ir conformando señales con niveles de tensión variable, ajustando la duración del tiempo en el que esa señal permance a nivel alto, o lo que se denomina el ciclo de trabajo.


En el ejemplo explicado, el ciclo de trabajo era del 50%, puesto que la mitad de tiempo estaba a 5V y la mitad de tiempo a nivel bajo. Esto daba como resultado una señal de un 50% de nivel del máximo, los 2.5V. Si utilizamos una señal, por ejemplo, que esté el 70% a nivel alto, tendremos un nivel medio, tras el filtro, de 3.5V (0.70*5).

Por tanto, lo que se trata es de traducir el tanto por ciento del máximo de tensión que se quiere en tanto por ciento de duración de nivel alto de la señal cuadrada o pulsante. Esto se realiza sin cambiar la frecuencia de la señal consiguiendose un control sencillo del nivel de tensión.

Si por ejemplo, según la respuesta del filtro de la figura con una frecuencia de corte a 5khz, utilizamos una señal cuadrada de, por ejemplo 100 khz, esta señal quedará atenuada prácticamente al completo, pasando las componentes más bajas, que son exclusivamente las de 0 herzios, o las del la tensión media.


11 comentarios:

  1. Muy buena la explicación. Doa cuestiones:
    1.- Para construir, por ejemplo, una senoide mediante una señal PWM y un filtro paso bajo.. si la frecuencia de la señal deseada el muy grande también lo ha de ser la de la señal PWM pues de no serlo también existiría un problema de cuantización no?
    2.- Para alimentar a un motor de continua.. ¿Es necesario un control tan sensible?

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Ante la primera cuestión: El problema que surge con la reconstrucción fidedigna mediante PWM, es la necesidad de utilizar una señal PWM que al menos sea 10 veces más rápida que la señal anlógica a reproducir (en este caso, el seno).

    Según Nyquist, para reproducir una señal es imprescindible muestrearla a una frecuencia mayor que el doble de la componente frecuencial más alta. Si tenemos una señal menor que esta frontera, tendremos efecto aliasing.

    Ante la seguna precunta: todo es relativo: evidentemente si de ese motor no se utiliza reductora, y el margen de velocidades va de 0 a 3000 rpms con tensiones de 0 a 12V, a 6V tendríamos unas 1500rpms, pero el uso de 5.8V no provocaría cambios apreciables. Sin embargo, si se utiliza una reductora para un posicionamiento concreto, puede resultar relevante. En definitiva, como todo, depende del contexto o la aplicación

    ResponderEliminar
  4. Nyquist: O lo que es lo mismo, una muestra por semiperíodo¡ Pq 10 veces más rápida exactamente?

    Pablo, otra duda:
    En un micro standalone como el caso del DZ60... ¿Al no existir S.O, no se pueden implementar threats no? Entonces, si quiero que mi programa, a parte de hacer otras cosas, esté constantemente encendiendo un led, cómo lo hago?

    ResponderEliminar
  5. Exacatamente, Nyquist. Si reconstruyes a justo el doble de la frecuencia una señal senoidal, con una muestra por semiciclo, vas a obtener una señal que oscila siempre entre dos niveles fijos, pero la forma de onda va a ser una señal cuadrada, no senoidal, por eso el hecho de utilizar, al menos, una frecuencia 10 veces superior, para tener al menos 5 muestras por semiciclo y una reconstrucción de una señal con una forma semejante a la origianal.

    Para la otra cuestión: el uso de un temporizador con interrupción te permite hacer periodicamente el encendido y apagado del LED. En tu rutina principal controlas un flag que será modificado periódicamente por la interrupción temporizada. Cad vez que el ciclo de ejecución pase por la comprabación del estado del flag actuarás sobre el LED. Otra forma es realizar directamente la actuación sobre el LED en la propia rutina de atención de la interrupción temporizada.

    ResponderEliminar
  6. Ok, es lo que hice¡ Te puse unas dudas en el dropbox, échales un vistacín anda¡¡

    ResponderEliminar
  7. tengo un pwm con frecuencia de 10000khz para filtrarlo cual seria la frecuencia de corte?

    ResponderEliminar
    Respuestas
    1. Bueno. Perdona la tardanza en la respuesta. En una señal PWM se transporta una componente media de tensión. Si quieres filtrar completamente la frecuencia de la PWM el filtro para quedarte con la componente contínua, teóricamente el filtro a utiizar debería ser de frecuencia de corte de 0 hz y de pendiente infinita. Esto es fisicamente irrealizable, pero garantizaría que no tendrías ningun armónico (componentes con frecuencia diferente de 0). La utilización de un filtro RC para un filtro pasobajo es la opción más económica, aunque menos precisa. Con esto construirias un filtro de primer orden con 20db de pendiente por decada. Yo te recomendaría, que con un filtro de primer orden, se busque una frecuencia dos decadas por debajo, en este caso sería 100 hz. Aunque el condensador será mas grande, más pesado y más caro cuanto más pequeña busques la frecuencia de corte. Espero te haya servido

      Eliminar
  8. Hola... te hago una consulta, el PWM entrega una onda cuadrada (o rectangular) a la salida? O sea q solo lo podria utilizar para controlar la potencia de motores de CC? o los motores asincronos tambien se pueden controlar con PWM?

    ResponderEliminar
    Respuestas
    1. Lo habitual es el control de velocidad por frecuencia, pues estos motores giran a una velocidad proporcional a la frecuencia e inversamente proporcional a los polos que lo constituyen. Pero dadas sus características, el motor CA requiere la variación proporcional del voltaje cada vez que la frecuencia es variada. Por ejemplo, si un motor está diseñado para trabajar a 460 voltios a 60 Hz, el voltaje aplicado debe reducirse a 230 volts cuando la frecuencia es reducida a 30 Hz. Así la relación voltios/hertzios deben ser regulados en un valor constante (460/60 = 7.67 V/Hz en este caso). Para un funcionamiento óptimo, otros ajustes de voltaje son necesarios, pero nominalmente la constante es V/Hz es la regla general. Para este control de tensión es dón de se suele utilizar el PWM (además de variar el duty cycle de la onda cuadrada, se varía la frecuencia)

      Eliminar
  9. O sea en estricto rigor el filtro pasabajo va a atenuar todos los armonicos que esten fuera de el, y la señal pulsante pwm va a a estar conformada por distintos armonicos, los mas potentes son aquellos a la frecuencia propia de oscilacion, o sea que aunque borre todos esos armonicos de alta frecuencia aun asi quedan armonicos de baja potencia y de baja frecuencia, que en suma forman una señal media segun el ancho del pulso de la pwm, es eso correcto no?

    ResponderEliminar

Comentanos algo