Выберите язык

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

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

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

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

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

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

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

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

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

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

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

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

Листинг программы:

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

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

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

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

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

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

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

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

Для предварительного прослушивания мелодий можно использовать программу 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.

Файлы проекта

Автор: М.Буров, г.Кострома