Автоматический ввод резерва
Модератор: immortal
-
- Сообщения: 12
- Зарегистрирован: Пт фев 12, 2016 9:34 pm
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Автоматический ввод резерва
Может чет с поиском, но не нашел такого...
(Актуально для частного домовладения)
В общем смысл: переключение вводной линии ЛЭП при отключении на инвертер, а затем (после запуска) на генератор.
(Актуально для частного домовладения)
В общем смысл: переключение вводной линии ЛЭП при отключении на инвертер, а затем (после запуска) на генератор.
-
- Сообщения: 12
- Зарегистрирован: Пт фев 12, 2016 9:34 pm
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Re: Автоматический ввод резерва
Пока для себя решил делать на Arduino + релейный модуль, управление нагрузкой контакторами, связь с генератором Serial (или аналоговая 2 провода - пока не решил, на генераторе отдельный модуль управления)
-Линия света отдельно, сразу при пропадании питания сети - запитывается инвертером с акб (максимум на 5 минут), после запуска переходит на генератор.
-У меня Вход трехфазный - решил одна фаза для света и необходимого, остальные прочее... + Генератор однофазный + при отсутствии хочется отключить прочее, поэтому дополнительный контактор управляющий 2,3 фазой.
[img]схема1.jpg[/img]
-Линия света отдельно, сразу при пропадании питания сети - запитывается инвертером с акб (максимум на 5 минут), после запуска переходит на генератор.
-У меня Вход трехфазный - решил одна фаза для света и необходимого, остальные прочее... + Генератор однофазный + при отсутствии хочется отключить прочее, поэтому дополнительный контактор управляющий 2,3 фазой.
[img]схема1.jpg[/img]
- Вложения
-
- схема1.jpg (26.42 КБ) 7667 просмотров
Последний раз редактировалось andrew Чт янв 12, 2017 6:48 pm, всего редактировалось 3 раза.
-
- Сообщения: 12
- Зарегистрирован: Пт фев 12, 2016 9:34 pm
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Re: Автоматический ввод резерва
Скрипт:
Код: Выделить всё
// v. 1.0
// Скрипт управления резервным вводом питания,
// отключением двух фаз по состоянию "отсутствие, присутствие", с WatchDog`ом.
// - не забываем затереть загрузчик (для работы WatchDog`a.).
// Формат запроса: {адрес},{состояние}
// адрес: 3 цифровых знака. Пример: 151 (занесен в переменную addr)
// состояние: 00 - никого нет дома, генератор не нужен
// 01 - никого нет дома, генератор нужен
// 11 - дома кто-то есть
#include <avr/wdt.h>
#include <SoftwareSerial.h>
String addr = "151"; // адрес контроллера
#define ESKchek A4 //датчик входа тока на контактор ЛЭП
#define Outchek A5 //датчик выхода тока с контактора
#define GENchek A6 //датчик входа тока в контактор генератора
#define INVchek A7 //датчик тока с инвертера
//#define GENoutchek A7 //датчик выхода контактора генератора
#define GENerrorLED A3 // индикатор ошибки генератора
#define GENonLED A2 // индикатор вкл линии генератора
#define GENoffLED A1 // индикатор выкл линии генератора
#define ESKonLED A0 // индикатор вкл линии ЛЭП
#define ESKoffLED 13 // индикатор выкл линии ЛЭП
#define INVon 9 // вкл инвертера
#define INVrel 8 // реле вкл-выкл инвертера
#define ESKon 2 // реле вкл контактора ЛЭП
#define ESKoff 3 // реле выкл контактора ЛЭП
#define GENon 4 // реле вкл контактора Генератора
#define GENoff 5 // реле выкл контактора Генератора
#define NBDon 6 // реле вкл контактора НЕТ НИКОГО
#define NBDoff 7 // реле выкл контактора НЕТ НИКОГО
SoftwareSerial mySerial(10, 11); // RX, TX
volatile int i = 0;
volatile bool ON = LOW; // включить 0
volatile bool OFF = HIGH; // выключить 1
volatile bool OldESK = HIGH; // предыдущее состояние ввода ЛЭП
volatile bool State = HIGH; // состояние присутствия
volatile bool GenOK = LOW; // ошибка генератора
volatile bool GenState = LOW; // состояние генератора
void setup() {
Serial.begin (9600);
mySerial.begin(4800);
pinMode (INVchek, INPUT_PULLUP);
pinMode (ESKchek, INPUT_PULLUP);
pinMode (GENchek, INPUT_PULLUP);
pinMode (Outchek, INPUT_PULLUP);
pinMode (GENerrorLED, OUTPUT);
pinMode (GENonLED, OUTPUT);
pinMode (GENoffLED, OUTPUT);
pinMode (ESKonLED, OUTPUT);
pinMode (ESKoffLED, OUTPUT);
pinMode (INVon, OUTPUT);
pinMode (INVrel, OUTPUT);
pinMode (ESKon, OUTPUT);
pinMode (ESKoff, OUTPUT);
pinMode (GENon, OUTPUT);
pinMode (GENoff, OUTPUT);
pinMode(NBDon, OUTPUT);
pinMode(NBDoff, OUTPUT);
digitalWrite (GENerrorLED, HIGH);
digitalWrite (GENonLED, HIGH);
digitalWrite (GENoffLED, HIGH);
digitalWrite (ESKonLED, HIGH);
digitalWrite (ESKoffLED, HIGH);
digitalWrite (INVon, OFF);
digitalWrite (INVrel, OFF);
digitalWrite (ESKon, OFF);
digitalWrite (ESKoff, OFF);
digitalWrite (GENon, OFF);
digitalWrite (GENoff, OFF);
digitalWrite (NBDon, OFF);
digitalWrite (NBDoff, OFF);
delay (1000);
digitalWrite (GENerrorLED, LOW);
digitalWrite (GENonLED, LOW);
digitalWrite (GENoffLED, LOW);
digitalWrite (ESKonLED, LOW);
digitalWrite (ESKoffLED, LOW);
wdt_enable(WDTO_8S);
}
void pause(byte tm) {
for (i = 0; i < tm; i++) {
wdt_reset();
delay(1000);
}
}
void ESKstart() {
pause(20);
if (!digitalRead(ESKchek)) {
digitalWrite (GENoff, ON);
delay(500);
digitalWrite (GENoff, OFF);
delay(500);
byte i = 0;
while (digitalRead(Outchek) || i<10){
digitalWrite (ESKon, ON);
if (State) {digitalWrite (NBDon, ON);}
delay(500);
digitalWrite (ESKon, OFF);
digitalWrite (NBDon, OFF);
delay(500);
i++;
}
if (digitalRead(Outchek)) {
digitalWrite (ESKoff, ON);
digitalWrite (NBDoff, ON);
digitalWrite (GENoff, ON);
delay(500);
digitalWrite (ESKoff, OFF);
digitalWrite (NBDoff, OFF);
digitalWrite (GENoff, OFF);
}
}
}
void GenAnswer(byte ansver) {
switch (ansver) {
case 11:
digitalWrite (GENerrorLED, LOW);// заглушен все ок
GenOK = 1;
GenState = 0;
break;
case 22:
digitalWrite (GENerrorLED, LOW);// заведен все ок
GenOK = 1;
GenState = 1;
break;
case 33:
digitalWrite (GENerrorLED, HIGH);// заглушен, авария
GenOK = 0;
GenState = 0;
break;
case 44:
digitalWrite (GENerrorLED, HIGH);// заведен, авария
GenOK = 0;
GenState = 1;
break;
default:
digitalWrite (GENerrorLED, HIGH);
GenOK = 0;
GenState = 1;
}
}
void GenStart() {
if (digitalRead(GENchek)) {
mySerial.println ("start");
byte ansver = 0;
for (i = 0; i < 120; i++) {
wdt_reset();
delay(1000);
if (mySerial.available()) {
ansver = mySerial.read();
break;
}
}
GenAnswer (ansver);
}
}
void GenStop() {
mySerial.println ("stop");
byte ansver = 0;
for (i = 0; i < 100; i++) {
wdt_reset();
delay(1200);
if (mySerial.available()) {
ansver = mySerial.read();
break;
}
}
GenAnswer (ansver);
}
void loop() {
wdt_reset();
if (digitalRead(ESKchek) != OldESK) {
OldESK = digitalRead(ESKchek);
if (!OldESK) {
ESKstart();
pause(5);
GenStop();
}
else {
// выключаем ЛЭП и 2,3 фазы
digitalWrite (ESKoff, ON);
digitalWrite (NBDoff, ON);
delay(500);
digitalWrite (ESKoff, OFF);
digitalWrite (NBDoff, OFF);
delay(500);
// включаем инвертер
digitalWrite (INVon, ON);
delay(500);
digitalWrite (INVrel, ON);
// запускаем генератор если нужен
if (State) {
GenStart();
if (!digitalRead(GENchek)) {
digitalWrite (INVrel, OFF);
digitalWrite (INVon, OFF);
delay(500);
byte i=0;
while (digitalRead(Outchek) || i<10) {
digitalWrite (GENon, ON);
delay(500);
digitalWrite (GENon, OFF);
i++;
}
if (digitalRead(Outchek)) {
digitalWrite (ESKoff, ON);
digitalWrite (NBDoff, ON);
digitalWrite (GENoff, ON);
delay(500);
digitalWrite (ESKoff, OFF);
digitalWrite (NBDoff, OFF);
digitalWrite (GENoff, OFF);
}
}
}
}
}
//подсветка кнопок
if (!digitalRead(ESKchek)) {
if (!digitalRead(Outchek)) {
digitalWrite (ESKoffLED, LOW);
digitalWrite (ESKonLED, HIGH);
}
else {
digitalWrite (ESKonLED, LOW);
digitalWrite (ESKoffLED, HIGH);
}
}
if (!digitalRead(GENchek)) {
if (!digitalRead(Outchek)) {
digitalWrite (GENoffLED, LOW);
digitalWrite (GENonLED, HIGH);
}
else {
digitalWrite (GENonLED, LOW);
digitalWrite (GENoffLED, HIGH);
}
}
//end light button
//состояние никого при вкл генераторе
if (!State && !digitalRead(GENchek)) {
digitalWrite (GENoff, ON);
delay(500);
digitalWrite (GENoff, OFF);
pause(5);
GenStop();
}
//end состояние
}
void serialEvent() {
if (Serial.available() > 4) {
String incomingData = Serial.readString();
if (incomingData.substring(0, 3) == addr) {
int dS = incomingData.substring(4, 6).toInt();
Serial.print(addr);
Serial.print(":");
switch (dS) {
case 11:
digitalWrite (NBDoff, ON);//присутствие нет, генератор нет
delay(500);
digitalWrite (NBDoff, OFF);
State = LOW;
break;
case 22:
digitalWrite (NBDoff, ON);//присутствие нет, генератор да
delay(500);
digitalWrite (NBDoff, OFF);
State = HIGH;
break;
case 33:
digitalWrite (NBDon, ON);//присутствие да,генератор да
delay(500);
digitalWrite (NBDon, OFF);
State = HIGH;
break;
default:
Serial.print("L:");
Serial.print(digitalRead(ESKchek));
Serial.print(":G:");
Serial.print(digitalRead(GENchek));
Serial.print(":G:");
Serial.print(digitalRead(GENchek));
}
Serial.print(":");
Serial.println(dS);
}
}
}
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Автоматический ввод резерва
Немного общих замечаний из собственного опыта по резервному питанию...
1. При 3-фазном вводе разумно нагружать все фазы симметрично. В деревне часто бывает отключение одной или двух фаз из трех, а не сразу всего. Поэтому выделять одну фазу для освещения и необходимого, ИМХО, не самый правильный вариант.
2. Инвертор и так должен автоматически переключаться сам. АВР имеет смысл только для генератора. 5 минут - ниочем, даже автоматический запуск и прогрев генератора могут потребовать большего времени.
3. САП выполняет гораздо больше функций, чем просто контроль наличия входного напряжения. Это и напряжение аккумулятора генератора(и его подзарядка), и контроль аккумуляторов инвертора, и параметров(а не только наличия) входной сети и периодический запуск генератора...
Если САП делать не планируете, то лучше и ввод резерва делать вручную(рубильником через ноль), если будете - то заодно с АВР.
У меня довольно паршивая сеть в деревне, хотя и сделана реконструкция. Имею 2 трехфазных ввода. Один полностью резервирую, второй пока нет. Стоит 3 стабилизатора с байпасами, дальше 3 инвертора(объеденены для работы по 3 фазам) на общий банк аккумуляторов, тоже с байпасами. Один инвертор подключен через САП со своим байпасом. Генератор тоже однофазный, мощность номинальная равна одной фазе, работает на тот же банк аккумуляторов через один из инверторов. Смысл всего в том, что при отключении одной или двух фаз, оставшийся инвертор продолжает подавать напряжение на все фазы и заряжать банк аккумуляторов. При отключении всех фаз, после снижения напряжения на аккумуляторах ниже определенного предела автоматически запускается генератор, который заряжает банк аккумуляторов и через инверторы подает напряжение на все фазы. По достижению верхнего предела заряда аккумуляторов(при отсутствии сети), генератор отключается и цикл повторяется. При появлении питания хотя бы на одной фазе генератор отключается и система переходит на внешнее питание. Дополнительно имеется возможность подкачки мощности от аккумуляторов при превышении лимита потребления от сети.
1. При 3-фазном вводе разумно нагружать все фазы симметрично. В деревне часто бывает отключение одной или двух фаз из трех, а не сразу всего. Поэтому выделять одну фазу для освещения и необходимого, ИМХО, не самый правильный вариант.
2. Инвертор и так должен автоматически переключаться сам. АВР имеет смысл только для генератора. 5 минут - ниочем, даже автоматический запуск и прогрев генератора могут потребовать большего времени.
3. САП выполняет гораздо больше функций, чем просто контроль наличия входного напряжения. Это и напряжение аккумулятора генератора(и его подзарядка), и контроль аккумуляторов инвертора, и параметров(а не только наличия) входной сети и периодический запуск генератора...
Если САП делать не планируете, то лучше и ввод резерва делать вручную(рубильником через ноль), если будете - то заодно с АВР.
У меня довольно паршивая сеть в деревне, хотя и сделана реконструкция. Имею 2 трехфазных ввода. Один полностью резервирую, второй пока нет. Стоит 3 стабилизатора с байпасами, дальше 3 инвертора(объеденены для работы по 3 фазам) на общий банк аккумуляторов, тоже с байпасами. Один инвертор подключен через САП со своим байпасом. Генератор тоже однофазный, мощность номинальная равна одной фазе, работает на тот же банк аккумуляторов через один из инверторов. Смысл всего в том, что при отключении одной или двух фаз, оставшийся инвертор продолжает подавать напряжение на все фазы и заряжать банк аккумуляторов. При отключении всех фаз, после снижения напряжения на аккумуляторах ниже определенного предела автоматически запускается генератор, который заряжает банк аккумуляторов и через инверторы подает напряжение на все фазы. По достижению верхнего предела заряда аккумуляторов(при отсутствии сети), генератор отключается и цикл повторяется. При появлении питания хотя бы на одной фазе генератор отключается и система переходит на внешнее питание. Дополнительно имеется возможность подкачки мощности от аккумуляторов при превышении лимита потребления от сети.
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Автоматический ввод резерва
Да, забыл добавить...
При переходе на резервное питание, автоматика отключает все мощные не приоритетные нагрузки, а при возврате включает(в зависимости от режима - нормальный/экономичный/охрана). Вот для этих целей уже можно разные ардуинки использовать...
При переходе на резервное питание, автоматика отключает все мощные не приоритетные нагрузки, а при возврате включает(в зависимости от режима - нормальный/экономичный/охрана). Вот для этих целей уже можно разные ардуинки использовать...
-
- Сообщения: 12
- Зарегистрирован: Пт фев 12, 2016 9:34 pm
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Re: Автоматический ввод резерва
У вас больше похоже на объект пво.)))
-А по сути: у нас сеть новая, за год особых нареканий нет, кроме отключения когда попало на сколько попало...
1. Фазы примерно симметрично и будут нагружены при 3 фазах:
-свет, холодильник, насос
-духовка, розетки 1 этажа
-бойлер, розетки 2 этажа, улица свет
2. Инвертер маломощный (инвертер - громко сказано - преобразователь напряжения 12DC-220AC) 1200 вт - нужен только для того чтоб до запуска генератора не сидеть впотьмах, питание от автомобильного аккумулятора, вместе с генератором, контроль за состоянием акб и гены будет на др. контроллере.
3. В итоге "сап" (не понял что такое) Cистема автоматического пуска? - будет на генераторе - контроллер генератора, Если что-то иное то ненужно...
-А по сути: у нас сеть новая, за год особых нареканий нет, кроме отключения когда попало на сколько попало...
1. Фазы примерно симметрично и будут нагружены при 3 фазах:
-свет, холодильник, насос
-духовка, розетки 1 этажа
-бойлер, розетки 2 этажа, улица свет
2. Инвертер маломощный (инвертер - громко сказано - преобразователь напряжения 12DC-220AC) 1200 вт - нужен только для того чтоб до запуска генератора не сидеть впотьмах, питание от автомобильного аккумулятора, вместе с генератором, контроль за состоянием акб и гены будет на др. контроллере.
3. В итоге "сап" (не понял что такое) Cистема автоматического пуска? - будет на генераторе - контроллер генератора, Если что-то иное то ненужно...
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Автоматический ввод резерва
Просто у меня пмж предполагается. Соответственно кроме хреновой электрики никаких внешних коммуникаций, вот и приходится о резерве подумать основательно...
У Вас же, как я понял, небольшая дача с дровяной печкой.
Тогда такой момент... Насос с резерва уберите, Ваш инвертор его пуска не выдержит. Ну и генератор ведь на улице? А уличное освещение Вы не резервируете. Может в Вашем случае правильнее будет отдельная линия дежурного освещения(дом,улица) в параллель к основной? Можно даже 12В. Генератор уже есть? Хороший генератор с автозапуском и АВР стоит приличных денег, а на китайский ширпотреб, лучше ручное переключение, ИМХО.
У Вас же, как я понял, небольшая дача с дровяной печкой.
Тогда такой момент... Насос с резерва уберите, Ваш инвертор его пуска не выдержит. Ну и генератор ведь на улице? А уличное освещение Вы не резервируете. Может в Вашем случае правильнее будет отдельная линия дежурного освещения(дом,улица) в параллель к основной? Можно даже 12В. Генератор уже есть? Хороший генератор с автозапуском и АВР стоит приличных денег, а на китайский ширпотреб, лучше ручное переключение, ИМХО.
-
- Сообщения: 12
- Зарегистрирован: Пт фев 12, 2016 9:34 pm
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Re: Автоматический ввод резерва
Освещение и Резерв одна фаза, но две разные ветки - от инвертера только освещение. На улице свет в основном понты... там не так темно ночью как в доме.
Генератор уже есть без АВР, без Автозапуска, но со стартером. Запуск буду городить все равно сам (в продолжении темы)... некоторые впаривают эти самоделки достаточно не за дешево, и еще даж какую-никакую гарантию дают.... Чем мы хуже?
PS. Печка кстати да дровяная, но немецкая, в паре с эл.котлом (жаль не немецким).))
ЗЫ. Эл. котел на резервной фазе висит мозгами и одним теном, для плюса будет достаточно...
Генератор уже есть без АВР, без Автозапуска, но со стартером. Запуск буду городить все равно сам (в продолжении темы)... некоторые впаривают эти самоделки достаточно не за дешево, и еще даж какую-никакую гарантию дают.... Чем мы хуже?
PS. Печка кстати да дровяная, но немецкая, в паре с эл.котлом (жаль не немецким).))
ЗЫ. Эл. котел на резервной фазе висит мозгами и одним теном, для плюса будет достаточно...
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Автоматический ввод резерва
Стартер не главное...сам генератор смотрите, ну и движек. Надеюсь Вы его уже проверили на "совместимость" с холодильником, насосом и "мозгами" котла.andrew писал(а):Генератор уже есть без АВР, без Автозапуска, но со стартером.
"Ни что так не убеждает как собственный опыт..." Удачи!andrew писал(а):Запуск буду городить все равно сам (в продолжении темы)... Чем мы хуже?