4

Control de LED RGB con PWM en Arduino

La modulación por ancho de pulso (PWM, Pulse Width Modulation) es una tecnica para simular una salida analógica con una salida digital.

El control digital se usa para crear una onda cuadrada a la cuál le podemos variar la proporción de tiempo entre encendido y apagado.

A la duración del tiempo de encendido (ON) se le llama ancho de pulso. Para variar el valor analógico cambiamos, o modulamos, ese ancho de pulso.

Si repetimos este patrón de encendido/apagado lo suficientemente rapido por ejemplo con un LED el resultado es como si la señal variara entre 0 y 5V controlando el brillo del LED.

Arduino incorpora una función llamada analogWrite() que escribe un valor analógico (PWM) en un pin. La frecuencia de la señal PWM sera de aproximadamente 490Hz.

Podemos llamar la función escribiendo: analogWrite(pin, valor)

Donde «pin» es el pin en el cual se quiere generar la señal PWM y «valor» es el ciclo de trabajo deseado comprendido entre 0 y 255.

El ejemplo a continuación variará el ancho de pulso para cada LED desde 0 (apagado) hasta 255 (máximo brillo) de a un punto por vez. Hace uso de estructuras de bucle y no mucho más. Cualquier duda la pueden hacer vía comentarios.

/* ARDUINO BASICO: CONTROL DE UN LED RGB MEDIANTE PWM
 www.automatismos-mdq.com.ar - www.mateslab.com.ar
 28 de junio de 2012 - Mar del Plata
 */

// Declaracion de variables
int rojo = 0;
int verde = 0;
int azul = 0;

void setup()
{
  // Nada para configurar
} 

void loop()
{ 

  // Activando la salida PWM 8
  for (int a=0; a<255; a++)
  {
    azul = azul + 1;
    analogWrite(8, azul);
    delay(30);
  }
  // Activando la salida PWM 9
  for (int r=0; r<255; r++)
  {
    rojo = rojo + 1;
    analogWrite(9, rojo);
    delay(30);
  }
  // Activando la salida PWM 10
  for (int v=0; v<255; v++)
  {
    verde = verde + 1;
    analogWrite(10, verde);
    delay(30);
  }
}

El diagrama de conexiones es muy sencillo, solo basta con identificar el cátodo común y los tres ánodos para no invertir la polaridad y listo. La alimentación la toma desde el puerto USB.

Podemos ver la gráfica del osciloscopio correspondiente a la señal PWM que entrega el pin 9. La frecuencia es de 490,215Hz.

Nuestro LED piraña de origen chino no posee color azul, es naranja. Se confundieron nuestros amigos asiaticos al fabricarlo. El siguiente vídeo muestra como varían los colores de forma automática.

+ Arduino.cc: Tutorial PWM
+ Arduino.cc: Referencia AnalogWrite

Lucas Martin

Electrónico por sobre todas las cosas. Disfrutando del Hardware y Software Open Source.

4 comentarios

  1. Pingback: Bitacoras.com
  2. estimados :
    cargue el programa en un arduino nano y no me funciono
    revisando el código en las sentencias for creo que los signos > están invertidos y creo que deberían ser < , al cambiarlos si funciona !!!
    si estoy equivocado les pido me lo hagan saber. gracias
    saludos

  3. Hola Pedro tienes toda la razón. No sé por qué motivo se cambiaron los símbolos! Corregido. Gracias y saludos.

  4. hola soy de Mar del también y quisiera ponerme en contacto con ustedes para ver si pueden echarme una mano con un código arduino que pretendo hacer para utilizar varios led RGB pero de potencia para lo cual necesitaria ponerle reguladores de tension a la salida de los PWM. Si me das un mail o te contactas al mio te comento lo que quiero hacer y si pueden ayudarme gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.