По материалам

Скачать книгу
Музыкальный звонок
Очень часто, покупая вещи, мы возлагаем на них определенные на­дежды, но иногда совершенно неожиданно они становятся поводом для скандала. Именно это произошло с автором, когда ему пришлось каж­дую неделю приобретать новый дверной звонок китайского производст­ва. На четвертом звонке, наконец, стало ясно, что китайцы народ хоро­ший, но вот их товары... Наша же промышленность, к сожалению, за­была о таких мелких проблемах потребителей. Схем музыкальных звон­ков очень много, но простых и многофункциональных автор не нашел, поэтому ему пришлось самому разработать простой и надежный звонок для создания уюта в доме. Начинающие микросхемотехники могут лег­ко повторить эту схему и дополнить программу на свой вкус.
Для музыкального звонка был выбран простейший микроконтрол­лер А Типу 15 от компании АШ1е1. Малое количество выводов, неболь­шой корпус, многофункциональность — все эти характеристики очень привлекательны для микроконтроллерного моделирования. Основная идея заключалась в дублировании китайского звонка с добавлением схе­мы генерирования музыки, а так же в реализации ее полностью авто­номной, независимой работы. Кроме того, был организован контроль питающей сети. Как только питание сети исчезает, схема начинает по­треблять ток от электролитического конденсатора, а при падении на­пряжения ниже нормы контроллер прерывает программу и переходит в "спящий" режим.
Схема (рис. 5.1) может работать как отдельное устройство или быть подключенной в точках А и В к схеме домашнего звонка. Питание осу­ществляется от сети переменного напряжения 220 В. Однополупериод-ный выпрямитель с ограничением по току питает схему мощного стаби­литрона и стабилизатора напряжения. Цепь понижения напряжения сети до уровня 9 В (Ш, СЗ) рассчитана на ток потребления 40 мА. Ток ста­билизации стабилитрона составляет 20 мА — столько же потребляет стабилизатор напряжения 5 В, питающий микроконтроллер в течение работы устройства.
В момент включения основной ток потребляет конденсатор С2, но этот ток ограничен реактивным сопротивлением С2 и сопротивлением
Ш. Конденсатор С2 так же выполняет функцию источника тока в мо­мент отключения питания схемы, при этом Э2 запирается, и потребите­лями остаются Я5, К4, ЬЕЭ1, ЯЗ, Э1, К2, ІС2.
При снижении напряжения на С2 до уровня менее 9 В стабилитрон D1 уменьшает потребление тока до минимума и отключается. Конден­сатор С 4 сглаживает высокочастотные импульсные помехи, проходящие из сети в схему питания. Конденсаторы R5 и R4 составляют делитель напряжения на стабилитроне D1 (необходим для измерительного канала микроконтроллера). Измерительный канал не содержит схему выборки и хранения, а так же интегратора и фильтра верхних частот, поскольку эти функции выполняют фильтрующие элементы питания С2, С4. Функцию интегратора выполняет ограничительный стабилитрон D1.
Микроконтроллер включается, как только подается напряжение питания. При этом светится светодиод LED1. При падении напряжения на стабилитроне D1 до уровня менее 9 В микроконтроллер переходит в "спящий" режим. Как только на микроконтроллер поступает напряже­ние питания, он формирует низкочастотные сигналы музыкальных ме­лодий на пъезоизлучателе (можно выбрать любой пьезоизлучатель [7]). Для лучшего воспроизведения мелодии можно использовать динамик, но при этом для него необходимо обеспечить усилитель по току (на микросхеме или на транзисторе) и увеличить емкость С2.
Программа
Программа разработана для микроконтроллера с тактовой частотой 4 МГц. Ее выполнение при включении питания начинается с вектора прерывания, по которому она переходит в заданную вектором подпро­грамму. При сбросе вектор прерывания переводит программу к метке RESET. Далее программа выполняет проверку питающего напряжения. Эту функцию выполняет АЦП при помощи одиночного преобразования. Программа проверяет напряжение питания схемы, и в случае падения его ниже уровня 0,89 В микроконтроллер переходит в "спящий" режим.
После успешного прохождения проверки питания значения всех пе­ременных сбрасываются в ноль, а так же настраивается порт ввода-вы­вода и два таймера: ТО и Т1. Таймер ТО предназначен для установки времени звучания мелодии, а таймер Т1 — для установки частоты вы­бранной ноты. Таймер Т1 настроен на синхронизацию от тактового ге­нератора микроконтроллера с коэффициентом деления 1/64. Частота но­ты задается путем ввода длительности полупериода. При прохождении цикла, состоящего из деления тактовой частоты внутреннего генератора и инвертирования выходного сигнала дважды, формируется период с заданной частотой.
В основе программы заложено использование таймера Т1 совместно с альтернативной функцией OClA-вывода порта РВ1, т.е. как только таймер выполнил заданный программой счет импульсов, на вывод РВ1 выдается единица. В следующий цикл Т1 обнуляется и повторяет счет импульсов до заданного значения, по достижению которого сигнал на выводе РВ1 инвертируется. С каждым последующим счетом значение на РВ1 инвертируется. Разобраться в расчете установленных коэффици­ентов для нот первой, второй и третьей октавы (диез и бемоль автор не рассматривал из-за ограниченного ресурса микроконтроллера) поможет табл. 5.1. Выходные данные: тактовая частота — 4000000 Гц, коэффи­циент деления — 2.
Установка таймера ТО определяет длительность ноты. ТО настроен на синхронизацию от тактового генератора микроконтроллера с коэф­фициентом деления 1/1024. К сожалению, разрядность этого таймера — только 8 разрядов. Даже с максимальным коэффициентом деления так­товой частоты выйти на необходимую длительность ноты (около 0,1-0,5 с) очень сложно. По этой причине дополнительно задается цикл ра­боты ТО до 64 раз. Эта функция повторяется многократно, пока ТО не остановит звучание ноты и не перейдет к следующей ноте.
Установка необходимых коэффициентов выполняется с помощью поочередного опроса памяти программ. В конце программы задается частота ноты и длительность звучания. Во избежание операций с 16-раз­рядными данными организована отдельная обработка 8-разрядных дан­ных (операции с двухбайтным словом предназначены для дальнейшей модернизации программы). После воспроизведения последней ноты микроконтроллер переходит в "спящий" режим.
Мелодия звонка ограничена гаммой нот от "до" до "си". Можно за­программировать любую гамму — для этого в конце программы есть много свободного места. Можно изменить порядок чтения нот и полу­чить интересную мелодию.
Код программы на ассемблере представлен в листинге 5.1, а шест-надцатеричный код — в листинге 5.2.
Обратите внимание на то, что таблицу длительности нот и частоту ноты можно прочитать только с помощью команды LPM микроконтрол­лера. Эта команда в версии ATtinyl5 по сути — единственная, выпол­няющая функции косвенного чтения данных из памяти в регистр R0. Кроме того, существует ограничение стека по нижнему уровню. Стек поддерживает не более трех вложений. Автор проверил в симуляторе AVR Studio 4 вложение стека на уровне 3, и обнаружил сбой програм­мы, поскольку команды условного перехода тоже используют стек. Программа теряет функциональность и последовательность. Учитывая эти замечания, исходная "прошивка" имеет небольшой объем (для мик­роконтроллера Tiny 15), но проверена и вполне работоспособна.
Совет
При модернизации программы автор не советует вставлять подпрограммы в под­программы.
По окончанию проигрывания мелодии микроконтроллер переходит в "спящий" режим независимо от питания схемы.
Плата
Плата изготавливается из двух­стороннего текстолита, или на ма­кетной плате. Монтажная схема представлена на рис. 5.2, а схема разводки — на рис. 5.3.
К разъему 8Ы подключается се­тевое напряжение 220 В. Кнопку 81 можно установить на плате или вы­нести на лестничную клетку. Можно использовать готовую кнопку, при этом вместо кнопки на плате уста­навливаем перемычку, а питание звонка используем по предыдущей схеме (разрыв питания по сетевому проводу). Возможен вариант под­ключения к домашнему звонку па­раллельно соленоиду (при этом вме­сто кнопки на плате устанавливаем перемычку).
Плату монтируем и закрепляем в корпусе звонка. Конденсатор СЗ встречается в продаже нечасто, поэтому его можно заменить набором конденсаторов, спаянных параллельно (т.е. вместе). Стабилитрон D1 Д815Г — в металлическом корпусе для лучшего охлаждения, поскольку в момент всплесков сети он потребляет и рассеивает в тепло ток значи­тельной силы. Диод D2 — любой на обратное напряжение 300 В и ток не менее 0,2 А. Пьезоизлучатель — любого типа на напряжение 3-5 В. Светодиод LED1 — любой на ток ЮмА или меньше. Резисторы R1 и R2 — мощностью 1 Вт МЛТ-1. Конденсаторы С5 и R6 для большин­ства микроконтроллеров можно не устанавливать (на монтажной плате эти элементы не введены), однако в случае невозможности запустить программу их необходимо припаять навесным монтажом.
Настройка схемы
Для проверки схемы питание +9 В ("плюс" — к катоду В\, "ми­нус" — на "землю") можно подать от независимого источника к стаби­литрону VI. Мелодия начинает воспроизводиться сразу же при подклю­чении питания.
Проверить схему при питании от сети можно без микроконтролле­ра. Для этого необходимо подключить нагрузку к выходу ІС2. В качест­ве нагрузки можно использовать резистор номиналом 300 Ом и мощно­стью 1 Вт. При отключении схемы раньше, чем набирается напряжение питания, можно увеличить номинал резистора Я5 в два раза или устано­вить дополнительно конденсатор 1000 пФ (10 В) параллельно Я5 (под­бирается экспериментально).
Если мелодия имеет низкочастотную тональность, то используемый микроконтроллер настроен на внутреннюю тактовую частоту 1 МГц. Можно увеличить тональность, добавив к выводам 2 и 3 микрокон­троллера (РВ2, РВЗ) кварцевый резонатор 4 МГц и корректирующие конденсаторы по 100 пФ. При нестабильном запуске программы необ­ходимо установить конденсаторы С5, Я6.
В перспективе, схему можно дополнить фотодатчиком для регули­ровки уровня звука в ночное время, а так же сенсором открытия двери для выключения мелодии при открытии двери или при включении света в прихожей (82). Оставшиеся выводы микроконтроллера можно задей­ствовать для реализации многоголосного музыкального сопровождения, подключив еще два пьезоизлучателя. В программе эти функции не реа­лизованы.
Hosted by uCoz