Dimmers caseiros para sistemas de automação residencial

Olá pessoal! Este artigo é sobre como montar e aplicar dimmers para controlar a iluminação. Os esquemas são os mais simples. Projetado para rede elétrica de 220 volts, controle - sinal analógico de 0-5 volts (arduino) ou 0-3,3 volts (esp8266).



1. Dimmer para uma lâmpada incandescente, em um transistor:

Esquema:



Composição:

Q1 - Transistor IGBT IRG4BC30UD (requer radiador)
D1 - diodo retificador
D2 - ponte de diodos
Z 10V - diodo zener de 10 volts
4N25 - acoplador óptico
R 100K e R 10K - resistores
C 4.7 - capacitor

Princípio de operação: amplificação de um sinal pwm com um transistor arduino.

Exemplo de trabalho:


2. Dimmer no triac, adequado para lâmpadas incandescentes e LED reguláveis:

Esquema:



Composição:

BT 139 - Triac
MOC 3021 e 4N25 - Acopladores ópticos
R300, R10K, R50K - Resistores

Princípio de operação: INT0 - a entrada para o arduino (pino2) configurada para interromper, recebe um sinal de que a fase passa pelo zero (detector de zero).
OUT - saída do arduino (pino3) a partir do qual o sinal de atraso chega ao triac.

O parâmetro de escurecimento é definido através da porta serial (0-255 #)
Exemplo: 99 #

Programa para arduino UNO
//#include <EEPROM.h>
int dimming=100,ac_dimm;
char incomB='0';
String openhab="";


void setup()
{
	Serial.begin(9600);
	Serial.println("Setup...");
	pinMode(3,OUTPUT);                        // Set AC Dimmer
	delay(1000);
	Serial.println("Start 0-255#");
	attachInterrupt(0, start_dimming, RISING); //pin 2
	myPrint();
}

void loop()
{
	myIncoming();

}

void myIncoming()
{
	if(Serial.available()>0)
	{
		incomB=Serial.read();
		if(incomB=='\n' || incomB=='#')
		{
			if(openhab.toInt()>=0 && openhab.toInt()<256)
			{
				dimming=openhab.toInt();
			}
			openhab="";
			myPrint();
		}
		else
			openhab+=incomB;
	}
}


void start_dimming()
{
	if(dimming>ac_dimm)
		ac_dimm++;
	if(dimming<ac_dimm)
		ac_dimm--;
	if(ac_dimm>1)
	{
		delayMicroseconds(999);
		delayMicroseconds(31*(256-ac_dimm));
		digitalWrite(3, HIGH);
		delayMicroseconds(20);
		digitalWrite(3, LOW);
		//Serial.println("test");
	}
}

void myPrint()
{
	Serial.print("dimming = ");
	Serial.println(dimming);
}



( ) RC .

, , .


-


Source: https://habr.com/ru/post/pt410467/


All Articles