Реклама ⓘ
Главная » Охрана
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Простейшая сигнализация на ATtiny13

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

Ядром нашего переносного устройства будет микроконтроллер ATTiny 13. Конечно, реализовать подобное решение можно различными способами на разной элементной базе, однако мой вариант реализации будет основан именно на этом МК. Прошивку для МК мы будем писать на ассемблере с подробными комментариями.

Вот необходимые детали:

  • МК ATtiny 13 – 1 шт.
  • Резистор – 10Ком,0,125 Вт -1 шт.
  • Резистор – 100-300 Ом,0,125 Вт – 1 шт.
  • Светодиод
  • Динамик
  • Держатель для элемента питания типа CR 2024
  • Элемент питания
  • Монтажная плата

Предложенный набор деталей является рекомендуемым, и читатель вполне может заменить, к примеру, элементы питания на другие. Важно обеспечить напряжение не менее 3 В. Также обращаю внимание на упоминание монтажной платы.

Для создания данного устройства нам потребуется лишь небольшой фрагмент, который можно отпилить с помощью ножовки. Думаю, что для начинающих радиолюбителей такой вариант монтажа будет лучше, чем травление платы.

Схема устройства довольно простая:

Теперь рассмотрим алгоритм работы нашей программы. Учитывая, что писать прошивку мы будем на ассемблере - не самом интуитивно понятном языке программирования, наличие диаграммы поможет понять принцип работы алгоритма. Несмотря на кажущуюся простоту, здесь есть ряд моментов, на которые необходимо обратить внимание.

 

Как видно из диаграммы, каждое включение или отключение диода и динамика представляют собой выполнение определенного цикла, в процессе выполнения которого устройство повторяет одно и то же действие.

Это касается как мигания светодиода, когда цепь замкнута, так и мигания и подачи звукового сигнала при размыкании цепи.

Перейдем к рассмотрению программной реализации.

.include "tn13def.inc"

;-----------------

.equ SW =3 ; вход на PB3

.equ sekunda =4000 ; интервал времени, примерно соответствующий 1 секунде

.equ LED_ON =800 ; сколько времени горит светодиод (0,2c)

;-------------

.def loop =r17 ; счетчик цикла

.def counter =r18 ; счетчик времени

.def flag =r19 ; счетчик задержки

.def temp =r22 ; переменная для хранения временных значений

;****************************************************************************

.cseg ; основной код программы

.org 0

rjmp reset ; переход к старту программы

;====================================================================

; macros задержки delay

;====================================================================

.macro delay ; данному макросу передается три значения @0 – число итераций, равное 1 сек., @1 – переменная для временных значений @2 – число секунд

inc @1 ; увеличиваем на 1 значение переданного параметра @1

   mov counter,@1 ; далее идет отсчет задержки

pause:

   mov loop,counter; инициализируем значение счетчика

sol:

   rcall Interval; переход на метку Interval

   dec loop; снижаем значение счетчика на единицу

   brne sol ; пока не ноль переходим на метку, если 0 выполняем следующую команду

   ldi flag,@2 ; загружаем значение @2

Cycle:

   ldi XL,Low (@0); нижний байт @0 в XL

   ldi XH,high(@0); верхний байт @0 в XH



delay_:

   sbiw XL,1 ; вычитаем 1 из XL

   brne delay_ ; пока не 0

   dec flag ; вычитаем 1

   brne Cycle; цикл пока не 0

   dec counter ; вычитаем 1

   brne pause ; цикл пока не 0

.endm ;конец макроса

reset: ;начало основной программы

;------------------ Инициализация портов --------------------------------

   ldi temp,0b11110111; 247 в двоичном виде

   out DDRB,temp ;выгружаем в DDRB

   Com temp ; переводим в обратный код

   Out PORTB,temp ; выгружаем в PORTB

main: ;основная процедура

   clr temp; обнуляем значение temp

   cbi PORTB,1; сброс разряда (включение диода)

   delay sekunda,temp, 30 ; пауза

   sbi PORTB,1; установка разряда (выключение диода)

   delay sekunda,temp,30

   sbis PINB,SW ; пропустить следующую команду, если на SW разряд установлен (цепь разомкнута)

   rjmp main ; переходим к началу

alarm: ; действия при разрыве цепи

   cbi PORTB,2; установка разряда (включение динамика)

   cbi PORTB,1; установка разряда (включение диода)

   delay sekunda,temp,30; пауза

   sbi PORTB,2; установка разряда (выключение динамика)

   sbi PORTB,1; установка разряда (выключение диода)

   delay sekunda,temp,30;

   rjmp main; переходим к началу

;---------------------------------функция Interval------------------------------------------

Interval:

   ldi YL,Low (LED_ON) ;

   ldi YH,high (LED_ON) ;

on_:   sbiw YL,1

   brne on_

   ret

В качестве средства разработки и компиляции использовалась среда AVR Studio 4. Микроконтроллер прошивался с помощью Avrdude.

FUSE биты не изменялись. На рисунке приведены исходные, использовавшиеся при прошивке.

Процесс сборки

Вот что нам потребуется

После сборки на макетной плате по приведенной выше схеме, получаем следующее:

А вот так выглядит готовое устройство. В качестве корпуса выбрана капсула от шоколадного яйца Киндер сюрприз. На фото динамик вынесен отдельно, для установки рядом с ухом, а плата и батарейка помещаются внутрь пластикового корпуса.

Устройство в собранном виде.

Полное описание процесса сборки устройства представлено на видео

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МК AVR 8-бит
ATtiny13
1 Поиск в магазине ОтронВ блокнот
Резистор
10 кОм
1 Поиск в магазине ОтронВ блокнот
Резистор100-3001 Поиск в магазине ОтронВ блокнот
Светодиод1 Поиск в магазине ОтронВ блокнот
Динамик1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 14.10.2017 0 1
Я собрал 0 Участие в конкурсе 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.8 Проголосовало: 2 чел.

Комментарии (6) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
4uvak #
Неплохо на схеме нарисовать ключ (обозначение первого вывода МК), чтобы радиолюбителей начального уровня не ввести в заблуждение
Ответить
+1
Алексей #
Сделай через прерывание с режимом глубокого сна - и девайс будет работать вечно и светодиод не понадобится
Ответить
0

[Автор]
powermetall #
Ключик добавил.
Ответить
0
olega88 #
Ещё-бы и вход к плюсу подтянуть..
Ответить
0
freestik #
Хорошая идея, но мне кажется слишком громоздко получилось
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

200 Вт усилитель класса D на IRS2092
200 Вт усилитель класса D на IRS2092
Радиореле 220В Arduino UNO
вверх