Пьезоэлектрический излучатель. Тестирование

Пьезоэлектрический динамик (он же зуммер, beeper, buzzer) является механическим устройством. Для того чтобы извлечь звук, необходимо заставить его мембрану колебаться. Сделать это можно подав напряжение на его выводы, а затем снять его. Например, что бы получить ноту Ля в первой октаве нужно сделать так 440 раз за секунду.

Зуммеры обладают разными характеристиками, и низкие частоты (скажем, ниже 1 кГц) могут и не воспроизвести совсем. Более того, на некоторых частотах могут быть провалы. Проведём эксперимент.

buzzer freq

Пример характеристики, датчик HPM14A

Если же мы будем посылать не меандр, а использовать, скажем, ШИМ, мы сможем вдобавок регулировать громкость заполнением импульса.

Поставим перед собой простую задачу: заставим нашу «пищалку» извлечь линейно нарастающий звук от 0 до 20 кГц. Записав его, можно построить характеристику. Составим заголовочный файл, добавив пару функций для работы с громкостью.

Напишем функцию инициализации используя код из прошлого раздела (см. Широтно-импульсная модуляция).

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

Для тестирования напишем небольшую функцию, которая устанавливает нужную нам частоту и громкость:

Последнее что нужно сделать — дописать функцию для энкодера. Она будет очень простая.

Обратите внимание, максимальная громкость достигается при 50% заполнении ШИМ. Любое отклонение от 50%, в любую сторону, приведёт к понижению уровня громкости. Так же в текущей реализации есть проблема: присмотритесь к макросу SET_FREQ().

Запустим тестовую программу и запишем звук.

Ниже приведен скриншот аудиозаписи (записанной на планшет) в программе Sonic Visualiser.

Как видите характеристика не очень радужная. Но что имеем, то имеем.

Код урока можно найти на github: CMSIS.


Назад | Оглавление | Дальше