En este post propongo un Dimmer controlador de luz de potencia con Arduino. El cual tiene la particularidad de apagar y prender la bombilla y controlar su intensidad.
Primero un poco de teoría.
Atenuador de luz
Un Dimmer, regulador o atenuador de luz, sirve para regular la energía en uno o varias bombillas, con el fin de variar la intensidad de la luz que emiten, cuando las propiedades de la lámpara lo hacen posible.
Actualmente, los circuitos más empleados incluyen la función de encendido al «paso por cero» de la tensión. La disminución del valor eficaz en la bombilla se logra recortando la señal en el momento de subida en el punto que se elija (si cortamos la señal cuando la onda llega a 60 V p.e. se encenderá muy poco, mientras que si la cortamos al llegar a 120 V se encenderá casi al máximo).
DIAGRAMA ESQUEMÁTICO DEL PROYECTO DIMMER CONTROLADOR DE LUZ.
MATERIALES REQUERIDOS PARA EL PROYECTO.
1-Arduino nano
1-Opto acoplador MOC3021
1- Triac de 10 amperios a 800 voltios – QL8010L5
1-Resistencia de 220 ohmios
3-conectores de 2 pines
1-potenciómetro de 5 k con perilla
1-pulsador normalmente abierto de empotrar
1-fuente de voltaje de 9 voltios para alimentar el Arduino uno
cables, disipador para el triac, cables de potencia para conectar a la línea de corriente alterna.
EXPLICACIÓN DEL PROYECTO
Este proyecto Dimmer controlador de luz de potencia con Arduino, consiste de controlar su luz mediante él potenció metro RV1, este potenciómetro es quien se encarga de mandar un nivel de corriente al pin A0 del Arduino, para que el programa interprete el aumento o disminución de voltaje
tomado por el pin A0 y lo convierte en una señal que disminuirá o aumentará, ofreciéndola por el pin de salida 9.
Este pin número 9 es quien da la señal de saturación para el pin número 2 del opto coplador hasta este punto ya sabemos
que hace el potenciómetro y él opto acoplador, ahora bien, si observamos el programa será esta la orden que tomara la lectura y la emitirá por el pin de salida 9 como se ve a continuación.
<span style="color: #0000ff;">int lectura = analogRead(A0);// Leemos A0 analogWrite
(9, lectura / 4);// Ponemos la tension de control</span>
La configuración de conexión en el potenciómetro es el siguiente;
El potenciómetro, como se ve en las figuras, tiene 3 pines, donde el pin del extremo 1 va conectado a GND, el pin 2 del centro va al pin A0 del Arduino y el pin 3 del otro extremo va conectado al vcc de 5 voltios.
Ahora continuamos con el circuito de encendido y apagado de la bombilla o carga.
Este circuito es quien se encarga de prender o apagar la bombilla, solo tiene 2 pines, los cuales el pin 1 va conectado a GND (negativo) y el pin 2 va conectado al pin número 6 del Arduino uno. Este circuito toma un Cero lógico y lo manda al pin 6 del Arduino y el programa determina cuando se genera un pulso, para emitir por el pin de salida número 13 del Arduino y este es quien satura el diodo led del opto acoplador y será quien genera un 1 lógico para prender la bombilla o un 0 lógico para apagarla. En el programa la estructura sería la siguiente:
void loop()
{
bool boton = digitalRead(6);
if (boton == LOW)
{ PowerON = ! PowerON ;// se manda un pulso para accionar el optocoplador
delay(250);// Para evitar rebotes
digitalWrite(13, PowerON);// Encender o apagar el LED
}
Pasemos al estudio del circuito de potencia.
Comencemos, por partes, del opto acoplador MOC3021.

PROGRAMA PARA EL PROYECTO.
bool PowerON = false ; void setup() { Serial.begin(9600); pinMode( 6, INPUT_PULLUP);//Para leer el boton pinMode(13, OUTPUT);//Para usar un LED de encendido pinMode( 9, OUTPUT);//Pin PWM para regular la base del transistor delay(1000);// Pequeño retraso para asegurarnos de que la tension es estable Serial.println("Iniciando el encendido"); } void loop() { bool boton = digitalRead(6); if (boton == LOW) { PowerON = ! PowerON ;// se manda un pulso para accionar el optoacoplador delay(250);// Para evitar rebotes digitalWrite(13, PowerON);// Encender o apagar el LED } int lectura = analogRead(A0);// Leemos A0 analogWrite (9, lectura / 4);// Ponemos la tension de control }
Este es el código completo para que lo compile en Arduino, de igual manera puede descargar el código fuente del proyecto realizado en KICAD 6.5, el archivo Gerber, los PDF para el método de fotocopia.
Recuerda que si a sido de tu interes este articulo, te suscribas a mi canal de youtube
http://www.youtube.com/c/Electronicamain
de esta manera me apoyas para poder continuar ofreciendo mas contenido de calidad.
Hola amigo Arlex, antes que nada, tengo que agradecerte por este gran aporte me ayudo a encaminar un proyecto en el cual estoy trabajando donde tambien se usa un dimmer, me preguntaba si tendria que tomar en cuenta otro tipo de factores si lo pienso usar para un motor ac de nebulizador
cordial saludo amigo ! es grato que construyas estos proyectos y por supuesto lo puedes usar solo debes tener encuenta que el triac deberá ser montado en un disipador de calor y bien aislado ya que allí se maneja carga alta.
Saludos !!
hola amigo,
como haces para tener en libreria del proteus el arduino uno
o si tuvieras la libreria de quedare agracedico
En donde puedo descargar el codigo?
Estimado Fabrizio, un gusto saludarlo, al final del post esta el código completo solo lo copias y lo pegas en el compilador arduino. saludos.
mas sin embargo aquí te lo comparto.
bool PowerON = false ;
void setup()
{
Serial.begin(9600);
pinMode( 6, INPUT_PULLUP); // Para leer el boton
pinMode(13, OUTPUT); // Para usar un LED de encendido
pinMode( 9, OUTPUT); // Pin PWM para regular la base del transistor
delay(1000); // Pequeño retraso para asegurarnos de que la tensión es estable
Serial.println(«Iniciando el encendido»);
}
void loop()
{
bool boton = digitalRead(6) ;
if (boton == LOW)
{
PowerON = ! PowerON ;// se manda un pulso para accionar el optoacoplador
delay(250);// Para evitar rebotes
digitalWrite(13, PowerON);// Encender o apagar el LED
}
int lectura = analogRead(A0);// Leemos A0
analogWrite (9, lectura / 4);// Ponemos la tensión de control
}
¿Tienes un video del circuito funcionando?
Cordial Saludo
le comparto este video donde es la misma función https://www.youtube.com/watch?v=TE7Mrau4Qgg&t=34s
saludos.