Salida analógica mediante PWM y filtro paso bajo


arduino-filtro-paso-bajo-pwm

En esta entrada anterior vimos como emplear las salidas PWM para simular una salida analógica de tensión.

Sin embargo, dejamos bien claro que una salida PWM no es una señal analógica de tensión, sino una señal digital pulsada cuyo valor promedio es el valor deseado. Desconocer esto puede provocar comportamientos inesperados en los componentes que conectemos a la señal PWM, o incluso dañarlos.

Para que sirva de analogía, que un componente espere una señal analógica de tensión y reciba un PWM, es similar a pedir que nos den un suave masaje en la cabeza, y que nos den un martillazo cada 20 segundos. El promedio será el mismo pero... No es lo mismo.

Hay varios mecanismos que podemos emplear para mejorar la respuesta de nuestro PWM, de forma que se aproxime mejor a una señal analógica auténtica. Una de las más sencillas es emplear un filtro de paso bajo para "suavizar" la señal.

Anuncio:

En esta entrada veremos cómo incorporar un filtro de paso bajo a una salida PWM para mejorar su comportamiento y que la salida obtenida se aproxime mejor a una señal analógica auténtica.

Incorporar un filtro de paso bajo

Una salida PWM es un mecanismo que incorporan frecuentemente los autómatas para emular una señal analógica. Consiste en proporcionar una señal pulsada a una frecuencia determinada, cuyo valor promedio es el valor analógico deseado. Pero el valor de tensión aplicado realmente es, en todo momento, una señal digital entre -Vcc y +Vcc.

Por ejemplo, si con una tensión Vcc de 5V queremos una señal PWM de 1V, se generará una señal que el 20% del tiempo valdrá 5V y el 80% restante 0V.

Si la respuesta del sistema es lenta en comparación con la frecuencia del PWM, la salida PWM puede ser suficiente. Por contra en otros casos no será así, e incluso podemos dañar el componente alimentado si la tensión Vcc es superior a la tensión máxima admisible por el componente.

Para mejorar la respuesta de la salida analógica tenemos varias opciones, y la más sencilla es incorporar un filtro de paso bajo pasivo mediante una red RC.

Un filtro de paso bajo es un componente que elimina las frecuencias altas de una señal, dejando pasar las bajas frecuencias.

El esquema eléctrico es el siguiente, donde vemos que hemos superpuesto la red RC de filtrado entre la salida PWM y la señal filtrada, que es la que recibe la carga.

arduino-filtro-paso-bajo-pwm-esquema

Como habíamos delantado, la respuesta del sistema es una señal amortiguada de la señal PWM, pero que sigue sin ser una señal analógica perfecta. Un ejemplo de respuesta es el siguiente:

arduino-filtro-paso-bajo-pwm-respuesta

Debemos observar que la señal producida tiene dos parámetros relevantes.

  • Tiempo de respuesta: El tiempo le cuesta la señal el estado estacionario (un tanto por ciento de la señal deseada)
  • Rizado: La pequeña oscilación que se mantiene tras el filtro.

Estos dos efectos son "opuestos" entre sí. Es decir:

  • Si intentamos reducir el rizado, necesitaremos tiempos de respuesta muy largos.
  • Si intentamos reducir el tiempo de respuesta, debemos admitir un mayor rizado.

Por tanto, no existe un único filtro y una señal optimos. Tendremos que tomar una decisión de diseño y aceptar un compromiso entre un determinado valor de rizado y un tiempo de respuesta.

Ajustar R y C en el filtro paso bajo

Las características de la respuesta dependerá de:

  • La frecuencia del PWM
  • Las tensiones de la señal filtrada y la señal deseada
  • Los valores de R y C elegidos

Para calcular estos parámetros, y visualizar gráficamente la respuesta obtenida, podemos usar la calculadora de redes RC disponible en este enlace.

Limitaciones de un filtro pasivo

El filtro de paso bajo planteado resulta útil para proporcionar un valor te tensión casi analógico, e incluso alimentar pequeñas cargas. Sin embargo, no sirve para alimentar grandes cargas..

Las cagas de potencia superior tienen impedancias inferiores. Cuando esta impedancia es inferior a la de la red RC, el consumo de la carga produce que la señal obtenida se aleje de la teórica.

Una forma sencilla de evitar esto es emplear un amplificador operacional para hacer un seguidor de tensión, que aísla la influencia de la carga del funcionamiento de la red RC.

arduino-seguidor-tension

No obstante, ya que vamos a emplear un amplificador operacional, podríamos unificar ambos componentes empleando un filtro activo.

arduino-filtro-activo

Por último, otra opción muy recomendable es emplear directamente alguno de los muchos conversores ADC comerciales disponibles. Veremos estas soluciones en futuras entradas.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Anuncio:

Previous Usar un interruptor magnético con Arduino (magnetic reed)
Next ¿Demasiado ocupado para mejorar?
1000
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
newest oldest
luisllamas

Encantado de ayudarte... resumen: No hagas eso 😀 😀 😀
Un PWM es una señal muy "desagradable" para filtrar, porque es una señal totalmente cuadrada. Es complicado filtrarla para obtener un nivel estacionario, pero filtrarla para que modele una señal senoidal cuya frecuencia del mismo orden (por lo que veo en el osciloscopio) que tu PWM.... no te digo imposible pero casi.
Póntelo muuuucho más fácil, y usa un DAC (digital-analog-converter), que es lo que haríamos todos. Los tienes por 70 céntimos, y es más barato que el filtro que ibas a tener que montarte para tu PWM https://www.luisllamas.es/salida-analogica-real-con-arduino-y-dac-de-12bits-mcp4725/

Como obtener el valor RSSI desde Frsky a Pixhawk – Multicóptero X

[…] y un condensador en serie, que filtra las frecuencias altas y deja pasar las bajas. Tenemos una buena descripción en la web de Luis […]