рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╣реЛрдо рдореЗрдб рдбрд┐рдорд░реНрд╕

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдЖрд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдорд░реНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпреЛрдЬрдирд╛рдПрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИрдВред 220 рд╡реЛрд▓реНрдЯ рдПрд╕реА рдореЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдирд┐рдпрдВрддреНрд░рдг - 0-5 рд╡реЛрд▓реНрдЯ рдПрдирд╛рд▓реЙрдЧ рд╕рд┐рдЧреНрдирд▓ (рдЖрд░реНрдбрд┐рдиреЛ) рдпрд╛ 0-3.3 рд╡реЛрд▓реНрдЯ (esp8266)ред



1. рдПрдХ рддрд╛рдкрджреАрдкреНрдд рд▓реИрдВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдкрд░ рдбрд┐рдорд░:

рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ:



рд╕рд╛рдордЧреНрд░реА:

Q1 - IGBT рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ IRG4BC30UD (рд░реЗрдбрд┐рдПрдЯрд░ рдЖрд╡рд╢реНрдпрдХ)
рдбреА 1 - рд░реЗрдХреНрдЯрд┐рдлрд╛рдпрд░ рдбрд╛рдпреЛрдб
рдбреА 2 - рдбрд╛рдпреЛрдб рдкреБрд▓
рдЬреЗрдб 10 рд╡реА - 10 рд╡реЛрд▓реНрдЯ рдЬрд╝реЗрдирд░ рдбрд╛рдпреЛрдб
4N25 - рдСрдкреНрдЯреЛрдХреЙрдкреНрд▓рд░
рдЖрд░ 100 рдХреЗ рдФрд░ рдЖрд░ 10 рдХреЗ - рдкреНрд░рддрд┐рд░реЛрдзрдХ
рд╕реА 4.7 - рд╕рдВрдзрд╛рд░рд┐рддреНрд░

рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд: рдПрдХ arduino рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ pwm рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдкреНрд░рд╡рд░реНрдзрдиред

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг:


2. рддрд╛рдкрдорд╛рдкреА рдкрд░ рдЧрд░реНрдо рдФрд░ рдЧрд░рдорд╛рдЧрд░рдо рд▓реИрдВрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдбрд╛рдпрдорд░:

рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ:



рд╕рд╛рдордЧреНрд░реА:

рдмреАрдЯреА 139 - Triac
MOC 3021 рдФрд░ 4N25 - рдСрдкреНрдЯреЛрдХреЙрдкрд░реНрд╕
R300, R10K, R50K - рдкреНрд░рддрд┐рд░реЛрдзрдХ

рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд: INT0 - arduino (pin2) рдХреЛ рдЗрдирдкреБрдЯ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪрд░рдг рд╢реВрдиреНрдп (рд╢реВрдиреНрдп рдбрд┐рдЯреЗрдХреНрдЯрд░) рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред
OUT - рдЖрд░реНрдбрд┐рдиреЛ (рдкрд┐рди 3) рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рджреЗрд░реА рд╕рдВрдХреЗрдд рдЯреНрд░рд╛рдЗрдХ рдкрд░ рдЖрддрд╛ рд╣реИред

Dimming рдкреИрд░рд╛рдореАрдЯрд░ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ (0-255 #) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЙрджрд╛рд╣рд░рдг: 99 #

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/hi410467/


All Articles