Страница 1 из 1

Сигнализация на ATtiny13a

Добавлено: Сб дек 20, 2014 17:38:51
Kusok
Доброго дня!

Делаю простенькую сигнализацию для квартиры на ATtiny13a, пишу на ассемблере, частота камня 4.8 МГц, + утсновлен предделитель частоты на 8.

Суть работы сигналки в следующем: при выходе из квартиры человек включает потайной переключатель, который подаёт питание на МК.
Пока дверь открыта (люди выходят), сигналка должна пищать, оповещая о своей работе.
Когда дверь закрылась (все вышли), пищалка выключается, сигалка ждёт открытия двери.
Когда дверь снова открывается (например, вошёл злоумышленник), пищалка включается и пищит без остановки (до выключения питания).

А теперь суть просьбы: напишите, пожалуйста, кусок кода, чтобы реализовать счётчик открывания двери и работу пищалки постоянно.

Всё, что мне удалось написать - это включение пищалки по нажатию кнопки (открытию двери):
.include "tn13Adef.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def zero=R20
.def status=R21

.cseg ;начало программного сегмента
.org 0 ;начальный адрес = 0

;******************
;Векторы прерываний
;******************

rjmp RESET ; Reset Handler
rjmp EXT_INT0 ; IRQ0 Handler
rjmp PCINT0t ; PCINT0 Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp EE_RDY ; EEPROM Ready Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp TIM0_COMPA ; Timer0 CompareA Handler
rjmp TIM0_COMPB ; Timer0 CompareB Handler
rjmp WATCHDOG ; Watchdog Interrupt Handler
rjmp AnDC ; ADC Conversion Handler

;RESET
EXT_INT0:
PCINT0t:
TIM0_OVF:
EE_RDY:
ANA_COMP:
TIM0_COMPA:
;TIM0_COMPB:
WATCHDOG:
AnDC:

reti

;****************************************************
; ИНИЦИАЛИЗАЦИЯ
;****************************************************
Reset:
ldi Temp,low(RamEnd) ;установка указателя стека
out SPL,Temp

sbi DDRB,4

ldi Temp,(TIMSK0|0b00001000) ;разрешить прерывание компаратора
out TIMSK0,Temp

ldi Temp,(TCCR0B|0b00000010) ;тактовый сигнал = CK/8
out TCCR0B,Temp

ldi Temp,0x01 ;инициализация компаратора
out OCR0B,Temp

sbi PORTB,3 ;подтянуть PB3 к Vcc

ldi Temp,0
ldi Temp2,250
ldi Temp3,5
ldi zero,0
ldi status,0 ; 0 = тишина, 1 = писк
out TCNT0,zero ;обнуление таймер

;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
main:

sbis PINB,3
sei
sbic PINB,3
cli

rjmp main ;бесконечный цикл


;****************************************************
; ОБРАБОТЧИК ПРЕРЫВАНИЯ КОМПАРАТОРА
;****************************************************

TIM0_COMPB:
out TCNT0,zero ;обнуление таймера

cpi status,1
breq pisk
;;;;;;;;;;;;;;;;;;;; Тишина ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dec Temp2
brne exit
dec Temp3
brne exit

ldi Temp2,250
ldi Temp3,5
inc status
;;;;;;;;;;;;;;;;;;;;; Писк ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pisk: sbis PINB,4
sbi PORTB,4
sbic PINB,4
cbi PORTB,4

dec Temp2
brne exit
dec Temp3
brne exit
ldi Temp2,250
ldi Temp3,5
dec status
reti

exit: reti ;выход из обработчика

Re: Сигнализация на ATtiny13a

Добавлено: Вс дек 21, 2014 15:44:05
Z_h_e
В код не вникал, но режет глаз ошибка.

Код: Выделить всё

ldi Temp,(TIMSK0|0b00001000)	;разрешить прерывание компаратора
out TIMSK0,Temp
Ассемблер язык низкого уровня, бит3 Вы конечно включите таким образом, но включите или выключите другие биты. Чтобы включить бит3, сделайте вот так.

Код: Выделить всё

in Temp,TIMSK0	
ori Temp,0b00001000
out TIMSK0,Temp
З.Ы. Если кто то возжелает написать Вам код, то без схемы все равно не сможет.

Re: Сигнализация на ATtiny13a

Добавлено: Вс дек 21, 2014 17:39:50
Kusok
Спасибо за ценные советы!

Код поправил, схему прилагаю.

Изображение

Re: Сигнализация на ATtiny13a

Добавлено: Вс дек 21, 2014 18:01:52
Z_h_e
По схеме. Коллектор с эммитером местами поменяйте. А лучше + пищалки подключите к +V, минус пищалки к коллектору, эммитер на землю. Сопротивление базы наверняка нужно будет больше поставить (посчитать надо).

Re: Сигнализация на ATtiny13a

Добавлено: Вс дек 21, 2014 18:43:26
Mishany
резистор не меньше 1-2k

Re: Сигнализация на ATtiny13a

Добавлено: Вт дек 30, 2014 20:02:11
Kusok
Z_h_e, спасибо, стало значительно громче.

Mishany, спасибо, сделал 1К.

Re: Сигнализация на ATtiny13a

Добавлено: Ср дек 31, 2014 08:46:47
Z_h_e
Свою задачу то осилили?

Re: Сигнализация на ATtiny13a

Добавлено: Ср дек 31, 2014 09:00:15
Alkul
Kusok писал(а):Суть работы сигналки в следующем: при выходе из квартиры человек включает потайной переключатель, который подаёт питание на МК.
Пока дверь открыта (люди выходят), сигналка должна пищать, оповещая о своей работе.
Когда дверь закрылась (все вышли), пищалка выключается, сигалка ждёт открытия двери.
Когда дверь снова открывается (например, вошёл злоумышленник), пищалка включается и пищит без остановки (до выключения питания).
Какой-то странный у Вас алгоритм.
Kusok писал(а):Когда дверь снова открывается (например, вошёл злоумышленник)
А если не злоумышленник? Если дверь "снова открывается", потому что хозяева вернулись? Пищалка будет пищать? Смысл в такой "сигналке"? Помните сказку про мальчика, который кричал "Волки!"?
Сигналку нужно снабдить минимум двумя "входными" контактами - один - это "концевик" на двери, а второй, к примеру, спрятанный геркон.
Сигналка включается в охранный режим после воздействия на геркон магнитом, после чего начинает отслеживать состояние "концевика" входной двери. Следующее воздействие на геркон выводит сигналку из охранного режима.
Алгоритм работы следующий - вышли из квартиры, поднесли магнит к геркону, включили охрану (при этом будет нелишней индикация включенного режима охраны в виде мигающего светодиода). Вернулись - воздействовали на геркон магнитом, сняли охрану, вошли - сигналка уже не отслеживает "концевик" на двери, пищалка молчит.
Злоумышленник не знает про геркон, поэтому при несанкционированном открытии двери сигналка срабатывает.

P.S. Лучше использовать даже не геркон, а "полярный" датчик Холла, срабатывающий только на магнит определенной "полярности" - дополнительная мера безопасности в отличие от геркона, срабатывающего на любое магнитное поле.

Re: Сигнализация на ATtiny13a

Добавлено: Чт янв 01, 2015 09:57:30
Kusok
Alkul писал(а):Какой-то странный у Вас алгоритм.
Возможно это от того, что я не упомянул, что сигналка включается и выключается потайным выключателем, о котором знает только хозяин.
Таким образом, кто последний вышел - включил прибор, кто первый пришёл - выключил, и ничего не пищит. Но если имел место несанкционированный доступ, то пищать будет всегда. Вроде верно.

Z_h_e писал(а):Свою задачу то осилили?
Увы, нет, поэтому пока будет пищать только при открытой двери.
Собственно не могу сообразить, как организовать счётчик открытия/закрытия двери, чтобы он прибавлял (или лучше убавлял) значение при изменении состояния двери.

Re: Сигнализация на ATtiny13a

Добавлено: Чт янв 01, 2015 10:54:02
Alkul
Kusok писал(а):
Alkul писал(а):Какой-то странный у Вас алгоритм.
Возможно это от того, что я не упомянул, что сигналка включается и выключается потайным выключателем, о котором знает только хозяин.
А на приведенной Вами схеме этого нет. Если Вы просите помощи, то надо давать ВСЮ схему и ставить задачу (описывать алгоритм) ПОЛНОСТЬЮ.
Ну да ладно.
Kusok писал(а): Собственно не могу сообразить, как организовать счётчик открытия/закрытия двери, чтобы он прибавлял (или лучше убавлял) значение при изменении состояния двери.
Я не понял, что именно должен считать счетчик. В том алгоритме, который написал я, ничего считать не надо.
Вот рассмотрим Ваш алгоритм:
Kusok писал(а):Суть работы сигналки в следующем: при выходе из квартиры человек включает потайной переключатель, который подаёт питание на МК.
Пока дверь открыта (люди выходят), сигналка должна пищать, оповещая о своей работе.
Когда дверь закрылась (все вышли), пищалка выключается, сигалка ждёт открытия двери.
Когда дверь снова открывается (например, вошёл злоумышленник), пищалка включается и пищит без остановки (до выключения питания).
Где здесь счет чего-либо?
Или Вы снова чего-то не упомянули?
И еще мне непонятно:
Kusok писал(а):Пока дверь открыта (люди выходят), сигналка должна пищать, оповещая о своей работе.
...
Когда дверь снова открывается (например, вошёл злоумышленник), пищалка включается и пищит без остановки
Вообще смысл Вашей сигнализации в чем? Оповестить соседей о несанкционированном проникновении (хозяев-то в это время дома нет)?
Тогда зачем пищать во время выхода законных хозяев квартиры? Срабатывание пищалки должно быть только во время чужого проникновения, иначе соседи привыкнут к постоянному писку и вообще не будут реагировать на него. Даже когда дверь откроет злоумышленник.
Гораздо логичней
Kusok писал(а):потайным выключателем, о котором знает только хозяин.
не рвать питание МК, а подавать сигнал включения охраны. Прочтите еще раз описание моего алгоритма. Там пищалка при открытой двери включается только если сигналка находится в режиме охраны, пока сигналка на охрану не поставлена, можно сколько угодно раз открывать дверь, пищалка не включится.
И вообще, уж коль скоро Вы решили заниматься электроникой, то учитесь правильно рисовать схемы электрические принципиальные. Схема Вашей сигналки выглядит так:
Сигнализация.JPG
(88.24 КБ) 645 скачиваний
S1 - выключатель питания,
S2 - потайной выключатель, служащий для включения режима охраны. Вместо него лучше использовать датчик Холла.
S3 - контакт на двери
Контакт S3 не мешает цепям программирования МК. У выводов PB0 и PB3 должны быть программно активированы внутренние резисторы подтяжки (pull-up), таким образом, лог.1 - неактивный уровень, лог.0 - активный.
Резистор R2 подтягивает линию RESET к питанию. Конденсатор С1 - блокировочный, его необходимо разместить как можно ближе к выводам МК.

И в дальнейшем при выкладывании схем лучше давать их именно в таком виде. На схемах должно быть абсолютно все. А то, что нарисовали Вы, больше похоже на топологию печатной платы, притом неполную и слабочитаемую.

Re: Сигнализация на ATtiny13a

Добавлено: Вс янв 04, 2015 20:43:01
zhu4er
Детская забава Ваша сигналка. Для бомжей ещё пугнёт, а для настоящего домушника фигня. Вот вор открыл, сигналка сработала, он взял и оторвал от стены коробочку или динамик, вот она и замолчала. Другое дело оповещение по СМС. Даже если вор обесточит квартиру(дом) то СМС всё равно улетит, если питание от аккума. А вообще воры тоже стали умнее, они глушилки включают. Так что всё это из разряда детская забава для "потренироваться в написании быдлокода"

Re: Сигнализация на ATtiny13a

Добавлено: Вс янв 04, 2015 21:33:35
Z_h_e
zhu4er писал(а):"потренироваться в написании быдлокода"
Зачем же так грубо? Я думаю человек просто учится и хочет сделать что-то сам. Пускай делает и имеет право попросить помощи у котов.

Kusok, пищалкой не надо пищать программно. Используйте выход OCO. Настройте его на нужную частоту (он работает от таймера) и Вам всего лишь нужно будет включать или выключать таймер и все само будет пищать :).
На счет счетчика я не понял что Вам нужно. Считать то не проблема. Как Вы хотите передать эту информацию в мозг? Дисплей?

Re: Сигнализация на ATtiny13a

Добавлено: Ср янв 07, 2015 05:19:06
Lihouzov
Я тоже согласен с тем, что творчество надо поощрять.

Попробовал собрать Ваш проект на блоках, вот что получилось:
Изображение

Единственный вопрос, зачем счетчик?

Re: Сигнализация на ATtiny13a

Добавлено: Ср янв 07, 2015 05:40:05
Lihouzov
Доработал:
Суть работы сигналки в следующем: при выходе из квартиры человек включает потайной переключатель, который подаёт питание на МК.
Пока дверь открыта (люди выходят), сигналка должна пищать, оповещая о своей работе.
Когда дверь закрылась (все вышли), пищалка выключается, сигалка ждёт открытия двери.
Когда дверь снова открывается (например, вошёл злоумышленник), пищалка включается и пищит без остановки (до выключения питания).
Изображение

Re: Сигнализация на ATtiny13a

Добавлено: Вс янв 11, 2015 21:34:52
Kusok
Alkul писал(а): Вообще смысл Вашей сигнализации в чем? Оповестить соседей о несанкционированном проникновении (хозяев-то в это время дома нет)?
Тогда зачем пищать во время выхода законных хозяев квартиры? Срабатывание пищалки должно быть только во время чужого проникновения, иначе соседи привыкнут к постоянному писку и вообще не будут реагировать на него. Даже когда дверь откроет злоумышленник.
Смысл - попытаться отпугнуть вора, имитируя наличие охранной системы в квартире. (Ну вдруг подумает, испугается и не полезет дальше).
Звукоизлучатель подобен тем, что ставят на материнках, и пищит он довольно негромко.
У меня тут посто квартира, а никак не военный склад, поэтому (пока) мне достаточно просто пищалки.
zhu4er писал(а): Так что всё это из разряда детская забава для "потренироваться в написании быдлокода"
Мой код далёк от идеала, но если это интересно и к тому же работает, по почему бы и нет.
Z_h_e писал(а): На счет счетчика я не понял что Вам нужно. Считать то не проблема. Как Вы хотите передать эту информацию в мозг? Дисплей?
Ну вот на примере:

включается питание
инициализация системы | счётчик = 3 если дверь в это время закрыта, 2 - если открыта
счётчик = 2 | дверь открыта (все выходят) - пищит
счётчик = 1 | дверь закрыта (дома никого нет) - не пищит
счётчик = 0 | дверь открылась - пищит без остановки
Сброс системы - только выключением питания (сейчас этого достаточно)

По моей задумке, контроллер сам всё посчитает, в мозг ничего передавать не нужно.
Lihouzov писал(а):
Спасибо за участие и новый взгляд на поставленную задачу!

Re: Сигнализация на ATtiny13a

Добавлено: Вт янв 13, 2015 08:39:20
Lihouzov
Доработал алгоритм:

1. ввел задержку включения сигнализации (5-10 минут), данная функция для удобства, чтобы не приходилось по новой взводить сигнализацию. На практике иногда приходится возвращаться домой (например проверил свет)
2. ввел задержку срабатывания сигнализации, время необходимое для снятия сигнализации (20-50 сек)

Получилась следующая программа:
Изображение

В программе выводы взяты произвольно.

Re: Сигнализация на ATtiny13a

Добавлено: Чт янв 15, 2015 16:00:20
Valeriy L
Lihouzov В какой программе это делалось.

Re: Сигнализация на ATtiny13a

Добавлено: Пт янв 16, 2015 14:08:29
Lihouzov
Программа: http://horizontautomatics.ru/Configurat ... ?id=setup1

После установки необходимо обновить.