Как пьезоизлучатель голос искал
Как известно, каждый пьезоизлучатель уникален и производится со скрытым талантом. Наша задача его увидеть. Так получилось, что у моего пьезоизлучателя врожденный талант к музыке. Голосом он, конечно, не вышел, пассивный, маломощный, на АЧХ вообще лучше не смотреть, зато желания воспроизводить музыку хоть отбавляй. Воспроизведение мелодии понадобилось для одного из проектов. Задача простая: действия пользователя должны сопровождаться звуками. Если нажатие кнопки это стандартный «БИП», то разряд батареи уже «ТУРУРУМ», включение «ТУМТУМ-ТУТУ» и т.д. Оказалось, что звуки в моей голове и звуки, получаемые на пьезоизлучателе совершенно не похожи друг на друга. Пришлось немного углубиться в тему.
Сперва небольшой обзор того, что было изучено. За основу взята идея, изложенная китайским коллегой, есть английский перевод. Также стоит упомянуть материалы статьи. Вот что удалось узнать.
Для воспроизведения мелодий необходимо использовать информацию: ноты, длительность нот, темп;
Для воспроизведения нот и установки их длительности необходимо использовать таймеры;
Алгоритм должен быть таким, чтобы не останавливать выполнения основной программы.
И этого достаточно, чтобы сделать небольшую библиотеку для воспроизведения мелодии по нотам. Вот результат:
Для работы с библиотекой необходимо иметь минимальные знания нотной грамоты. Музыкальная нотация присваивает нотам буквенные обозначения c, d, e, f и т.д. Вместо букв можно использовать цифры, за ноль принимаем ноту ДО малой октавы.
Частота, Гц
Нота
Малая октава
Вторая октава
Нота
Первая октава
Третья октава
Допустимую длительность нот ограничим в диапазоне от 1 до 1/16.
Таким образом, чтобы составить массив входных данных, необходимо указать перечень нот, их длительность и скорость воспроизведения мелодии. Массив мелодии можно записать как uint8_t MUSIC[] = <23, 23, 24, 26 … >, массив длительностей как uint8_t DURATION[] = <4, 4, 4, 4 … >, темп uint8_t TEMPO = 140. Либо с использованием обозначений нот uint8_t MUSIC[] =
, uint8_t DURATION[] = .
На рисунке номерами сверху обозначены ноты и их длительности согласно таблицам.

Возможности пьезоизлучателя для генерации звука весьма ограничены, получить низкочастотные колебания не удастся. Как правило, максимум громкости излучателя попадает в диапазон частот от двух до четырех кГц. Для используемого мною HPM14A громкость звука на частотах менее 500 Гц будет примерно 40 – 50 дБ.
Ноты, их длительность и темп мелодии определяют временные интервалы, в течение которых производится генерация колебаний. Чтобы лучше понять суть вопроса, взглянем на спектр мелодии, который синтезируется при помощи программы MuseScore 3. Для просмотра спектра используется программа Audacity.

Каждая нота представляет собой «треугольник» определенной высоты. Программа синтезирует затухающий звук, как это происходит при колебаниях струны. Сгенерировать сигнал такой формы на микроконтроллере достаточно сложно. Существенно упростим себе задачу. Каждую ноту будем задавать при помощи интервала сигнала и интервала тишины. Сумма двух интервалов составляет длительность звучания ноты. Интервал сигнала – ШИМ заданной частоты, тишины – нулевой уровень напряжения. Вставка нулевого интервала позволяет различать многократное воспроизведение одной и той же ноты.
Для решения задачи достаточно двух таймеров. Рассмотрим генерацию частоты нот. Возьмем ноту ДО малой октавы в качестве примера. При тактировании таймера частотой 4 МГц, значения для регистра перезагрузки считаются следующим образом.

В регистр сравнения необходимо записать половину рассчитанной величины, чтобы сигнал ШИМ представлял меандр.
Интервалы воспроизведения и тишины задаются вторым таймером, значения которого рассчитываются исходя из длительности нот и темпа мелодии. Темп определяет число ударов метронома в минуту. Используется понятие BPM (beats per minute, удары в минуту). BPM — это количество четвертных нот в минуту, например, 120 BPM означает, что в минуту играется 120 четвертных. Соответственно расчет длительности необходимо выполнять относительно длительности нот в ¼.
Например, темп равен 140. Длительность воспроизведения четвертной ноты составляет:

В итоге интервал воспроизведения выбран как play_time * 9/10, интервал тишины, как play_time * 1/10.
В завершение упомяну о работе с библиотекой. В моем проекте пьезоизлучатель выделен в класс с простым интерфейсом управления и внутренней машиной состояний. Переход между состояниями происходит по прерыванию от таймера интервалов (duration timer). Такая структура необходима для того, чтобы не тормозить остальные задачи программы, минимизировать время пребывания в функции воспроизведения ноты.

Для воспроизведения мелодии достаточно вызвать функцию PlayMusic(. ), например так: Buzzer.PlayMusic(MUSIC_WIND_OF_CHANGE, DURATION_WIND_OF_CHANGE, TEMPO_WIND_OF_CHANGE, SIZE_WIND_OF_CHANGE). А затем в прерывании от таймера длительности вызывать функцию PlayNote(). Если устройству требуется переход в сон, то текущее состояние пьезоизлучателя возвращает функция GetState(), а функцией StopMusic() можно принудительно остановить воспроизведение.
Свой проект я запустил на микроконтроллере STM32, однако библиотека построена так, чтобы не зависеть от производителя железа. Если на вашем микроконтроллере имеется два 16-и битных таймера, причем один из них поддерживает генерацию ШИМ сигнала, то код вам подходит на 80%. Необходимо проверить, что воспроизведение тех или иных нот, а также длительностей нот не приводит к переполнению счета. При частоте тактирования таймера нот 4 МГц и таймера длительности 10 кГц всё должно получиться. Ножку для пьезоизлучателя требуется настроить в режим альтернативной функции. Увеличить громкость можно путем коммутации более высоких напряжений при помощи внешней схемотехники. Мной испробованы несколько мелодий, с которыми библиотека успешно справилась. Вместе с тем допускаю наличие ошибок, дайте знать, если найдете. Файлы библиотеки можно найти по ссылке.
История закончилась тем, что приехал пьезик на телевизионное шоу, выступил, получил одобрение. И все шло хорошо, пока не появился старик Монтана. Вот незадача, снова изобрел велосипед…
Как проверить ультразвуковой пьезоизлучатель?

Проверяются ультразвуковые излучатели очень просто. Я знаю два простых способа.
Первый способ заключается в том, что излучатель необходимо подключить к генератору ультразвука и капнуть на него каплю воды. Если излучатель рабочий, то капля должна "закипеть".
Второй способ заключается в том, что его нужно также подключить к генератору ультразвука и направить на него микрофон. Микрофон должен быть в свою очередь подключен к осциллографу. Если излучатель излучает, то на экране осциллографа будут колебания.
Тема: Пьезоизлучатель(пьезодинамик)
Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от vbvb
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
тогда в чем смысл их использования в магнитоле?
Сообщение от Борисыч44
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от vbvb
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
Сообщение от mAxSpace
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Alexander, в японии 30 лет назад, в отличие от, тогда ещё СССР, хорошо знали что такое маркетинг — это раз.
И ставили такие излучатели только с несерьёзные аппараты.
Я не при помню ни одной модели более или мене приличной акустики где бы в качестве супер твитера ставили пьезо элемент, тем более без повышающего трансформатора или специального рупора — это два.
———- Добавлено в 14:35 ———- Предыдущее сообщение в 14:33 ———-
Вы просто попробуйте измерить как он влияет на АЧХ в целом и вопросы сами все отпадут — он на 10. 15 дБ тише чем нужно и разумеется толку от него грошь с полтиной, поэтому он нужен в маркетинге чтоб красиво написать что акустика не двух, а трёхполосная, и для придания более "более другого вида", а с юридической точки зрения никто не сможет придраться что это муляж(хотя и такие были) ведь он по факту работает, просто никто не нормировал условия его работы.
На рисунке номерами сверху обозначены ноты и их длительности согласно таблицам.

Возможности пьезоизлучателя для генерации звука весьма ограничены, получить низкочастотные колебания не удастся. Как правило, максимум громкости излучателя попадает в диапазон частот от двух до четырех кГц. Для используемого мною HPM14A громкость звука на частотах менее 500 Гц будет примерно 40 – 50 дБ.
Ноты, их длительность и темп мелодии определяют временные интервалы, в течение которых производится генерация колебаний. Чтобы лучше понять суть вопроса, взглянем на спектр мелодии, который синтезируется при помощи программы MuseScore 3. Для просмотра спектра используется программа Audacity.

Каждая нота представляет собой «треугольник» определенной высоты. Программа синтезирует затухающий звук, как это происходит при колебаниях струны. Сгенерировать сигнал такой формы на микроконтроллере достаточно сложно. Существенно упростим себе задачу. Каждую ноту будем задавать при помощи интервала сигнала и интервала тишины. Сумма двух интервалов составляет длительность звучания ноты. Интервал сигнала – ШИМ заданной частоты, тишины – нулевой уровень напряжения. Вставка нулевого интервала позволяет различать многократное воспроизведение одной и той же ноты.
Для решения задачи достаточно двух таймеров. Рассмотрим генерацию частоты нот. Возьмем ноту ДО малой октавы в качестве примера. При тактировании таймера частотой 4 МГц, значения для регистра перезагрузки считаются следующим образом.

В регистр сравнения необходимо записать половину рассчитанной величины, чтобы сигнал ШИМ представлял меандр.
Интервалы воспроизведения и тишины задаются вторым таймером, значения которого рассчитываются исходя из длительности нот и темпа мелодии. Темп определяет число ударов метронома в минуту. Используется понятие BPM (beats per minute, удары в минуту). BPM — это количество четвертных нот в минуту, например, 120 BPM означает, что в минуту играется 120 четвертных. Соответственно расчет длительности необходимо выполнять относительно длительности нот в ¼.
Например, темп равен 140. Длительность воспроизведения четвертной ноты составляет:

В итоге интервал воспроизведения выбран как play_time * 9/10, интервал тишины, как play_time * 1/10.
В завершение упомяну о работе с библиотекой. В моем проекте пьезоизлучатель выделен в класс с простым интерфейсом управления и внутренней машиной состояний. Переход между состояниями происходит по прерыванию от таймера интервалов (duration timer). Такая структура необходима для того, чтобы не тормозить остальные задачи программы, минимизировать время пребывания в функции воспроизведения ноты.

Для воспроизведения мелодии достаточно вызвать функцию PlayMusic(. ), например так: Buzzer.PlayMusic(MUSIC_WIND_OF_CHANGE, DURATION_WIND_OF_CHANGE, TEMPO_WIND_OF_CHANGE, SIZE_WIND_OF_CHANGE). А затем в прерывании от таймера длительности вызывать функцию PlayNote(). Если устройству требуется переход в сон, то текущее состояние пьезоизлучателя возвращает функция GetState(), а функцией StopMusic() можно принудительно остановить воспроизведение.
Свой проект я запустил на микроконтроллере STM32, однако библиотека построена так, чтобы не зависеть от производителя железа. Если на вашем микроконтроллере имеется два 16-и битных таймера, причем один из них поддерживает генерацию ШИМ сигнала, то код вам подходит на 80%. Необходимо проверить, что воспроизведение тех или иных нот, а также длительностей нот не приводит к переполнению счета. При частоте тактирования таймера нот 4 МГц и таймера длительности 10 кГц всё должно получиться. Ножку для пьезоизлучателя требуется настроить в режим альтернативной функции. Увеличить громкость можно путем коммутации более высоких напряжений при помощи внешней схемотехники. Мной испробованы несколько мелодий, с которыми библиотека успешно справилась. Вместе с тем допускаю наличие ошибок, дайте знать, если найдете. Файлы библиотеки можно найти по ссылке.
История закончилась тем, что приехал пьезик на телевизионное шоу, выступил, получил одобрение. И все шло хорошо, пока не появился старик Монтана. Вот незадача, снова изобрел велосипед…
Как проверить ультразвуковой пьезоизлучатель?

Проверяются ультразвуковые излучатели очень просто. Я знаю два простых способа.
Первый способ заключается в том, что излучатель необходимо подключить к генератору ультразвука и капнуть на него каплю воды. Если излучатель рабочий, то капля должна "закипеть".
Второй способ заключается в том, что его нужно также подключить к генератору ультразвука и направить на него микрофон. Микрофон должен быть в свою очередь подключен к осциллографу. Если излучатель излучает, то на экране осциллографа будут колебания.
Тема: Пьезоизлучатель(пьезодинамик)
Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от vbvb
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
тогда в чем смысл их использования в магнитоле?
Сообщение от Борисыч44
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от vbvb
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Сообщение от mAxSpace
Сообщение от mAxSpace
- Просмотр профиля
- Сообщения форума
- Созданные темы
Re: Пьезоизлучатель(пьезодинамик)
Alexander, в японии 30 лет назад, в отличие от, тогда ещё СССР, хорошо знали что такое маркетинг — это раз.
И ставили такие излучатели только с несерьёзные аппараты.
Я не при помню ни одной модели более или мене приличной акустики где бы в качестве супер твитера ставили пьезо элемент, тем более без повышающего трансформатора или специального рупора — это два.
———- Добавлено в 14:35 ———- Предыдущее сообщение в 14:33 ———-
Вы просто попробуйте измерить как он влияет на АЧХ в целом и вопросы сами все отпадут — он на 10. 15 дБ тише чем нужно и разумеется толку от него грошь с полтиной, поэтому он нужен в маркетинге чтоб красиво написать что акустика не двух, а трёхполосная, и для придания более "более другого вида", а с юридической точки зрения никто не сможет придраться что это муляж(хотя и такие были) ведь он по факту работает, просто никто не нормировал условия его работы.