En este tutorial se muestra lo que es el PWM y su uso en Arduino y en electrónica en general. PWM significa modulación por ancho de pulso y es una técnica para transferir información o energía a un dispositivo con una señal cuadrada. La señal está compuesta por un valor alto y un valor bajo, en este caso 5 y 0 voltios respectivamente.
La relación entre el tiempo que la señal está en alto en comparación con la que está en bajo se conoce como ciclo de trabajo y normalmente se expresa en un tanto por ciento (%). Una señal como la siguiente está 1 ms arriba y 1 ms a cero, por lo que su ciclo de trabajo es de un 50 %.
Además, en la señal PWM también puede ser importante la frecuencia; en este caso el periodo es de 2 ms, por lo que la frecuencia es de 500 Hz.
El siguiente paso es generar esta señal con Arduino, teniendo en cuenta que no todos los pines de Arduino pueden generar PWM, solo los que lo indica la placa. Para usar el PWM simplemente se utiliza la función analogWrite(pin,valor), donde el valor es un número entre 0 y 255. Esto es debido a que el generador PWM de Arduino es de 8 bits, por lo que tiene 256 valores distintos de codificación de señal. Esto limita la precisión para codificar la señal.
Arduino utiliza el nombre analogWrite porque se puede considerar el PWM como una salida analógica, dependiendo de los dispositivos que se estén controlando. Por ejemplo, se puede controlar un LED con PWM haciendo variar su brillo y así no tener que depender únicamente de encenderlo totalmente o apagarlo. Con el motor ocurre algo parecido y se puede controlar su velocidad. Esto se debe a que una señal con el 50% de ciclo de trabajo entrega la misma energía que una señal de 2.5V constante; por ese motivo se puede usar como una pseudo salida analógica.
Aunque en estos casos esto sea así, hay que recordar que en realidad se trata de una señal cuadrada entre 5V y 0.
Finalmente, se modifica el código para que vaya aumentando el ancho de pulso con el tiempo y luego vuelva a empezar. Esta salida se conecta a un LED para poder ver cómo cambia su brillo.
En los pasos anteriores se ha visto cómo crear una señal cuadrada mediante PWM y se ha indicado que esto puede simular una señal analógica, pero en realidad sí que se puede crear una señal analógica de 2.5V mediante el PWM. Para ello se crea un filtro paso bajo con una resistencia y un condensador; de esta manera, en la salida se obtiene aproximadamente el valor medio de dicha señal.
Dependiendo del valor del condensador y de la resistencia se obtiene un rizado diferente. En la siguiente imagen se muestra el circuito y el resultado en el osciloscopio. La entrada es una señal con un ciclo de trabajo de 50% que corresponde a 128 del valor del analogWrite de Arduino.
Esta señal creada de esta manera no puede ser usada para suministrar corriente, por lo tanto la carga que se le conecte tiene que tener una impedancia alta. Por lo tanto no puede usarse para mover motores u otros usos, incluso dependiendo del condensador y la resistencia el simple hecho de conectarle un ADC puede modificar la señal. Una manera de poder usar esta señal es conectándole un amplificador operacional o de otro tipo, por ejemplo como seguidor; de esta manera se regenera la señal y la corriente vendría del integrado que se utilice.