En el vasto mundo de la electrónica y la programación, el control preciso de dispositivos es esencial. Una de las técnicas más versátiles y ampliamente utilizadas para este fin es el PWM (Pulse Width Modulation o Modulación por Ancho de Pulsos).
Esta técnica, que a primera vista puede parecer compleja, es en realidad una forma ingeniosa de controlar dispositivos electrónicos, desde simples LEDs hasta motores de alta potencia, mediante la variación del ancho de un pulso eléctrico. Pero antes de sumergirnos en el fascinante mundo del PWM, es fundamental comprender cómo se comporta el voltaje a lo largo del tiempo.
La corriente eléctrica puede ser de dos tipos: directa (DC) y alterna (AC). En la corriente directa, como su nombre indica, el flujo de electrones se mueve en una sola dirección, manteniendo así un signo constante del voltaje. Esto contrasta con la corriente alterna, donde el flujo de electrones cambia de dirección periódicamente, haciendo que el voltaje oscile entre valores positivos y negativos.
Uno de los ejemplos más comunes de corriente directa es una batería, mientras que la corriente que fluye desde nuestros enchufes en casa es, en la mayoría de los casos, alterna. Cuando hablamos de dispositivos como Arduino, que es una plataforma de desarrollo basada en microcontroladores, se trabaja principalmente con corriente directa.
Por defecto, los pines digitales de un Arduino proporcionan un voltaje constante de 5 voltios cuando se configuran como salida (Output). Esta constancia en el voltaje se refleja en una gráfica de voltaje vs tiempo como una línea recta horizontal:
Como vemos en la imagen, el voltaje permanece constante. No varía en el tiempo. Sin embargo, es posible dividir esa onda en ciclos de trabajo.
Imaginemos que, en lugar de mantener ese voltaje constante todo el tiempo, queremos que solo esté presente durante ciertos intervalos y que esté ausente en otros. Al hacer esto, efectivamente «dividimos» el voltaje en segmentos o «cuadrados». Cada uno de estos segmentos es lo que se conoce como un «ciclo de trabajo». Un ciclo de trabajo no es más que un período específico en el que el voltaje está activo (alto) o inactivo (bajo).
Esto se ilustra en la siguiente imagen:
La técnica de dividir el voltaje en ciclos de trabajo, conocida como modulación por ancho de pulsos (PWM), es una herramienta poderosa en el ámbito de la electrónica y la comunicación. Esta técnica no solo permite un control granular del voltaje, sino que también abre puertas a múltiples aplicaciones y ventajas que trascienden el simple encendido y apagado de un dispositivo.
Una de las aplicaciones más evidentes de la PWM es la transmisión de información. Al variar la duración y la prolongación del voltaje dentro de un ciclo, es posible codificar datos. Este método es utilizado en muchos protocolos de comunicación, donde las variaciones en el ancho del pulso representan diferentes bits de información. Además, en la era digital actual, donde la eficiencia y la precisión son esenciales, la capacidad de modular el ancho de los pulsos se convierte en una herramienta vital para la transmisión eficiente de datos entre dispositivos.
Por otro lado, la PWM es esencial para la regulación de energía. Al controlar cuánto tiempo permanece activo el voltaje en un ciclo, es posible ajustar la cantidad de energía entregada a una carga, como un motor o un LED.
Por ejemplo, si se desea que un motor gire a media velocidad, se podría aplicar un ciclo de trabajo del 50%, entregando energía solo la mitad del tiempo. Esto se ilustra en la siguiente imagen:
Es esencial comprender que la modulación por ancho de pulsos (PWM) nos brinda la flexibilidad de operar en una amplia gama de porcentajes dentro de un ciclo de trabajo. Esto significa que no estamos limitados a simplemente encender o apagar completamente un dispositivo, sino que podemos ajustar finamente su comportamiento.
Tomemos como ejemplo un LED, cuya luminosidad puede ser modulada en función del ciclo de trabajo de la señal PWM. Al variar el porcentaje de tiempo que el LED recibe energía en un ciclo, podemos controlar su brillo, desde un resplandor tenue hasta su máxima intensidad.
Para ilustrar esta versatilidad, planeo realizar un experimento utilizando 4 LEDs. Con estos, demostraré 3 niveles de luminosidad distintos, representando diferentes porcentajes de ciclos de trabajo. Es crucial mencionar que, para garantizar la seguridad y el correcto funcionamiento de los LEDs, es necesario incorporar resistencias adecuadas en cada uno de ellos.
Además, para llevar a cabo esta demostración con Arduino, es imprescindible utilizar pines digitales específicos que soporten la funcionalidad PWM. Estos pines están claramente identificados en la placa Arduino con el símbolo «~» junto a ellos.
Usaremos los pines 8, 9 y 10 (los pines que tienen el símbolo ~ a su izquierda son los que están habilitados para PWM). El código es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 |
void setup(){ analogWrite(9, 1); analogWrite(10, 25); analogWrite(11, 255); } void loop(){ { |
Al cargar el código mencionado y conectar los LEDs con sus respectivas resistencias en los pines 8, 9 y 10, lograremos visualizar una representación práctica del concepto de modulación por ancho de pulsos (PWM). Esta demostración no sólo sirve como una validación del código y del concepto, sino que también brinda una experiencia visual que facilita la comprensión de cómo la PWM puede controlar la luminosidad de un LED.
Te invito a observar el siguiente video, donde se muestra el resultado en acción:
[youtube=http://www.youtube.com/watch?v=FoJngdN6HCM&feature=youtu.be]
Es mi deseo que este experimento te haya proporcionado una visión clara y tangible del poder y la versatilidad de la PWM. Las aplicaciones de esta técnica van más allá de simplemente controlar la luminosidad de un LED, y espero que esto te inspire a explorar aún más las maravillas de la electrónica y la programación.
Si te ha gustado este contenido o tienes alguna pregunta, comentario o sugerencia, no dudes en compartirla.
hola estaría bien si sacases un tutorial sobre como controlar velocidad de motores de ca sin carga y poder regular la velocidad de estos motores a traves de optoacopladores y triac.
y cargarselo al arduino mega por ejemplo. Saludos
[email protected]
Estoy tratando de construir un detector de cruce por ceros para lograr eso
Muchas gracias esta web si que tiene información de calidad!!
Gracias
hola buenas, necesito hacer esto pero en un tiempo de 0.002 segundos y lo mínimo que consigo es que sea de 0.01 segundos. Me podrías esplicar por que no lo consigo?
El Arduino tiene una frecuencia fija de PWM. Habría que intentar cambiarla
Son los pines 9 10 11 del arduino uno en el codigo.
El del video corresponde al 8 9 10 del arduino mega
Los pines PWM son los que tienen el símbolo ~