Antes de explicar lo que es el PWM (Pulse width modulation, modulación por ancho de pulsos), vamos a ver primero como se ve una gráfica de voltaje vs tiempo.
Cuando se trabaja con corriente directa el signo del voltaje permanece invariable en el tiempo, es decir, no cambia de signo como es el caso de la corriente alterna. O se mantiene positivo o se mantiene negativo. Cuando el voltaje directo se ha regulado, obtenemos un valor invariable en el tiempo. En el caso de Arduino el voltaje es 5 voltios en los pines digitales. Cuando programamos un Output, la gráfica de voltaje vs tiempo luce así:
El voltaje permanece constante. No varía en el tiempo. Sin embargo, es posible dividir esa onda en ciclos de trabajo. Los ciclos de trabajo duran un tiempo determinado, por lo que una onda de voltaje puede ser dividida en cuadrados.
El dividir el voltaje en ciclos de trabajo ofrece muchas ventajas. La información puede ser transmitida modulando la duración y la prolongación del voltaje en un ciclo de trabajo. De igual forma se puede regular la energía que se entrega a una determinada carga. Esta es la función que nos interesa en este post ya que con Arduino podemos modular el ancho de los pulsos de una señal.
Esto quiere decir que podemos reducir en determinado porcentaje la prolongación del voltaje en cada ciclo de trabajo. Digamos que decidimos enviar un pulso de 5 voltios en un 50% del ciclo de trabajo. El resultado será el siguiente:
Cabe destacar que es posible trabajar a diferentes porcentajes del total del ciclo de trabajo. Así podríamos por ejemplo reducir la luminosidad de un LED en un porcentaje de su luminosidad total y eso es lo que vamos a hacer.
Lo que haré es utilizar 4 LEDs para mostrar 3 niveles distintos de luminosidad. Los 3 LEDs necesitarán ser protegidos con resistencias. Hay que usar los pines digitales de Arduino con capacidad de utilizar PWM, es decir, aquellos que tienen el símbolo ~ a un lado.

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(){ { |
Subiendo este código y conectando LEDs con sus resistencias en los pines 8, 9 y 10 se obtiene lo que se muestra en el siguiente video.
Espero que les guste. Saludos.
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 ~
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
Muchas gracias esta web si que tiene información de calidad!!
Gracias
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