111 lines
4.7 KiB
Arduino
111 lines
4.7 KiB
Arduino
|
//20.02.2019
|
|||
|
//by Reptiloid software
|
|||
|
|
|||
|
/*
|
|||
|
Ограничения:
|
|||
|
- Для контроля фазы использовать только D2 (прерывание INT0)
|
|||
|
(порт M2 диммера подключать к порту D2 АРДУИНО)!!!
|
|||
|
- Не использовать пины D9 и D10 для ШИМ Analog.Write()!!!
|
|||
|
только цифровой выход/вход digitalWrite() и digitalRead()
|
|||
|
|
|||
|
Функционал:
|
|||
|
- Данная библиотека позволяет регулировать нагрузку(и),
|
|||
|
подключенную в промышленную сеть 220В с помощью АУРДУИНО
|
|||
|
различными встроенными функциями описанными ниже
|
|||
|
|
|||
|
Как работать:
|
|||
|
1) Чтобы начать работу нужно подключить библиотеку AC_Dimmer.h
|
|||
|
2) Обозначить и раздать номера диммерам (нумерация от 0!!!), используемым в проекте:
|
|||
|
#define <"имя димера"> <"порядковый номер">
|
|||
|
|
|||
|
Например:
|
|||
|
#include <AC_Dimmer.h>
|
|||
|
|
|||
|
#define Dimmer_1 0
|
|||
|
#define Dimmer_2 1
|
|||
|
#define Dimmer_3 2
|
|||
|
|
|||
|
3) Инициализировать димер(ы) в void setup().
|
|||
|
- Инициализацию выполнять строго между функций Dimmer_init_begin() и Dimmer_init_end();
|
|||
|
- Инициализировать с помощью функции Dimmer_pin_assign():
|
|||
|
Dimmer_pin_assign(<"имя димера">, <"порт(пин) ардуино димера">);
|
|||
|
|
|||
|
Например:
|
|||
|
void setup()
|
|||
|
{
|
|||
|
Dimmer_init_begin();
|
|||
|
|
|||
|
Dimmer_pin_assign(Dimmer_1, 3);
|
|||
|
Dimmer_pin_assign(Dimmer_2, A3);
|
|||
|
Dimmer_pin_assign(Dimmer_3, A2);
|
|||
|
|
|||
|
Dimmer_init_end();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
3) В void loop() использовать нужную функцию:
|
|||
|
|
|||
|
- Dimm_value(<"имя димера">, <"значение мощности от 0 до 255">)
|
|||
|
- Heater(<"имя димера">, <"значение мощности от 0 до 10">)
|
|||
|
- SSR_switch(<"имя димера">, <значения 1 или 0 (HIGH/LOW)>)
|
|||
|
|
|||
|
Например: void loop()
|
|||
|
{
|
|||
|
Dimm_value(Dimmer_3, 64); // 25% мощность на диммере№3
|
|||
|
Heater(Dimmer_2, 3); //30% мощности на диммере№2 (при условии что там ТЕН или другая низкоинерциооная нагрузка)
|
|||
|
Dimm_value(Dimmer_1, 128); //50% мощности на диммере№1
|
|||
|
|
|||
|
delay(1000); //установленные высше параметры удерживаются 1сек
|
|||
|
|
|||
|
SSR_switch(Dimmer_3, LOW); // отключим все диммеры на 1сек
|
|||
|
SSR_switch(Dimmer_2, LOW);
|
|||
|
SSR_switch(Dimmer_1, LOW);
|
|||
|
|
|||
|
delay(1000);
|
|||
|
}
|
|||
|
|
|||
|
Код даного примера предполагает плавное поочередное зажигание и
|
|||
|
и тушение трех ламп накаливания, подключенных к ардуино каждая через независимый диммер
|
|||
|
|
|||
|
Демонстрацию работы библиотеки на тестовом стенде и схему можно посмотреть здесь:
|
|||
|
https://www.youtube.com/watch?v=9fhkJQIRmEA
|
|||
|
|
|||
|
Так же можно использовать для теста одиночного диммера
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
#include <AC_Dimmer.h>
|
|||
|
#include <math.h> //если Вы хотите использовать данную библитеку в своем в проекте,
|
|||
|
//математическая библиотека <math.h> не обязательна к включению
|
|||
|
|
|||
|
#define Dimmer_1 0
|
|||
|
#define Dimmer_2 1
|
|||
|
#define Dimmer_3 2
|
|||
|
|
|||
|
unsigned char i = 0;
|
|||
|
unsigned char range = 70; // Диапазон регулировки
|
|||
|
// (255 - максимальное значение)
|
|||
|
|
|||
|
void setup()
|
|||
|
{
|
|||
|
Dimmer_init_begin();
|
|||
|
|
|||
|
Dimmer_pin_assign(Dimmer_1, 3);
|
|||
|
Dimmer_pin_assign(Dimmer_2, A3);
|
|||
|
Dimmer_pin_assign(Dimmer_3, A2);
|
|||
|
|
|||
|
Dimmer_init_end();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void loop()
|
|||
|
{
|
|||
|
i++;
|
|||
|
|
|||
|
Dimm_value(Dimmer_1, range*fabs(sin(i*2*3.14/255)));
|
|||
|
Dimm_value(Dimmer_2, range*fabs(sin((i+(255/3))*2*3.14/255)));
|
|||
|
Dimm_value(Dimmer_3, range*fabs(sin((i+(255*2/3))*2*3.14/255)));
|
|||
|
|
|||
|
delay(25);
|
|||
|
}
|