рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдЖрд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдорд░реНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпреЛрдЬрдирд╛рдПрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИрдВред 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 .
, , .