[Из песочницы] Самодельные диммеры для систем домашней автоматики
![wmdplzkeoz62zr2ipmppfyznizq.png](https://habrastorage.org/webt/wm/dp/lz/wmdplzkeoz62zr2ipmppfyznizq.png)
1. Диммер для лампы накаливания, на транзисторе:
Схема:
Состав:
Q1 — IGBT транзистор IRG4BC30UD (необходим радиатор)
D1 — выпрямительный диод
D2 — диодный мост
Z 10V — диод зенера на 10 вольт
4N25 — оптопара
R 100K и R 10K — резисторы
C 4.7 — конденсатор
Принцип работы: усиление pwm сигнала с ардуино транзистором.
Пример работы:
2. Диммер на симисторе, подходит для ламп накала и светодиодных диммируемых ламп:
Схема:
Состав:
BT 139 — симистор
MOC 3021 и 4N25 — оптопары
R300, R10K, R50K — резисторы
Принцип работы: INT0 — вход на ардуино (pin2) настроенный на прерывание, на него приходит сигнал перехода фазы через ноль (детектор нуля).
OUT — выход с ардуины (pin3) с которого через задержку приходит сигнал на симистор.
Параметр диммирования задается через serial порт (0–255#)
Пример: 99#
//#include
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(dimming1)
{
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 фильтр.
На этом все, спасибо за внимание, будте осторожны с электричеством.