Страница 2 из 8
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 11:30:18
kotyk7
Выкладываю, что наваял на сей день :
Код: Выделить всё
/*
* Project name:
акустичний вимикач
* Copyright:
(c) Mikroelektronika, 2011. Котик В. Львів
* Revision History:
20111014:
- initial release;
* Description:
//Порт А вхід порт С вихід
* Test configuration:
MCU: PIC16F676
http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf
dev.board: easypic6eds
http://www.mikroe.com/eng/products/view/297/easypic6-development-system/
Oscillator: RS, 4.0000 MHz
Ext. Modules: -
SW: mikroC PRO for PIC
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
* NOTES:
*/
//обьявляєм функции
void interrupt();
void port_OUT();
unsigned int temp_res0; // дані АЦП0 (фотодатчик)
unsigned int temp_res1; // дані АЦП1 (підпорка)
unsigned char Status_Foto; // прапорець фотодатчика
unsigned char Status_INT; // прапорець зовнішнього сигналу
unsigned char counter; //переменная таймера 0
unsigned char tmp_0; //переменная времени работы таймера 0
unsigned char Flag; // тоже нужен
void port_OUT() //выход
{
if (temp_res0 <= temp_res1) // проверка срабатывания компаратора
{PORTC |= (1<<4); // 1 -> C4
Status_Foto = 1;}
else {PORTC &= (~(1<<4));} //0 -> C4
if (Status_INT == 1) // проверка прерыв. по звуку и запуска таймера
{Flag =1;
PORTC |= (1<<3); // 1 -> C3
Status_INT =0;}
else {PORTC &= (~(1<<3));} //0 -> C3
if ((Status_INT == 0) && (tmp_0 != 0))
{Flag =0; }
if ((Flag == 1) && (Status_Foto != 1))//не сработал ли фотодатчик?
{
PORTC |= (1<<5); // 1 -> C5
}
else {PORTC &= (~(1<<5)); //0 -> C5
Status_Foto = 0;
}
if (tmp_0 == 2) // время срабатывания 30сек. (кратность 15 сек.)
{ PORTC |= (1<<1); // 1 -> C1
delay_ms(100);
tmp_0 = 0; }
else {PORTC &= (~(1<<1));} //0 -> C1
}
void interrupt() // прерывание по INT/RA2
{ delay_ms(20);
if ((INTCON.INTF) && (INTCON.RAIF))
{Status_INT = 1;
counter = 0;}
PORTA = PORTA.F2 |0;
INTCON.INTF = 0; //Сбошен флаг прерывания
INTCON.RAIF = 0;
if ((INTCON.T0IF) && (INTCON.T0IE))
{ counter++; // прибавление до 100 (в сумме 1 сек)
T0IF_bit = 0; // сброс флага прерывания по переполнению TMR0
if (counter == 250)
{ TMR0 = TMR0 + 250; // предзагрузка TMR0
counter = 0;
tmp_0 = tmp_0 + 1; // счетчик времени
}
}
}
void main() {
//==================
// Процедура настроки используемых ресурсов PIC16F676
//==================
TRISA = 0b111111; // PORTA is input
PORTA = 0b111111;
TRISC = 0b000000; // PORTС is output
PORTC = 0b000000;
CMCON = 0x07; //настройка внутреннего компаратора
ANSEL = 0b000000011; //настройка порта А как анналоговый вход
// Enable external interrupt
INTCON.GIE = 1; // разрешить все прерывания
INTCON.INTE = 1; // разрешить прерывание INT
INTCON.RAIE = 1; //Разрешение прерывания по изменению сигнала на входах PORTA
IOCA.IOCA2 = 1; //Разрешение прерывания на входе RA2: 1=разрешено
// Timer0 Registers:
// Prescaler=1:64; TMR0 Preset=6; Freq=250,00Hz; Period=4 000 000 ns
option_reg = 0b11010111; //коэфициента деления предделителя 1:256
//OPTION_REG.RAPU =1;
//OPTION_REG.INTEDG =1;
//OPTION_REG.T0CS = 0;// bit 5 TMR0 Clock Source Select bit:0=Internal Clock (CLKO) / 1=Transition on T0CKI pin
//OPTION_REG.T0SE = 1// bit 4 TMR0 Source Edge Select bit: 1=high/0=low
//OPTION_REG.PSA = 0;// bit 3 Prescaler Assignment bit: 0=Prescaler is assigned to the Timer0
//OPTION_REG.PS2 = 1;// bits 2-0 PS2:PS0: Prescaler Rate Select bits
//OPTION_REG.PS1 = 0;
//OPTION_REG.PS0 = 1;
TMR0 = 6; // Timer0 initial value
T0IE_bit = 1; //Разрешение прерывания по переполнению TMR0
T0IF_bit = 0; // сброс флага прерывания по переполнению TMR0
while (1) {
temp_res0 = ADC_Read(0); // get ADC value from 4nd channel
temp_res1 = ADC_Read(1); // get ADC value from 1nd channel
Delay_ms(20);
port_OUT();
}
}
и файл протеуса в архиве
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 15:54:21
Flasher
а кто сказал что они понимают только реле? Они управляются всем.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 16:02:28
kotyk7
Если чесно, то управлять симисторами "сберегайку" не пробовал, да и на пачке написано, что не зя....я!!! А в остальном интересно услышать мысли и предложения и, особо, практический опыт.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 16:38:54
Flasher
Написано только что нельзя подключать диммеры(есть специальные лампы, которые расчитаны на это)- иначе лампа выйдет из строя из-за теплового пробоя транзисторов вследствии возросших токов и смещения резонансных частот от пониженного напряжения питания. Включать- отключать можно абсолютно всем. Включать, желательно, в начале полупериода, чтобы минимизировать зарядные токи фильтрирующего конденсатора электронной схемы. Для этого и нужна привязка к сети(ну или можно поставить оптосимистор со схемой включения в "0"- мос3083). Если использовать лампу накаливания- то тут одназначно нужно делать плавное включение для продления ее ресурса. Мое мнение- использовать энергосберегающие лампочки в устройстве, которое не долго находится во включенном состоянии- бред. Потому что: а) экономия не очевидна; б) полная яркость у энергосберегающих ламп будет только после нескольких минут разогрева; в) во всех дешевых энергосберегайках при зажигании используется ударный нагрев нитей накала- они долго не выживут при частом включении.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 17:45:38
kotyk7
Очень буду рад наброскам практической реализаци применительно к даному случаю.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 17:57:09
Flasher
А что тут набрасывать- за основу берете мою схемотехнику и вперед, напильником... Как я понимаю, достаточно добавить фоторезистор и еще один подстроечный резистор- вот и ваша мечта сбудется. Правда, у вас другой микроконтроллер.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 14, 2011 21:27:19
kotyk7
Со схемами проблем нет, а вот как писать программу я пока не понял.
Пока, я так понимаю, надо подключить еще один таймер и организовать периодическое измерение напряжения на входном порте от нуля до 5 вольт. Типа синусоиды. А какой период измерения нужен?
Да, еще... для измерения синусоиды ведь нужно прерывание по внешнему сигналу и таймер скажем ТМRО, а оные уже используються...
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Сб окт 15, 2011 12:08:07
kotyk7
Немного погуглил
Решил пойти немного по другому пути. Вот схема:
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 21, 2011 12:32:46
vin_07
Flasher писал(а):http://radiokot.ru/konkurs/35/
Вот Вам в лапы мой проект для изучения.
Добавить бы в Вашу схему фотодатчик и возможность редактирования прямо в хексе времени включенного состояния. По первому пункту пока не придумал ничего, кроме как допаять оу компаратором, с которого будет поступать питание на микрофон, когда темно. если оу сдвоеный, то вторую часть можно под унч применить. Кстати, поподробнее, как чуствительность Вашего девайса?
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 21, 2011 16:35:20
Flasher
Докладываю: чувствительность отменная. Регулируется от тихого шороха до громкого хлопка. Компаратор не нужен: ноги МК -это триггер Шмитта. Редактировать в хексе- дурной тон. Если надо- могу исходник выслать. А там хоть заредактируйтесь

Фотодатчик по просьбам трудящихся приделаю и выкладу.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 21, 2011 16:45:19
kotyk7
Mr. Flasher, не нервничайте. Гланое есть у людей желание что-то да створить, даже если за чей-то счет, но это уже другая история.
Mr. vin_07, Вам прям счастливый билет выпал.
Главное немного подождать. Или будет модернизирован прекрасный вариант от Flasherа или я понемногу свое творение доделаю, а он по все видимости будет с откритым кодом, тоесть исходником.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 21, 2011 16:56:13
Flasher
kotyk7, даже и не думал нервничать

Делайте свой вариант, я же не против, помогаю чем могу. Свое устройство я уже себе поставил в коридоре и забыл про проблему с освещением, как и про само устройство. Доделывать планирую через пару неделек, так что времени-навалом.
А вот свой исходник я не выкладываю в общий доступ- но высылаю по первому же запросу.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Пт окт 21, 2011 18:13:42
kotyk7
Mr. Flasher, я к сожадению не могу похвастаться временем, но я стараюсь.
Я смотрел Ваш исходник, спасибо, но решил, как часто это бывает, пойти по своему пути. Потому, что я впервые столкнулся с необходимостью управления симистором через ноль сети с помощю МК. (В этом деле я "... еще не волшебник, а только учусь..."). Чтобы все хорошо понять попробую все "грабли" на ощупь... Это лирика, а на практике, что уже сделал:
- Начал проект программы так сказать с нуля и с другого конца. А именно с постоения ШИМ синхронизированого с сетью. Короче, апаратного блока ШИМ на бору МК нет. Пришлось все ручками... Активировал имеющийся в единственном числе компаратор на вход сигнала от сети (100Гц). Пришлось АЦП перенести на другие входы. Подключил прерывание ТМR0 (на 10мкс) и позвязал его работу к прерыванию компаратора. Короче "на выходе получил "импульсный шум" с нужной периодичностью.
- Теперь займусь скважностью импульса в ШИМе, а там думаю учтем и регулировку можности.
Все труды в ахиве.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Сб окт 22, 2011 18:19:33
vin_07
Flasher писал(а):Докладываю: чувствительность отменная. Регулируется от тихого шороха до громкого хлопка.
Отличное известие!
Flasher писал(а): Компаратор не нужен: ноги МК -это триггер Шмитта. Редактировать в хексе- дурной тон.
Ну, это для тех случаев, когда или исходник засекречен или нет возможности перекомпилироватьт и т.п.
Flasher писал(а):Фотодатчик по просьбам трудящихся приделаю и выкладу.
Заранее спасибо!
kotyk7 писал(а):Mr. vin_07, Вам прям счастливый билет выпал.
Главное немного подождать. Или будет модернизирован прекрасный вариант от Flasherа или я понемногу свое творение доделаю, а он по все видимости будет с откритым кодом, тоесть исходником.
счастливый билет эт хорошо

ранее подобное делал на основе 145АП2, получалось громоздко, с мк существенно приятнее. Исходя из наличия деталей и того, что проект уже опробован в железе, остановлюсь, видимо, на схеме Flasher. Уж извините.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Сб окт 22, 2011 22:27:04
Flasher
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Вс окт 23, 2011 16:17:32
kotyk7
Mr. vin_07, нет проблем, я энто все делаю для себя и под себя (хотя соглпсен учеть и пожелания или нужды других), а Ваше дело либо согласиться либо отказаться.
А если кому понравится и решит повторить, ну что ж, тоже хорошо.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Чт окт 27, 2011 20:40:50
kotyk7
Итак, маленький отчет:
Программа управления МК с учетом управления с помощь симистора написана.
Да, реле тоже осталось. Так, что получилось универсальное дитя. Хочешь симистор, - прошу, а надо реле - тоже ни в чем себе не отказывай. Симистор с управлением через ноль с возрастанием мощности, а реле - как реле клац и все...
Програма писалась в MikroC, не хотелось на "разборки" с регистрами АЦП время тратить. Да, текст программы не самый оптимальный, но зато заточен на облегченное понимание сути происходящих процесов и облегченное понимание способов начальной настройки и работы с встроенымы узлами МК. Использовал все имеющуюся мощность PIC16F676 так сказать по максимуму. Не задействовано только компаратор. Думал и о нем даже испытал программу с ним, но потом подумал, что "что за много, то не здраво". Надо же что то оставить для возможной последующей модернизации.
Если кто подумал: "О ужас - это программа монстр!". Не - а... Всего
Used RAM (bytes): 23 (48%) Free RAM (bytes): 25 (52%)
Used ROM (program words): 448 (44%) Free ROM (program words): 576 (56%)
Тоесть меньше половины 1 кБт имеющейся флешпамяти проца.
Правда конечно можно было бы еще немного ее "почистить", но желания пока нет. Перехожу к следующему этапу, - схему в целом рисовать.
Короче, кому чего не нравиться меня не пинать. Предлагать только готовые решения или толковые замечания.
Внизу, все как обещал, в открытом виде.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Чт окт 27, 2011 20:45:58
kotyk7
Код: Выделить всё
/*
* Project name:
акустичний вимикач
* Copyright:
(c) Mikroelektronika, 2011. Котик В. Львів
* Revision History:
20111014:
- initial release;
* Description:
//Порт А вхід порт С вихід
* Test configuration:
MCU: PIC16F676
http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf
dev.board: easypic6eds
http://www.mikroe.com/eng/products/view/297/easypic6-development-system/
Oscillator: RS, 4.0000 MHz
Ext. Modules: -
SW: mikroC PRO for PIC
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
* NOTES:
*/
//обьявляєм функции
void init();
void interrupt();
void port_OUT();
unsigned int temp_res0; // дані АЦП0 (фотодатчик)
unsigned int temp_res1; // дані АЦП1 (підпорка)
unsigned int TMR_INT; //счетчик времени INT
unsigned char Status_Foto; // прапор фотодатчика
unsigned char Status_INT; // прапор нуля в мережі
unsigned char Status_Sound; // прапор зовнішнього сигналу
unsigned char Sound; // прапор зовнішнього сигналу
unsigned char Status_Timer; // прапор 30 сек. таймера
unsigned char Timer; // прапор фіксатор таймера
unsigned char Timer_Sym_F; // прапор для симістора - включаем
unsigned char TMRR_1; // счетчик TMR1
unsigned char Status_Work; // прапор дозволу роботи ламп
unsigned char PA2; // перемінна від мережі 220
unsigned char PA4; // перемінна від мікрофону
unsigned char TMR0_1; // крок ітерацій управління сімістором
unsigned char QW; // выборка мощности
void port_OUT() //выход и анализ флагов субмодулей
{
if (temp_res0 <= temp_res1) // проверка срабатывания компаратора
{PORTC |= (1<<3); // 1 -> C3 // на двух АЦП
Status_Foto=1;
}
else {PORTC &= (~(1<<3)); //0 -> C3
Status_Foto=0;
}
if (Sound) { // флаг прихода звука
PORTC |= (1<<2); // 1 -> C2
Sound =0;
Status_Sound =1; // прапорець зовнішнього сигналу
Delay_ms(8);
PORTC &= (~(1<<2)); //0 -> C2
}
if (Timer==0) { // защелка таймера
PORTC |= (1<<0); // 1 -> C0
Status_Timer =1;
}
if (Timer==1) {PORTC &= (~(1<<0)); //0 -> C0
Status_Timer =0;
Timer_Sym_F = 0; //обнуляем счетчик роста мощности симистора
}
// логика сравнений состояния всех узлов
if ((Status_Sound) && (Status_Foto ==0) && (Status_Timer))
{Status_Work =1; // флаг все разрешено
PORTC |= (1<<5); // 1 -> C5 //управление реле
}
else { Status_Work =0;
Status_Sound = 0;
PORTC &= (~(1<<4)); //0 -> C4
PORTC &= (~(1<<5)); //0 -> C5
}
}
void interrupt() // прерывание по INT/RA2
{
if (INTCON.INTF)
{
INTCON.INTE = 0; // запретить прерывание INT
T0IE_bit = 1; //Разрешение прерывания по переполнению TMR0
T0IF_bit = 1; //синхрошизируем с TMR0
PA2 = PORTA.F2; //читаем состояние порта А
Status_INT = 1; // флаг INT поднят
INTCON.INTF = 0; //Сбошен флаг прерывания
INTCON.INTE = 1; // разрешить прерывание INT
TMR0_1 = 0; // синхронизация с шагом TMR0
}
if (INTCON.RAIF) // прерывание по RA4
{ PA4 = PORTA.F4; //читаем состояние порта А
IOCA.IOCA4 = 0; // запрет прерывания по RA4
if (PA4 ==1) { // подымаем флаг
Delay_us(5);
Sound =1; }
INTCON.RAIF = 0; //Сбошен флаг прерывания
IOCA.IOCA4 = 1; // разрешаем прерывания по RA4
TMRR_1 =0; //обнуляем таймер секунд
Timer =0;
TMR1IF_bit = 1; // clear TMR0IF
Timer_Sym_F = 0;
}
if ((INTCON.T0IF)) //таймер 1кГц
{ T0IF_bit = 0; // сброс флага прерывания по переполнению TMR0
if (Status_INT = 1){
TMR0 = 131; // предзагрузка TMR0
TMR0_1 = TMR0_1 + 1;
if ((Status_Foto==0) && (Status_INT = 1)&& (Status_Work))
{ Delay_us(50); // формируем выходной сигнал симистора
if (QW == 10) //мощность 100%
{
if (TMR0_1 !=5){
if (TMR0_1==1){
PORTC |= (1<<4); // 1 -> C4
}
if (TMR0_1==4)
{
PORTC &= (~(1<<4)); //0 -> C4
}
}
}
if (QW == 8) //мощность 80%
{
if (TMR0_1 !=5){
if (TMR0_1==1){
PORTC &= (~(1<<4)); //0 -> C4
}
if (TMR0_1==2){
PORTC |= (1<<4); // 1 -> C4
}
if (TMR0_1==5){
PORTC &= (~(1<<4)); //0 -> C4
}
}
}
if (QW == 6) //мощность 60%
{
if (TMR0_1 !=5){
if (TMR0_1==1){
PORTC &= (~(1<<4)); //0 -> C4
}
if (TMR0_1==3){
PORTC |= (1<<4); // 1 -> C4
}
if (TMR0_1==5){
PORTC &= (~(1<<4)); //0 -> C4
}
}
}
if (QW == 4) //мощность 40%
{
if (TMR0_1 !=5){
if (TMR0_1==1){
PORTC &= (~(1<<4)); //0 -> C4
}
if (TMR0_1==4)
{
PORTC |= (1<<4); // 1 -> C4
}
if (TMR0_1==5){
PORTC &= (~(1<<4)); //0 -> C4
}
}
}
if (QW == 0) //мощность 0%
{
if (TMR0_1==1){
PORTC &= (~(1<<4)); //0 -> C4
}
}
}
Status_INT = 0; // все обнуляем
if (TMR0_1 ==5) {TMR0_1 = 0; }
if (TMR0_1 ==5) {T0IE_bit = 0;}
}
}
if ((TMR1IF_bit)) // прерывание счетчика в 0,5 секунд
{
TMR1IF_bit = 0; // clear TMR0IF
TMR1H = 0xB; // preset for timer1 MSB register
TMR1L = 0xDC; // preset for timer1 LSB register
TMRR_1++; // периоды формирования сигнала управл. симистора
Timer_Sym_F++; //счетчик периодов мощности на вкл.
if (Timer_Sym_F >=5) { Timer_Sym_F = 4; } // ограничитель периодов
}
// здесь задаем период свечения ламп
if (TMRR_1 == 60){Timer =1;} // период счета 05 сек.
if (TMRR_1 > 60){Timer =0;
TMRR_1 =0;} //считаем до 30 сек.
}
void main() {
//==================
// Процедура настроки используемых ресурсов PIC16F676
//==================
TRISA = 0b111111; // PORTA is input
PORTA = 0b111111;
TRISC = 0b000000; // PORTС is output
PORTC = 0b000000;
ANSEL = 0b001100011; //настройка порта А как анналоговый вход
INTCON.GIE = 0; // запретить все прерывания
INTCON.PEIE = 1; // разрешить прерываний от периферийных модулей
INTCON.INTE = 1; // разрешить прерывание INT
INTCON.RAIE = 1; //Разрешение прерывания по изменению сигнала на входах PORTA
IOCA.IOCA4 = 1; //Разрешение прерывания на входе RA4: 1=разрешено
OPTION_REG = 0b11010011;
// Timer0 Registers:
// Prescaler=1:16; TMR0 Preset=131; Freq=2 000,00Hz; Period=0,50 ms
//OPTION_REG.T0CS = 0;// bit 5 TMR0 Clock Source Select bit:0=Internal Clock (CLKO) / 1=Transition on T0CKI pin
//OPTION_REG.T0SE = 1;// bit 4 TMR0 Source Edge Select bit: 0=low/high / 1=high/low
//OPTION_REG.PSA = 0;// bit 3 Prescaler Assignment bit: 0=Prescaler is assigned to the Timer0
//OPTION_REG.PS2 = 0;// bits 2-0 PS2:PS0: Prescaler Rate Select bits
//OPTION_REG.PS1 = 1;
//OPTION_REG.PS0 = 1;
TMR0 = 131; // preset for timer register
T0IF_bit = 0; // сброс флага прерывания по переполнению TMR0
T0IE_bit = 0; //Разрешение прерывания по переполнению TMR0
// Timer1 Registers:
// Prescaler=1:8; TMR1 Preset=3036; Freq=2,00Hz; Period=0,50 s
INTCON.TMR1ON =0;
TMR1IF_bit = 0; // clear TMR1IF
T1CON.T1CKPS1 = 1;// bits 5-4 Prescaler Rate Select bits
T1CON.T1CKPS0 = 1;
T1CON.T1OSCEN = 1;// bit 3 Timer1 Oscillator Enable Control: bit 1=on
T1CON.TMR1CS = 0;// bit 1 Timer1 Clock Source Select bit: 0=Internal clock (FOSC/4) / 1 = External clock from pin T1CKI (on the rising edge)
T1CON.TMR1ON = 1;// bit 0 enables timer
TMR1H = 0xB; // preset for timer1 MSB register
TMR1L = 0xDC; // preset for timer1 LSB register
INTCON.TMR1ON =1;
INTCON.GIE = 1; // разрешить все прерывания
while (1) {
// меряем напряжение от подпорки и фотодатчика
temp_res0 = ADC_Read(0); // get ADC value from 4nd channel
temp_res1 = ADC_Read(1); // get ADC value from 1nd channel
// все соотносим и решаем
port_OUT();
// формируем последовательность для симистора
if (Status_Work) {
switch (Timer_Sym_F) {
case 0: QW = 0; break; // 0%
case 1: QW = 4; break; // 40%
case 2: QW = 6; break; // 60%
case 3: QW = 8; break; // 80%
case 4: QW = 10; break; // 100%
}
}
}
}
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Чт окт 27, 2011 20:54:37
kotyk7
Схема цифровой части. Светодиоды мне лично нравяться, может внатуре оставлю.
Re: Акустический выключатель с использованием микроконтролле
Добавлено: Чт окт 27, 2011 21:52:31
kotyk7
Тут у меня вопрос созрел, а безтрансформаторное питание реле потянет?