Радиовыключатель.
- Сообщения: 265
- Зарегистрирован: Вт янв 01, 2013 15:42:37
Здравствуйте! Прошу помощи в очень непонятном для меня вопросе. Решил я собрать "радиовыключатель" - т.е. устройство позволяющее коммутировать нагрузку посредством радиоволн. Приемник и передатчик использовал от самой дешевой китайской игрушки. Выходное напряжение с приёмника подал на транзисторный ключ на КТ940А, а через него 24В на электромагнитное реле. Затем 5 вольт через свободно разомкнутный контакт снова на транзисторный ключ (самоблокировка). При нажатии кнопки "вперед" реле включалось и самоблокировалось, при нажатии кнопки "назад" встречным потенциалом (полярность на выходе передатчика меняется) транзисторный ключ закрывался и реле вырубалось. Всё было бы прекрасно, но периодически фонарь (нагрузка моего выключателя) стал периодически включатся сам. Это и понятно - ловит всякие помехи и от любого "шороха" тут же включается. Под руками оказался микроконтроллер Attiny2313. Сделал из него D-триггер с задержкой срабатывания, т.е. при подачи лог.1 на вход, с периодичностью в несколько долей секунд он начинает проверять а не исчез ли сигнал со входа и если в течении 2ух секунд сигнал не пропал то меняет состояние выходного порта на противоположенный. Понимаю тупо так использовать МК, но ничего лучше в голову не пришло. Так вот - проблема состоит в том, что при подключении к выходу порта МК светодиода тот довольно успешно загорается на расстоянии до 50 м, но стоит подключить транзисторный ключ к выходу МК, как радиус действия падает до нескольких метров. В чем может быть причина? Питание 5 вольт идет от импульсного БП от сотки. Реле 24вольта, "БП-20 ухл4.2". Все в металлическом корпусе, антенна само собой от корпуса изолирована.
Не ошибается лишь тот - кто ничего не делает.
- Реклама
такие блоки от "соток"xxmafxx писал(а):В чем может быть причина? Питание 5 вольт идет от импульсного БП от сотки.
могут иметь на выходе большие помехи и напряжение от 5 до 8В. Проверили вольтметром хотя бы?
Другого реле нет, на 12В может? Этот БП что питает?Реле 24вольта, "БП-20 ухл4.2".
Вообще лучше покажите схему полностью
- Сообщения: 265
- Зарегистрирован: Вт янв 01, 2013 15:42:37
Щас набросаю схемку. На выходе нормальные 5 вольт (5-5.4). 24 вольта потому что "БП-20" это и есть БП на 24 вольта. В его корпус как раз и уместилось все это борохло, в том числе и реле на 24 вольта для коммутации.
Если это важно вот код МК:
.def temp=r16; дирекива .def назначает регистру r16 имя temp
.def loop=r17; Регистр для подпраграммы задержки
.def loop1=r18;
.def loop2=r19;
.def rab=r20;
;================
; Начало программы
.cseg; директива .cseg определяет начало сегмента, где будет расположен
; основной код программы. В AVR Studio 5 это директива не
; обязательна
.org 0; начало первой строки программы
rjmp Start; относительный переход к метке Start (в PIC соответствует
; команде goto)
; ================
Start:
ser temp; устанавливает все биты регистра temp в 1
out DDRB,temp; переводит все биты порта B на вывод
out PortD,temp; подключает подтягивающие резисторы порта D
clr temp; обнуляет регистр temp
out PortB,temp; отключает подтягивающие резисторы портов B
out DDRD,temp; переводит все биты порта D на ввод
;==================
mine:
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
in temp, PinB; Записываем в temp состояние светодиода
sbrc temp, 3; Равен ли нулю младший бит порта B
rjmp m1;
sbi portB, 3;
rjmp m2;
m1: cbi PortB, 3;
m2: in temp, pinD;
sbrs temp, 0;
rjmp m2;
rjmp mine;
;==========подпрограмма задержки================
wait:
push loop;
push loop1;
push loop2;
ldi loop, 255;
wt1: dec loop;
breq wt4;
ldi loop1, 40;
wt2: dec loop1;
breq wt1;
ldi loop2, 5;
wt3: dec loop2;
brne wt3;
rjmp wt2;
wt4: pop loop2;
pop loop1;
pop loop;
ret;
Но к МК претензий нет - работает отлично.
Сегодня проверю еще раз, но кажется при подключении обычного светодиода на выход МК радиус действия значительно увеличивается. А при подключении транзисторного ключа резко падает. В чем может быть причина такого поведения?
Если это важно вот код МК:
.def temp=r16; дирекива .def назначает регистру r16 имя temp
.def loop=r17; Регистр для подпраграммы задержки
.def loop1=r18;
.def loop2=r19;
.def rab=r20;
;================
; Начало программы
.cseg; директива .cseg определяет начало сегмента, где будет расположен
; основной код программы. В AVR Studio 5 это директива не
; обязательна
.org 0; начало первой строки программы
rjmp Start; относительный переход к метке Start (в PIC соответствует
; команде goto)
; ================
Start:
ser temp; устанавливает все биты регистра temp в 1
out DDRB,temp; переводит все биты порта B на вывод
out PortD,temp; подключает подтягивающие резисторы порта D
clr temp; обнуляет регистр temp
out PortB,temp; отключает подтягивающие резисторы портов B
out DDRD,temp; переводит все биты порта D на ввод
;==================
mine:
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
rcall wait;
in temp, PinD; Записываем в temp состояние кнопки
sbrc temp, 0; Равен ли нулю младший бит порта D
rjmp mine;
in temp, PinB; Записываем в temp состояние светодиода
sbrc temp, 3; Равен ли нулю младший бит порта B
rjmp m1;
sbi portB, 3;
rjmp m2;
m1: cbi PortB, 3;
m2: in temp, pinD;
sbrs temp, 0;
rjmp m2;
rjmp mine;
;==========подпрограмма задержки================
wait:
push loop;
push loop1;
push loop2;
ldi loop, 255;
wt1: dec loop;
breq wt4;
ldi loop1, 40;
wt2: dec loop1;
breq wt1;
ldi loop2, 5;
wt3: dec loop2;
brne wt3;
rjmp wt2;
wt4: pop loop2;
pop loop1;
pop loop;
ret;
Но к МК претензий нет - работает отлично.
Сегодня проверю еще раз, но кажется при подключении обычного светодиода на выход МК радиус действия значительно увеличивается. А при подключении транзисторного ключа резко падает. В чем может быть причина такого поведения?
- Вложения
-
- СХЕМА.JPG
- (83.11 КБ) 321 скачивание
Не ошибается лишь тот - кто ничего не делает.
1 - не силен в АВР, но программа смущает, в том месте, где работаете со светодиодом, но это ладно, раз работает 
но потом вместо светодиода подключаете транзистор и проблемы...
2 - R1 может маловат.
3 - самое главное, если точно используете КТ940, то он во первых n-p-n, а во вторых К и Э надо поменять местами,
если не ошиблись при рисовании, то это может быть причиной.
PS программку под spoiler спрячьте.
но потом вместо светодиода подключаете транзистор и проблемы...
2 - R1 может маловат.
3 - самое главное, если точно используете КТ940, то он во первых n-p-n, а во вторых К и Э надо поменять местами,
если не ошиблись при рисовании, то это может быть причиной.
PS программку под spoiler спрячьте.

