Сигнализация с датчиком наклона на микроконтроллере AVR ATmega8

В этой статье мы рассмотрим сигнализацию на микроконтроллере ATmega8 (семейство AVR), основанную на анализе колебаний.

Сигнализация с датчиком наклона на микроконтроллере AVR ATmega8: внешний вид

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

Внешний вид датчика наклона

Одним из ключевых компонентов рассматриваемого датчика наклона является цилиндр (хорошо видный на фото), в который помещен свободно катающийся металлический шар. Внизу цилиндра расположены два металлических контакта. Когда датчик наклоняют шар скатывается вниз и замыкает цепь между этими контактами. Это замыкание цепи обнаруживается операционным усилителем датчика, который подает на выход датчика высокое напряжение. Мы этот сигнал в дальнейшем будем передавать на микроконтроллер ATmega8 для соответствующей обработки.

Необходимые компоненты

Аппаратное обеспечение

  1. Микроконтроллер ATmega8 (купить на AliExpress).
  2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  3. Конденсаторы 1000 мкФ (купить на AliExpress) и 100 нФ (купить на AliExpress).
  4. Светодиод (купить на AliExpress).
  5. Кнопки (5 шт.).
  6. Резистор 220 Ом (купить на AliExpress).
  7. Резистор 10 кОм (купить на AliExpress).
  8. Источник питания с напряжением 5 Вольт.
  9. Транзистор 2n3906 (купить на AliExpress).
  10. Звонок (зуммер) (купить на AliExpress).
  11. Датчик наклона (купить на AliExpress).
  12. Резистор 1 кОм (6 шт.) (купить на AliExpress).

Программное обеспечение

  1. Atmel Studio версии 6.1 (или выше).
  2. Progisp или flash magic (необязательно).

Работа схемы

Схема устройства приведена на следующем рисунке.

Схема сигнализации с датчиком наклона на микроконтроллере AVR

В данном случае у нас нет необходимости в использовании внешнего тактового генератора – возможностей внутреннего RC-генератора микроконтроллера ATmega8 нам будет вполне достаточно. Внешний тактовый генератор, в основном, востребован в приложениях реального времени, в которых важна точность измерения временных интервалов. При покупку микроконтроллера его фьюзы сконфигурированы на работу от внутреннего RC-генератора.

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

После этого только авторизованное лицо может отключить сигнализацию. Для этой цели служат 5 кнопок, представленные на схеме, которые реализуют 4999 возможных комбинаций. И только одна из этих комбинаций (назначенная) отключает сигнализацию. Таким образом, только лицо, знающее правильную комбинацию, может отключить сигнал тревоги.

Исходный код программы на языке С (Си) с пояснениями

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

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
271 просмотров

Комментарии

Сигнализация с датчиком наклона на микроконтроллере AVR ATmega8 — 6 комментариев

  1. Добрый день, я студент и сейчас учусь программировать микроконтроллеры, не могли бы вы поделиться hex файлом для прошивки? Я бы был вам очень признателен

    • Добрый вечер, к сожалению сейчас вынужден работать на компьютере (надеюсь временно), на котором не установлено программное обеспечение чтобы сделать hex файл из представленной в этой статье программе. Но этот процесс достаточно хорошо описан в статье программирование микроконтроллеров AVR с помощью программатора USBASP и Atmel Studio 7.0. Также hex файл можно сделать с помощью CodeVisionAVR - этот процесс описан в статье про подключение GSM модуля к микроконтроллеру AVR ATmega16. Также можно использовать программу AVRDUDE_PROG.

      • Спасибо за такой быстрый ответ, честно, учитывая когда была написана статья, я думал, что мне уже не ответят) Просто проблема в том, что я уже собирался сделать hex файл в Code Vision AVR, но компилятор мне выдал несколько ошибок. Например, не объявлены переменные bit_is_clear и bit_is_set, переменную i он тоже не видит, и ещё несколько ошибок. Поэтому я предложил, что код представлен не в полном виде. Могли бы вы объяснить, в каком виде представить эти переменные? Заранее большое спасибо

        • Я стараюсь оперативно (в течение 1-2 дня) отвечать на все свежие комментарии на сайте. Но когда в отпуске - то так не получается уже, к сожалению.
          bit_is_clear и bit_is_set - это не переменные, это команды, позволяющие проверить состояние контакта: на нем логический ноль (bit_is_clear) или логическая единица (bit_is_set).

          • Как ни странно, но сначала мне компилятор выдавал кучу ошибок, а сегодня я просто создал новый проект и все скомпилировалось... Наверно, это тот самый эффект сисадмина, когда профи заходит в комнату и сразу помимо компьютера чинится все в радиусе одного офиса) Сегодня буду собирать и тестировать схему)

            • Удачи. Я рад что у вас начало получаться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *