Дверной звонок на микроконтроллере

Дверной звонок на ATtiny15

Дата публикации: 03 августа 2010 .

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

Для музыкального звонка был выбран простейший микроконтроллер ATtiny15 от компании Atmel. Малое количество выводов, небольшой корпус, многофункциональность — все эти характеристики очень привлекательны для микроконтроллерного моделирования. Основная идея заключалась в дублировании китайского звонка с добавлением схемы генерирования музыки, а так же в реализации ее полностью автономной, независимой работы. Кроме того, был организован контроль питающей сети. Как только питание сети исчезает, схема начинает потреблять ток от электролитического конденсатора, а при падении напряжения ниже нормы контроллер прерывает программу и переходит в «спящий» режим.

Схема может работать как отдельное устройство или быть подключенной в точках А и В к схеме домашнего звонка. Питание осуществляется от сети переменного напряжения 220 В. Однополупериодный выпрямитель с ограничением по току питает схему мощного стабилитрона и стабилизатора напряжения. Цепь понижения напряжения сети до уровня 9 В (R1, СЗ) рассчитана на ток потребления 40 мА. Ток стабилизации стабилитрона составляет 20 мА — столько же потребляет стабилизатор напряжения 5 В, питающий микроконтроллер в течение работы устройства. В момент включения основной ток потребляет конденсатор С2, но этот ток ограничен реактивным сопротивлением С2 и сопротивлением R1. Конденсатор C2 так же выполняет функцию источника тока в момент отключения питания схемы, при этом D2 запирается, и потребителями остаются R5, R4, LED1, R3, Dl, R2, IC2.

При снижении напряжения на С2 до уровня менее 9 В стабилитрон D1 уменьшает потребление тока до минимума и отключается. Конденсатор С4 сглаживает высокочастотные импульсные помехи, проходящие из сети в схему питания. Конденсаторы R5 и R4 составляют делитель напряжения на стабилитроне D1 (необходим для измерительного канала микроконтроллера). Измерительный канал не содержит схему выборки и хранения, а так же интегратора и фильтра верхних частот, поскольку эти функции выполняют фильтрующие элементы питания С2, С4. Функцию интегратора выполняет ограничительный стабилитрон D1.

Микроконтроллер включается, как только подается напряжение питания. При этом светится светодиод LED1. При падении напряжения на стабилитроне D1 до уровня менее 9 В микроконтроллер переходит в «спящий» режим. Как только на микроконтроллер поступает напряжение питания, он формирует низкочастотные сигналы музыкальных мелодий на пъезоизлучателе. Для лучшего воспроизведения мелодии можно использовать динамик, но при этом для него необходимо обеспечить усилитель по току (на микросхеме или на транзисторе) и увеличить емкость С2.

Программа

Программа разработана для микроконтроллера с тактовой частотой 4 МГц. Ее выполнение при включении питания начинается с вектора прерывания, по которому она переходит в заданную вектором подпрограмму. При сбросе вектор прерывания переводит программу к метке RESET. Далее программа выполняет проверку питающего напряжения. Эту функцию выполняет АЦП при помощи одиночного преобразования. Программа проверяет напряжение питания схемы, и в случае падения его ниже уровня 0,89 В микроконтроллер переходит в «спящий» режим.

После успешного прохождения проверки питания значения всех переменных сбрасываются в ноль, а так же настраивается порт ввода-вывода и два таймера: ТО и Т1. Таймер ТО предназначен для установки времени звучания мелодии, а таймер Т1 — для установки частоты выбранной ноты. Таймер Т1 настроен на синхронизацию от тактового генератора микроконтроллера с коэффициентом деления 1/64. Частота ноты задается путем ввода длительности полупериода. При прохождении цикла, состоящего из деления тактовой частоты внутреннего генератора и инвертирования выходного сигнала дважды, формируется период с заданной частотой.

В основе программы заложено использование таймера Т1 совместно с альтернативной функцией OC1A-вывода порта РВ1, т.е. как только таймер выполнил заданный программой счет импульсов, на вывод РВ1 выдается единица. В следующий цикл Т1 обнуляется и повторяет счет импульсов до заданного значения, по достижению которого сигнал на выводе РВ1 инвертируется. С каждым последующим счетом значение на РВ1 инвертируется. Разобраться в расчете установленных коэффициентов для нот первой, второй и третьей октавы (диез и бемоль автор не рассматривал из-за ограниченного ресурса микроконтроллера) поможет табл. 1. Выходные данные: тактовая частота — 4000000 Гц, коэффициент деления — 2.

Частота

ноты

Установка

Нота

(октава)

Цифра

HEX/

OCR1A

Программа

мкс

Реальная

частота

Таблица 1. Расчет коэффициентов для нот первой, второй и третей октавы.

Установка таймера Т0 определяет длительность ноты. Т0 настроен на синхронизацию от тактового генератора микроконтроллера с коэффициентом деления 1/1024. К сожалению, разрядность этого таймера — только 8 разрядов. Даже с максимальным коэффициентом деления тактовой частоты выйти на необходимую длительность ноты (около 0,1-0,5 с) очень сложно. По этой причине дополнительно задается цикл работы Т0 до 64 раз. Эта функция повторяется многократно, пока Т0 не остановит звучание ноты и не перейдет к следующей ноте.

Установка необходимых коэффициентов выполняется с помощью поочередного опроса памяти программ. В конце программы задается частота ноты и длительность звучания. Во избежание операций с 16-разрядными данными организована отдельная обработка 8-разрядных данных (операции с двухбайтным словом предназначены для дальнейшей модернизации программы). После воспроизведения последней ноты микроконтроллер переходит в «спящий» режим.

Мелодия звонка ограничена гаммой нот от «до» до «си». Можно запрограммировать любую гамму — для этого в конце программы есть много свободного места. Можно изменить порядок чтения нот и получить интересную мелодию.

Обратите внимание на то, что таблицу длительности нот и частоту ноты можно прочитать только с помощью команды LPM микроконтроллера. Эта команда в версии ATtiny15 по сути — единственная, выполняющая функции косвенного чтения данных из памяти в регистр R0. Кроме того, существует ограничение стека по нижнему уровню. Стек поддерживает не более трех вложений. Автор проверил в симуляторе AVR Studio 4 вложение стека на уровне 3, и обнаружил сбой программы, поскольку команды условного перехода тоже используют стек. Программа теряет функциональность и последовательность. Учитывая эти замечания, исходная «прошивка» имеет небольшой объем (для микроконтроллера Tiny 15), но проверена и вполне работоспособна.

Совет

При модернизации программы автор не советует вставлять подпрограммы в подпрограммы.
По окончанию проигрывания мелодии микроконтроллер переходит в «спящий» режим независимо от питания схемы.

Настройка схемы

Для проверки схемы питание +9 В («плюс» — к катоду D1, «минус» — на «землю») можно подать от независимого источника к стабилитрону D1. Мелодия начинает воспроизводиться сразу же при подключении питания.

Проверить схему при питании от сети можно без микроконтроллера. Для этого необходимо подключить нагрузку к выходу IC2. В качестве нагрузки можно использовать резистор номиналом 300 Ом и мощностью 1 Вт. При отключении схемы раньше, чем набирается напряжение питания, можно увеличить номинал резистора R5 в два раза или установить дополнительно конденсатор 1000 пФ (10 В) параллельно R5 (подбирается экспериментально).

Если мелодия имеет низкочастотную тональность, то используемый микроконтроллер настроен на внутреннюю тактовую частоту 1,6 МГц. Можно увеличить тональность, добавив к выводам 2 и 3 микроконтроллера (РВ4, РВ3) кварцевый резонатор 4 МГц и корректирующие конденсаторы по 100 пФ. При нестабильном запуске программы необходимо установить конденсаторы С5, R6.

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

Музыкальный звонок с тайной кнопкой

Сегодня рассмотрим схему, представляющую собой дверной звонок (хотя применение может не ограничиваться этой сферой, просто основная задумка подразумевает именно дверной звонок). Но звонок не простой, а с возможностью проигрывать несколько различных аудио файлов в зависимости от нажатой кнопки. При этом одну из кнопок можно сделать тайной или спрятанной относительно основной кнопки дверного звонка. Идея такого финта заключается в том. что расположение спрятанной кнопки будут знать только друзья или родные и в случае необходимости попасть в дом будут нажимать именно эту кнопку, звонок проиграет аудио файл либо заведомо известный — выбранный для «своих», либо подаст голосовое оповещение как в данной статье, что пришли «свои». При этом основная кнопка звонка на двери спрятана не будет и любой почтальон или курьер или просто прохожий будет жать именно на нее. Раздастся звонок, оповещающий о том, что в дверь звонит незнакомец. Аналогично можно выбирать любой файл, удобный для Вас, либо просто использовать голосовой аудио файл о нахождении у двери незнакомца как в статье.

Читайте также  Автомобильный стробоскоп для настройки угла опережения зажигания

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

Схема электрическая принципиальная дверного звонка с тайной кнопкой представлена ниже:

Схема построена на микроконтроллере AVR ATmega8 и карте памяти micro SD. Микроконтроллер можно использовать в любом корпусе — DIP или TQFP. Для питания такой карты памяти необходимо напряжение 3,3 вольта. Основное питание схемы — 5 вольт. Источник напряжения может быть любой — например, можно применить небольшой силовой трансформатор и выпрямительные диоды, либо взять схему импульсного источника питания (да хоть просто взять старое зарядное устройство вольт на 7,5). Напряжение стабилизируется микросхемой L7805 до 5 вольт постоянного тока. Данную микросхему линейного стабилизатора напряжения можно заменить на отечественные аналоги, например КР142ЕН5А или заменить на LM317, слегка подправив включение в схему, либо опять же можно заменить импульсным стабилизатором напряжения на микросхемах MC34063 или LM2576. Это питание основной схемы. Для нормальной работы карты памяти напряжение 3,3 вольта получаем при помощи стабилитрона на 3,3 вольта. Резистор R5 ограничивает ток, протекающий через стабилитрон. Потребление карты памяти очень не большое, поэтому применение стабилитрона себя оправдывает и хорошо справляется с поставленной задачей. Конденсаторы в обвязке линейного стабилизатора и параметрического стабилизатора (на стабилитроне) фильтруют помехи, возможно возникающие в цепях питания этой схемы. Конденсаторы C2 и С4 в обвязке микроконтроллера выполняют ту же функцию. Карта памяти соединяется с микроконтроллером по интерфейсу SPI. но так как питание у них различное по напряжению, то необходимо применить преобразователь уровней. В схеме используется самый простой вариант на резисторах R5, R6, R7, R8, R10, R11. Попарно они образуют по большому счету делители напряжения сигналов от микроконтроллера.

Звуковой сигнал формируется ШИМ’ом в контроллере, однако уровень громкости не всегда годится, поэтому используется усилитель на двух транзисторах Т1 и Т2. L2 и C13 образуют высокочастотный фильтр, чтобы убрать помехи, конденсатор C12 ограничивает ток, проходящий через динамик. Динамик можно использовать любой, подходящий по размеру и мощности. Транзисторы усилителя можно также использовать любые в зависимости от мощности динамика — на маленькие динамики можно брать транзисторы малой мощности, динамики от нескольких ватт нужно использовать с транзисторами средней мощности или больше. Резистор R3, подключенный к выводу reset микроконтроллера предотвращает самопроизвольный перезапуск микроконтроллера в случаях наводок или других помех. Резисторы R1 и R2 ограничивают ток, проходящий через светодиоды в пределах нормального, они необходимы для предотвращения порчи светодиодов. Все резисторы в схеме постоянного сопротивления мощность 0,25 Вт. Номиналы резисторов можно варьировать в разумных пределах. Аналогично в разумных пределах можно заменять номиналы конденсаторов. Так как схема собиралась для демонстрации на макетной плате в качестве кнопок были использованы тактовые кнопки. Но в повседневной жизни для такого устройства их использовать не удобно скорее всего, поэтому одну из тактовых кнопок, выбранную для общего звонка для незнакомцев можно заменить на стандартную клавишу дверного звонка, а снизу ее или сбоку, в общем в удобном месте сделать небольшое отверстие и внутри основной кнопки звонка расположить небольшую тактовую кнопку, слегка выпирающую наружу. При этом ее расположение должно учитывать удобность доступа для «своих».

Вот так готовая схема (за исключением применения стандартной клавиши дверного звонка) выглядит на макетной плате:

Работает данная схема следующим образом. Само собой нужно подать напряжение питания на схему. После внутрисхемной прошивки микроконтроллера устройство не нуждается в настройке и наладке. Нужно записать на карту памяти необходимые аудио файлы и при нажатии одной из четырех кнопок прозвучит одна из четырех мелодий. При нажатии кнопок S3 и S4 во время проигрывания аудио файла будут загораться светодиоды LED1 или LED2 в зависимости от нажатой кнопки. Кнопки S1 и S2 не дублируются светодиодами. Данный функционал можно использовать в любых своих целях, например, световая индикация звонка в дверь или что-то другое. Динамик применяется любой, подходящий для Вас.

Чтобы верно прошить микроконтроллер, необходимо знать конфигурацию фьюз битов (микроконтроллер работает от внутреннего генератора на 8 МГц):

Микроконтроллер программировался в AVR Studio программатором AVRdoper (STK500) (перепрошивается USBasp соответствующей прошивкой и получаем AVRdoper).

Также немало важно знать конфигурацию параметров аудио файлов данного устройства: файлы аудио с разрешением *.WAV, параметры аудио — 8 bit, mono, 44 khz. Названия файлов должны быть такими: «1zv.WAV», «2zv.WAV» , «3zv.WAV» , «4zv.WAV» для каждой из кнопок. Первый аудио файл для четвертой кнопки, второй аудио файл для третьей кнопки и так далее. Немного нумерация наоборот, но думаю, это не проблема, просто нужно это знать. О методах создания собственных голосовых аудио файлов можно узнать в этой статье.

Напоследок привожу рисунок конфигурации выводов флеш карт с адаптером и без него:

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

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

  • Вычислительная техника
    • Микроконтроллеры микропроцессоры
    • ПЛИС
    • Мини-ПК
  • Силовая электроника
  • Датчики
  • Интерфейсы
  • Теория
    • Программирование
    • ТАУ и ЦОС
  • Перспективные технологии
    • 3D печать
    • Робототехника
    • Искусственный интеллект
    • Криптовалюты

Чтение RSS

Дверной звонок на Arduino с функцией обнаружения объектов

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

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

Мы будем использовать ультразвуковой датчик, чтобы обнаружить человека, а затем подать предупреждение с помощью зуммера. Как известно, ультразвуковые датчики используются для измерения расстояний без физического контакта на небольших расстояниях. Так что лучше всего использовать ультразвуковой датчик для обнаружения объекта. Схема подключения элементов дверного звонка на основе Arduino представлена далее.

Здесь используется сенсорный модуль HC-SR04, который является устройством бесконтактной ультразвуковой активности. Этот крошечный модуль способен измерять пространство в диапазоне от 2 см до 400 см. Это довольно точный датчик, он будет измерять до 3 мм. Чувствительный элемент состоит из ультразвукового передатчика и ультразвукового приемника. Регулирование на самом деле осуществляется легко. Во-первых, триггер ввода-вывода посылает сигнал высокого уровня в течение 10 с. Затем модуль посылает восемь ультразвуковых звуковых циклов по 40 кГц и наблюдает, будет ли импульсный сигнал возвращен или нет. И если сигнал принимается через высокий уровень, период времени, в течение которого сигнал триггера остается высоким, является временем от отправки до приема сигнала. Для расчета расстояния воспользуемся приведенной ниже формулой. Мы разделили показатель на 2, потому что нам просто нужно вычислить расстояние между объектом и датчиком, но время, которое мы получаем – это общее время, необходимое ультразвуковой волне, чтобы пройти препятствие и затем вернуться к датчику.

Читайте также  Лбп на базе модуля dps5005-c

Расстояние = (Время сигнала высокого уровня х Скорость звука в воздухе (340 м/с)) / 2

Как уже упоминалось выше, модуль работает на основе эхо звука. Для запуска модуля импульс посылается в течение 10 мкс. После этого модуль отправляет восемь циклов ультразвукового сигнала по 40 кГц и проверяет его отражение. Таким образом, если есть какое-либо препятствие, сигнал попадает на него и возвращается обратно в приемник. И расстояние рассчитывается по простой формуле, упомянутой выше. Мы разделили результат на два, потому что время, затраченное на сигнал – это общее время, чтобы этому сигналу добраться до препятствия и вернуться обратно к получателю. Временная диаграмма этого датчика приведена ниже.

Как уже говорилось выше, модуль работает по принципу эхо. Поэтому, когда мы подключаем модуль к любому микроконтроллеру, сначала модуль запускается через вывод Trig, и импульс высокого уровня посылается в течение 10 мкс. Затем ждем получения сигнала ECHO. Микроконтроллер может теперь рассчитать время. И тогда расстояние вычисляется по рассмотренной выше формуле.

Используемый здесь зуммер – это пассивный пьезоэлектрический зуммер на 5 В. Пьезоэлектрический зуммер работает по пьезоэлектрическому принципу, то есть всякий раз, когда разность потенциалов применяется к пьезоэлектрическому материалу, тогда генерируется изменение давления. Этот тип зуммера имеет два пьезокристалла, и они связаны с двумя проводниками. Теперь, если мы применим разность потенциалов к этим кристаллам, то они проталкивают один проводник и тянут другой. Этот толчок вызывает вибрации, которые в свою очередь генерируют звук. Этот тип зуммеров может издавать звук от 2 кГц до 4 кГц. Эти зуммеры могут быть использованы для сигнализации, оповещений и т. д. Эти зуммеры могут быть легко связаны с такими микроконтроллерами, как Arduino, STM32, Raspberry pi и т.п.. Вы также можете установить частоту звука, который вы хотите воспроизвести с помощью зуммера, используя некоторые функции в коде.

Код программы Arduino довольно прост и приведен далее.

После написания кода загрузите его в Arduino. Теперь поднесите любой предмет или руку к датчику, и он будет оповещать о приближении объекта с помощью зуммера. Мы настроили нашу программу для диапазона датчика 70 см, поэтому, если кто-либо находится в этом диапазоне, он будет обнаружен, и дверной звонок будет работать соответствующим образом. Если вы хотите увеличить или уменьшить диапазон, укажите это значение расстояния в условии if. Но помните, что диапазон действия ультразвукового датчика составляет от 2 см до 400 см, поэтому не выходите за рамки этого предела. Если вы хотите добавить светодиод в схему для визуальных предупреждений, то вы можете добавить его к любым цифровым выводам и добавить простой digitalWrite() в условиях if и else, а затем установить HIGH в теле if и LOW в остальном коде, чтобы он мог его включить или выключить как и зуммер.

Дверной звонок на микроконтроллере

Бесплатная техническая библиотека:
▪ Все статьи А-Я
▪ Энциклопедия радиоэлектроники и электротехники
▪ Новости науки и техники
▪ Архив статей и поиск
▪ Ваши истории из жизни
▪ На досуге
▪ Случайные статьи
▪ Отзывы о сайте

Справочник:
▪ Большая энциклопедия для детей и взрослых
▪ Биографии великих ученых
▪ Важнейшие научные открытия
▪ Детская научная лаборатория
▪ Должностные инструкции
▪ Домашняя мастерская
▪ Жизнь замечательных физиков
▪ Заводские технологии на дому
▪ Загадки, ребусы, вопросы с подвохом
▪ Инструменты и механизмы для сельского хозяйства
▪ Искусство аудио
▪ Искусство видео
▪ История техники, технологии, предметов вокруг нас
▪ И тут появился изобретатель (ТРИЗ)
▪ Конспекты лекций, шпаргалки
▪ Крылатые слова, фразеологизмы
▪ Личный транспорт: наземный, водный, воздушный
▪ Любителям путешествовать — советы туристу
▪ Моделирование
▪ Нормативная документация по охране труда
▪ Опыты по физике
▪ Опыты по химии
▪ Основы безопасной жизнедеятельности (ОБЖД)
▪ Основы первой медицинской помощи (ОПМП)
▪ Охрана труда
▪ Радиоэлектроника и электротехника
▪ Строителю, домашнему мастеру
▪ Типовые инструкции по охране труда (ТОИ)
▪ Чудеса природы
▪ Шпионские штучки
▪ Электрик в доме
▪ Эффектные фокусы и их разгадки

Техническая документация:
▪ Схемы и сервис-мануалы
▪ Книги, журналы, сборники
▪ Справочники
▪ Параметры радиодеталей
▪ Прошивки
▪ Инструкции по эксплуатации
▪ Энциклопедия радиоэлектроники и электротехники

Бесплатный архив статей
(500000 статей в Архиве)

Алфавитный указатель статей в книгах и журналах

Бонусы:
▪ Ваши истории
▪ Викторина онлайн
▪ Загадки для взрослых и детей
▪ Знаете ли Вы, что.
▪ Зрительные иллюзии
▪ Веселые задачки
▪ Каталог Вивасан
▪ Палиндромы
▪ Сборка кубика Рубика
▪ Форумы
▪ Голосования
▪ Карта сайта

Дизайн и поддержка:
Александр Кузнецов

Техническое обеспечение:
Михаил Булах

Программирование:
Данил Мончукин

Маркетинг:
Татьяна Анастасьева

Перевод:
Наталья Кузнецова

При использовании материалов сайта обязательна ссылка на https://www.diagram.com.ua


сделано в Украине

Запоминающий музыкальный звонок на PIC16F84

Иногда хочется узнать: «А не звонили ли в дверь, когда никого не было дома?». В этом поможет предлагаемый музыкальный звонок, имеющий специальную запоминающую функцию. Выполнен он на микроконтроллере популярного семейства Р/С, В результате получилось предельно простое устройство, способное воспроизводить несколько десятков мелодий и запоминать последнее нажатие кнопки звонка, если дверь не была вовремя открыта.

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

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

Принципиальная схема звонка изображена на рис. 1. Его основа — микроконтроллер DD1 (PIC16F84-04I/P фирмы Microchip). Тактовую частоту задает кварцевый резонатор ZQ1. Сигнал 34 снимается с вывода 7 (RB1) микроконтроллера, усиливается транзистором VT1 и воспроизводится динамической головкой ВА1.

Кнопка звонка SB1 и датчик открывания двери SF1 подключены к выводам микроконтроллера через токоограничивающие резисторы R3, R5. Конденсаторы С5 и С6 исключают самопроизвольное срабатывание звонка от помех, создаваемых электроприборами.

Устройство питается от сети переменного тока через понижающий трансформатор Т1. Напряжение вторичной обмотки выпрямляется диодным мостом VD1. постоянное напряжение стабилизируется интегральным стабилизатором DA 1.

Чертеж печатной платы и расположение деталей на ней показаны на рис. 2. Плата рассчитана на установку резисторов МЛТ. конденсаторов К50-35 (С1, С2) и КМ (остальные).

Диодный мост VD1 — КЦ405 с любым буквенным индексом. Кварцевый резонатор ZQ1 — на частоту 4 МГц. Конденсаторы C3, С4 — любые керамические емкостью 15. 33 пФ. Транзистор VT1 — любой из серии КТ815. Сопротивление резистора R1 должно быть не более 40 кОм.

В качестве Т1 подойдет любой трансформатор, обеспечивающий на вторичной обмотке напряжение 9. 10 В при токе 0.3 А. В авторском варианте применен трансформатор ТС-Ш-ЗМ1. у которого число витков вторичной обмотки уменьшено на 90.

Кнопка SB1 — обычная для дверного звонка, датчик открывания двери SF1 — геркон. закрепленный на дверном косяке. На самой двери устанавливают магнит. При закрывании двери геркон под действием магнита замыкается, при открывании -размыкается. Датчик может быть любой конструкции.


(нажмите для увеличения)

Для замены мелодий ознакомимся с принципом размещения их в памяти микроконтроллера. Они располагаются в памяти программ в интервале адресов с 200Н по 3FFH. Одна нота занимает в памяти одно машинное слово. Каждая мелодия должна заканчиваться кодом 07Н. Маска M_RAND. расположенная по адресам 0079Н и 0085Н. определяет число мелодий и. соответственно, максимальное число нот в мелодии (табл. 2).

Так, если маска равна F8H (32 мелодии по 15 нот), то первая мелодия займет адреса 200H-20FH. вторая -210H-21FH. 32-я — 3F0H-3FFH. Очевидно, что каждая из них занимает 16 машинных слов, а максимальное число нот в мелодии — 15 (одно машинное слово отведено под код 07Н).

Читайте также  Частотомер на pic16f628

Следует отметить: если в конце мелодии нет кода 07Н. то будет воспроизводиться без остановки следующая и т. д. до тех пор. пока не встретится этот код. В данном случае (16 мелодий по 31 ноте) первая мелодия занимает адреса 200H-21FH. вторая -220H-23FH и т. д. Реальное число нот (от 1 до 31) зависит от того, в каком месте будет поставлен код 07Н. Коды нот в зависимости от их длительности и принадлежности к той или иной октаве представлены в табл. 3.


(нажмите для увеличения)

Для предварительного прослушивания мелодий можно использовать программу music.exe.

По адресу 008ВН располагается константа Wait_D. определяющая время ожидания открывания двери. Это время (в секундах) примерно равно Wait_D-2. В нашем случае константа равна 5АН (в десятичной системе — 90) и время ожидания составляет 90 · 2 = 180 с = 3 мин.

Для изменения программы необходимо загрузить файл ring.hex в шестнадцатиричный редактор (обычно он встроен в программное обеспечение программатора) и отредактировать, приняв во внимание то, что машинное слово микроконтроллера PIC16F84 имеет длину 14 бит и представлено четырехразрядным шестнадцатиричным числом. Заменять необходимо только два младших разряда, так как старшие представляют собой код инструкции. Например, в памяти по адресу 208Н находится число 3483Н, а необходимо записать код 07Н. Изменив только младшие разряды, получим число 3407Н.

Допустимо также внести изменения непосредственно в исходный текст программы (файл nng.asm). Для этого необходимо создать папку Ring в корневом каталоге любого диска, поместить туда файлы nng.asm, ring.pjt и ring.lkr. Затем в среде MPLAB v4.12 открыть проект ring.pjt и файл ring.asm. который и необходимо отредактировать. Далее запускают построение проекта и получают новый файл ring.hex.

Смотрите другие статьи раздела Звонки и аудио-имитаторы.

Читайте и пишите полезные комментарии к этой статье.

Комментарии к статье:

Сергей
Вместо RTCC лучше написать TMR0 согласно с 16F84inc. На 2 странице счетчик PCLATH почему то посылает нас мимо списка мелодий(может так и задумано?)Я на всякий случай в конце программы после IDLOCS поставил DT вместо DW. Пусть возвращается к TEMP1. А вообще то я еще не разобрался в программе полностью.А тупо скачивать hix-файл не хочется без разбора.Вообще программа остроумна,имеет все прерывания.Хотя почему-то в регистре INTCON не подключена TOIE.Может так задумано? [up]

Звонок и MMC/SD карта памяти

В Сети водится большое множество разных схем дверных звонков на микроконтроллерах, но просмотрев их, не смог найти для себя ничего подходящего. Хотелось бы, чтобы звонок мог воспроизводить много мелодий, как простых, так и полифонических или просто аудиофрагменты, а так же любые их комбинации и чтобы набор мелодий можно было легко менять не отключая звонка. Самым простым решением для воспроизведения голоса и полифонии является проигрывание содержимого wav-файла через ЦАП или ШИМ-модулятор. Первый вариант проще в реализации (благо, выводов у меги8 для 8-битного ЦАПа хватает), и не требует последующей фильтрации сигнала.

Поскольку wav-файлы занимают много места, для их хранения нужен достаточно емкий носитель. Но с бурным развитием индустрии флеш-памяти и флеш карт этот вопрос решается сам собою. Для хранения мелодий удобно использовать карты памяти MMC и SD/SDHC, т.к. эти карты поддерживают режим низкоскоростного доступа (для наших целей его будет более, чем достаточно) совместимый и шиной ISP, что сильно упрощает программную реализацию. Еще один большой плюс использования карт памяти — их всегда можно перезаписать на компьютере.

Вообщем, вопрос остается только в представлении данных на карте: можно хранить мелодии в виде файлов стандартной файловой системы (например FAT16), а можно придумать свой двоичный формат. В первом случае для записи мелодий будет достаточно только компьютера с картридером, но при этом сильно усложняется написание управляющей программы для звонка — библиотеки, реализующие работу с FAT16 существуют уже готовые, но они требуют ощутимо много памяти — потребуется МК с минимум 16КБ Flash-а и 1..2КБ RAM.

Во втором случае разработка звонка значительно упрощается, но для записи мелодий на компьютере пришлось бы разрабатывать специальный драйвер, для поддержания нестандартной «файловой системы», иначе, операционная система просто не распознала бы карту (последнее относится только к Windows, в *nix-системах запись «сырых» даных на накопитель никаких проблем не вызывает).

Но существует еще третий, компромиссный вариант: на карте памяти создается один большой файл, в начале которого записывается некая сигнатура, после которой помещаются собственно «сырые» данные. Управляющая программа просто находит эту сигнатуру, вместо того, чтобы анализировать FAT и собирать файл «по кусочкам», и может считывать нужные данные просто пропустив блоки MBR и FAT. Тогда для замены мелодий достаточно перезаписать один файл, созданный специальным компилятором. Этот вариант и был реализован.

Схема цифровой части получившегося звонка показана на рисунке.

Микроконтроллер ATMega8 включен по типовой схеме, к его порту D подключен ЦАП на резисторах R3 ..R10, R11 ..R17, с выхода которого (на схеме AUDIO OUT) сигнал поступает на усилитель. Карта памяти вставляется в разъем X1 и питается через стабилизатор IC2. Вывод PC5 МК подключен к джамперу, который используется загрузчиком кода прошивки. Выводы PC0.. PC4 остались незадействованы, поэтому, подключил к ним светодиоды (анодами к МК и катодами на землю), мигающие в зависимости от проигрываемой ноты или амплитуды аудиофрагмента. К выводу PB0 подключается кнопка «застопоривания» смены мелодий: если она не нажата, мелодии будут проигрываться одна за другой, по списку, если нажата — будет зациклена последняя проигрываемая мелодия. Вывод PB1 управляет реле, которая самоблокирует кнопку звонка. В схеме использован кварц на 11059200Гц, в случае использования другого резонатора, надо изменить значение F_CPU в файле config.h.
Схема аналоговой части состоит из усилителя на основе TDA2003, включенной по типовой схеме и стабилизаторе 5В. Транзистр T1 управляет реле, подключаемой к выводам R1.1, R1.2, вход X1 подключается к выходу PB1 МК. Вход INP подключается через переменный резистор (10 КОм) — регулятор громкости к выходу ЦАП (крайние выводы резистора идут на AUDIO OUT и землю, а вертушек — на INP).

Схемы и разводка печатных плат прилагаются (Eagle). Надо заметить, что на плате аналоговой части микросхемы устанавливаются на общий радиатор, который одновременно соединяет их земли. Это позволило развести одностороннюю плату без перемычек.

В качестве корпуса я использовал бокс для двух выключателей-автоматов. Слот для MMC-карты был вырезан из разъема для картриджа от игровой приставки, Кнопку звонка я вывел на лицевую панель (она идет в параллель той кнопке, что находится в подъеде) для того, чтобы можно было выбирать мелодию циклическим переключением. Так же для удобства добавил кнопку, отключающую звук. Вместо 5 светодиодов, как нарисовано на схеме, sподключил только 4 — разных цветов.

Внешний вид того, что получилось.

Пару слов о резисторах R3 .. R10, R11 .. R17: их надо выбрать с минимальными отклонениями сопротивления и соотношением 2:1. Я отбирал их из 50шт каждого номинала так, чтобы отклонение сопротивления не превышало процента.

Для компиляции мелодий написана утилита MelodyFlasher. Перед первой записью надо иннициализировать карту памяти — отформатировать ее и создать файл данных, занимающий все доступное место. Это делается следующей командой:

Программа позволяет формировать мелодии из нотных фрагментов, записываемых в формате мелодий для телефонов Motorola T720. Для прослушивания и редактирования мелодий удобно использовать программу Melody Player for Motorola, в ней есть большая база разных мелодий. Аудиофрагменты надо преобразовать в формат WAV, обязательно нежатый и монофонический. Гарантированно получить читаемый формат можно средствами «Звукозаписи» в Windows. После подготовки всех фрагментов создается файл списка (в прилагаемом примере — melodies.lst). В каждой строке этого файла описывается одна мелодия, которая может состоять из любого числа .mel-фрагментов (нотная запись) и .wav-фрагментов, имена файлов этих фрагментов просто записываются в одну строку через запятую (см. прилагаемый пример). Стоит заметить, что если один и тот же файл фрагмента используется в мелодиях несколько раз, то в скомпилированный файл данных он будет включен единожды, без дублирования, т.е., файлы получаются достаточно компактные.

Компиляции мелодий и их запись на карту производится следующей командой:

Прошивка и все исходники прилагаются. Для работы с MMC/SD использована библиотека от Roland Riegel, которая была несколько модифицирована.