Зуммер

Материал из MIK32 микроконтроллер
Версия от 16:11, 8 июня 2021; Artecoll (обсуждение | вклад) (У джека Воробья нет картинки кода)

Зуммер (Trema-модуль)

Trema-модуль зуммер пассивный и Trema-модуль зуммер активный - позволяют излучать звук различными способами, в зависимости от выбранной модели зуммера.

Зуммер.png

Спецификация:

  • Напряжение питания: 5 В
  • Потребляемый ток: до 30 мА
  • Интенсивность звука: >= 85 дБ
  • Резонансная частота: 2048 Гц
  • Сопротивление обмотки: 40 Ом
  • Рабочая температура: -20 ... 70 °C
  • Габариты: 30x30x9 (без учёта выводов)

Все модули линейки "Trema" выполнены в одном формате

2222222.png

Подключение:

Trema-модуль зуммер пассивный и Trema-модуль зуммер активный входят в линейку Trema-модулей, что позволяет подключить их к Arduino через Trema Shield по 3-проводному шлейфу (который идёт в комплекте с зуммером) без пайки, без дополнительных проводов и переходников. Их можно подключать к любому выводу Arduino, как цифровому, так и аналоговому.

Модули имеют три вывода: Signal (S) - вход и два вывода питания Vcc (V) и GND (G).

Модули удобно подключать 3 способами, в зависимости от ситуации:

Способ - 1 :  Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем  напрямую к контроллеру Piranha UNO.

B0a8b5f52ec7f92392c40cf658215591.png

Способ - 2 :  Используя Trema Set Shield

Модули можно подключить к любому из цифровых или аналоговых входов Trema Set Shield.

03f90a336625a8b33868656dde5b76a4.png

Способ - 3 :  Используя проводной шлейф и Shield

Используя 3-х проводной шлейф, к  Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

B17ae05dd294848791441d00dbe6435a.png

Питание:

Входное напряжение питания 5 В постоянного тока, подаётся на выводы Vcc (V) и GND (G).

Подробнее о модулях:

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

Trema-модуль зуммер пассивный не имеет встроенного генератора, а преобразует электрический сигнал со входа (S) в механические колебания воздуха. Таким образом частота излучаемого звука соответствует частоте сигнала подаваемого на вход модуля. Чем выше частота, тем «тоньше» звук. Чем ближе частота к резонансной, тем звук сильнее.

Самый простой способ получения звука заключается в применении функции tone(). Данная функция генерирует меандр (сигнал прямоугольной формы с равной длительностью импульсов и пауз), с заданной частотой и длительностью.

Trema-модуль зуммер активный состоит из 5В генератора прямоугольных импульсов (меандра) с частотой 2,3 кГц, и электромагнитного излучателя в одном корпусе. Сигнал с генератора подается на электромагнитный излучатель и преобразуется в звуковые волны той же частоты.

Trema-модуль зуммер активный  уже имеет встроенный генератор и для генерации звука ему не требуется использование функции beep() и ей аналогичных (как для простого Trema-зуммера). Достаточно установить состояние логической «1» на выводе «S» и Вы услышите сигнал с частотой 2,3 кГц и уровнем звукового давления не ниже 85дБ/10см.

Примеры для зуммера пассивного :

Вывод двух коротких звуковых сигнала функцией tone(), сигнализирующих о включении Arduino:

const uint8_t pinBF = 2; // определяем номер вывода к которому подключён зуммер

void setup() {
  tone(pinBF, 2048, 100); //выводим звуковой сигнал с частотой 2048 Гц и длительностью 0,1 с
  delay(200);             //не выводим звук 0,1 с (см. ниже)
  tone(pinBF, 2048, 100); //выводим звуковой сигнал с частотой 2048 Гц и длительностью 0,1 с
}

void loop() { // в примере не используется
}


Обратите внимание на то, что в примере между двумя вызовами функции tone() устанавливается задержка на 0,2 секунды, а в комментарии написано «не выводим звук в течении 0,1 сек». Дело в том, что функция tone() выводит сигнал используя прерывания аппаратного таймера и не приостанавливает выполнение скетча на время вывода сигнала. Значит, сразу после начала вывода первого звукового сигнала, стартует функция delay(), приостанавливая выполнение скетча на 0,2 сек. но звук продолжает выводиться. Значит первые 0,1 сек - выводится сигнал, следующие 0,1 сек - тишина и последние 0,1 - опять выводится сигнал.

Может возникнуть ситуация, когда использование функции tone() невозможно, например, если аппаратный таймер используется для других целей. Тогда сигнал придётся генерировать самим, используя функцию digitalWrite():

Тот же пример, но без использования функции tone():

7.png


Обратите внимание на то, что теперь задержка между первым и вторым вызовом функции myTone() соответствует паузе между сигналами в 0,1 сек, так как функция myTone() приостанавливает выполнение скетча на время вывода звукового сигнала.

Сама функция myTone() не сложна в понимании:

  • Сначала значение переменной j получившей частоту в Гц преобразуем в длительность одного полупериода в мкс. Период T = 1 / F (сек), значит полупериод L = 0,5 T (сек) = 0,5 / F (сек) = 500'000 / F (мкс).
  • Далее к переменной k получившей длительность импульса, добавляется время с начала старта скетча millis()
  • Конфигурируем вывод номер которого получила переменная i как выход
  • Чередуем на выводе i логические уровни, устанавливая их на длительность J пока время прошедшее с момента старта скетча millis() не сравняется со значением переменной k.

Примеры для зуммера активного:

Вывод короткого звукового сигнала.

8.png

Как видно из скетча, управлять Trema-зуммером со встроенным генератором так же легко, как и обычным светодиодом.

Применение:

  • Информирование о событиях
  • Вывод мелодий
  • Создание микровибраций