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

Такой способ позволят, не только формировать сигналы по длительности, но и разделять их по частоте. В этом варианте можно формировать даже простые мелодии. Для этого нам потребуется так называемые пассивные buzzer, динамик. Можно применять как механические (они более дешевые), так и пьезоэлектрические.

Внешний вид буззеров выпускаемых фирмой MURATA:

Piezoelectric Sounders / Buzzers  

Но чаще нам предстоит иметь дело с китайским производителем, так как цена и качество у них более приемлемы.

Механическими буззерами проще всего управлять, схема подключения, может иметь следующий вид:

Резистор R14 предназначен для удержания транзистора в закрытом состоянии при включении устройства. R13 вместе емкостью затвора, создают фильтр низких частот, что позволяет в некоторой степени избавиться от гармоник, которые формирует меандр и придать формируемому звуку сигналу, более приятное звучание. Резистор R10 и конденсатор C9 уменьшают влияние на шину питания, работу звукового преобразователя. Для своих устройств я предпочитаю использовать пассивные буззеры типа HYG8503A или HY09.


Теперь перейдет к программной реализации. В PIC24 для создания генератора удобно использовать модули OCx. Один из вариантов настройки рассмотрим в нашем варианте с использованием MCC.

В начале все просто добавляем в проект модуль (любой который свободен) например, в моем варианте это был OC4. Выполним конфигурацию:

Тут очень просто, не нужен нам какой то режим, оставим OFF. Выберем источник FOSC/2. Настройки режима синхронизации, выберем сам модуль, т.е. при запуске модуля он будет сам себя потом запускать и будет нам, генерировать заданную нами частоту.

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

Для “извлечения звуков” создадим простую функцию:

Функция beep_n формирует звуковой сигнал частотой nota, которая расположена в октаве  oktav и длительностью dlit.

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

uint32_t frequency = (uint32_t)(nota*oktav*(FCY/2000000));

Принцип прост, в регистр который отвечает за период работы OCx, загружаем частоту

OCxRS = frequency/16; // задаем период

А в регистр длительности импульса значение равное половине, чтобы формировать меандр

OCxR = OCxRS/2; // половина периода

Значение регистров в функции описаны как:

Тут вы видите, что выполнено настройка под модуль OC4,  если вы будете использовать другой модуль, циферку “4” надо заменить на циферку используемого модуля ;)


Библиотека для XC16 v1.35



Это может быть интересно


  • Trimax – кодирование и декодирование ИК-командTrimax – кодирование и декодирование ИК-команд
    Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся старым и …
  • Индикатор кода – RC-5 Protocol PhilipsИндикатор кода – RC-5 Protocol Philips
    Индикатор кода – RC-5 Protocol Philips При конструировании дистанционного управления на инфракрасных лучах для контроля удобно иметь индикатор кодов передаваемых пультом. Плата ch-c3000 позволяет изготавливать устройства с возможностью установки фото …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. Метки:MPLAB® Code …
  • MPLAB® Harmony – или как это просто! Часть 3.MPLAB® Harmony – или как это просто! Часть 3.
    Часть третья – копнём немного глубже. Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил в код …
  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет формировать импульсы …
  • Одноканальный емкостной сенсор – AT42QT1012Одноканальный емкостной сенсор – AT42QT1012
    Описание сенсора  Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая автоматическая задержка выключения …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус состоит из …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы приведем несколько …
  • Проект с использованием MCC часть 02Проект с использованием MCC часть 02
    Когда мы запустили конфигуратор, самое главное понять, что с этим делать и как проверить, то что мы делаем работает или нет. Для начала настроим регистры конфигурации микроконтроллера и настроем тактовый генератор. …
  • Регулятор влажности ch-3800Регулятор влажности ch-3800
      И еще один проект на плате ch-c3xxx –  универсальный регулятор влажности ch-3800. Регулятор позволяет работать как в режиме индикатора влажности, так и в режиме регулятора. Рабочий диапазон измеряемой относительной …



Tagged with →  
Share →
Translate »

Copyright © Catcatcat electronics 2013-2019. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com