Гид компьютерного мира - Информационный портал
  • Главная
  • Инструкции
  • Что такое зуммер и как он работает. Что такое зуммер и как он работает Подключения зуммера к Arduino

Что такое зуммер и как он работает. Что такое зуммер и как он работает Подключения зуммера к Arduino

Пищалка на Ардуино, которую часто еще называют зуммером, пьезодинамиком или даже баззером – частый гость в DIY проектах. Этот простой электронный компонент достаточно легко подключается к платам Arduino, поэтому вы можете быстро заставить вашу схему издавать нужные звуки – сигнализировать, пищать или вполне сносно проигрывать мелодию. В данной статье расскажем про отличие активных и пассивных зуммеров, разберем схему подключения пьезоэлемента к плате Ардуино и покажем пример скетча для управления пищалкой. А еще вы найдете пример мелодии, которыми cможете снабдить свой проект.

Зуммер, пьезопищалка – все это названия одного устройства. Данные модули используются для звукового оповещения в тех устройствах и системах, для функционирования которых в обязательном порядке нужен звуковой сигнал. Широко распространены зуммеры в различной бытовой технике и игрушках, использующих электронные платы. Пьезопищалки преобразуют команды, основанные на двухбитной системе счисления 1 и 0, в звуковые сигналы.

Пьезоэлемент “пищалка”

Пьезопищалка конструктивно представлена металлической пластиной с нанесенным на нее напылением из токопроводящей керамики. Пластина и напыление выступают в роли контактов. Устройство полярно, имеет свои «+» и «-». Принцип действия зуммера основан на открытом братьями Кюри в конце девятнадцатого века пьезоэлектрическом эффекте. Согласно ему, при подаче электричества на зуммер он начинает деформироваться. При этом происходят удары о металлическую пластинку, которая и производит “шум” нужной частоты.


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


Модуль пищалки для Ардуино

Конструктивно модуль исполняется в самых разных вариантах. Самый рекомендуемый для подключения к ардуино – готовый модуль со встроенной обвязкой. Такие модули можно без особого труда купить в интернет-магазинах.

Если сравнивать с обыкновенными электромагнитными преобразователями звука, то пьезопищалка имеет более простую конструкцию, что делает ее использование экономически обоснованным. Частота получаемого звука задается пользователем в программном обеспечении (пример скетча представим ниже).

Где купить пищалку Ардуино

Наш традиционный обзор предложений на Aliexpress

Громкий пьезодинамик – пищалка 3-24 Вольт, подходит для Ардуино Простейшие пассивные пьезоизлучатели 12MM*8.5MM 3-12В, набор 5 штук
Модуль пьезодинамика с необходимой обвязкой для работы с Ардуино Пищалки с разъемами для подключения к материнской плате компьютера Набор из 10 активных спикеров – пьезопищалок

Отличия активного и пассивного зуммера

Главное отличие активного зуммера от пассивного заключается в том, что активный зуммер генерирует звук самостоятельно. Для этого пользователь должен просто включить или выключить его, другими словами, подав напряжение на контакты или обесточив. Пассивный зуммер же требует источника сигнала, который задаст параметры звукового сигнала. В качестве такого источника может выступать плата Ардуино. Активный зуммер будет выдавать более громкий звуковой сигнал в сравнении с его конкурентом. Частота излучаемого звука активного зуммера составляет значения 2,5 кГц +/- 300Гц. Напряжение питания для пищалки варьируется от 3,5 до 5 В.

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

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

Подключения зуммера к Arduino

Подключение модуля пьезоэлемента к Ардуино выглядит достаточно простым. Потребляемый ток маленький, поэтому можно просто напрямую соединить с нужным пином.


Подключение пищалки к Ардуино (порт 12)

Электрическая схема подключения пьезоэлемента без сопровождающих модулей выглядит следующим образом.

На некоторых вариантах корпусов зуммера можно найти отверстие для фиксации платы при помощи винта.

Зуммер arduino имеет два выхода. Следует обратить внимание на их полярность. Темный провод должен быть подключен к «земле», красный – к цифровому пину с PWM. Один вывод настраивается в программе как «вход». Arduino отслеживает колебания напряжения на выводе, на который подаётся напряжение с кнопки, резистора и датчиков.


Пищалка Арудино с названиями контактов

Напряжение на «вход» подается различное по значениям, система четко фиксирует только два состояния – вышеупомянутые 1 и 0 (логические ноль и единица). К логической единице будет относиться напряжение 2,3-5 В. Режим «выход» – это когда Arduino подает на вывод логический ноль/единицу. Если брать режим логического нуля, тут величина напряжения настолько мала, что ее не хватает для зажигания светодиода.


Схема подключения пищалки к Ардуино

Обратите внимание, что входы довольно чувствительны к внешним помехам разного рода, поэтому ножку пьезопищалки через резистор следует подключать к выводу. Это даст высокий уровень напряжения на ножке.

Пример скетча для пьезодимнамика

Для “оживления” подключенного к плате ардуино зуммера потребуется программное обеспечение Arduino IDE, которое можно .

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

Пример скетча с функцией tone() и noTone()

//Пин, к которому подключен пьезодинамик. int piezoPin = 3; void setup() { } void loop() { /*Функция принимает три аргумента 1) Номер пина 2) Частоту в герцах, определяющую высоту звука 3) Длительность в миллисекундах. */ tone(piezoPin, 1000, 500); // Звук прекратится через 500 мс, о программа останавливаться не будет! /* Вариант без установленной длительности */ tone(piezoPin, 2000); // Запустили звучание delay(500); noTone(); // Остановили звучание }

Схема подключения для примера выглядит следующим образом:


Подключение пищалки к 3 пину Ардуино

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

Невозможно одновременно использовать ШИМ на пинах 3 и 11 (они используют одинаковый внутренний таймер), а также нельзя запустить одновременно две мелодии двумя командами tone() – в каждый момент времени будет исполняться только одна.Еще одно ограничение: нельзя извлечь звук частотой ниже 31 Гц.

Вариант скетча для активного зуммера чрезвычайно прост. мы выставляем значение 1 в порт, к которому подключена пищалка.

Вариант скетча для зуммера без tone()

Пример скетча для варианта без функции tone() представлен на изображении внизу. Этот код задает частоту включения звука один раз в две секунды.


Для корректной работы устройства необходимо задать номер PIN, определить его как «выход». Функция analogWrite использует в качестве аргументов номер вывода и уровень, который изменяет свое значение от 0 до 255. Это все по причине того, что шим-выводы Arduino имеют ЦАП (цифроаналоговый преобразователь) 8-бит. Изменяя этот параметр, пользователь меняет громкость зуммера на небольшую величину. Для полного выключения следует пропитать в порте значение «0». Следует сказать, что используя функцию «analogwrite», пользователь не сможет изменять тональность звука. Для пьезоизлучателя будет определена частота 980 Гц. Это значение совпадает с частотой работы выводов с шим на платах Ардуино и аналогов.

Примеры мелодий для зуммера

Для того, чтобы разнообразить работу с новым проектом, добавить в него «развлекательный» элемент, пользователи придумали задавать определённый набор частот звука, делая его созвучным некоторым знаменитым композициям из песен и кинофильмов. Разнообразные скетчи для таких мелодий можно найти в интернете. Приведем пример мелодии для пьезопищалки для одного из самых узнаваемых треков «nokia tune»из ставших легендарными мобильников Nokia. Файл pitches.h можно сделать самим, скопировав его содержимое так, как указано в этой статье на официальном сайте.


При написании собственных мелодий пригодится знание частот нот и длительностей интервалов, используемых в стандартной нотной записи.

Частота нот для пищалки Ардуино

Заключение

В этой статье мы рассмотрели вопросы использования пищалки в проектах Arduino: разобрались с пассивным и активным зуммерами, осветили некоторые теоретические вопросы по строению пьезоэлемента. Узнали, как подключить пьезопищалку к ардуино и как запрограммировать скетч для работы с активными, пассивными модулями. Как видно, ничего особенно сложного в работе с зуммерами нет и вы сможете легко включить аудио возможности в свой проект. Причем помимо обычных гудков вы можете создавать целые музыкальные произведения.

Слово «зуммер» происходит от немецкого «summen» - жужжать. По сути это — звукоизлучающее устройство, традиционно используемое в качестве сигнального. На сегодняшний день зуммеры бывают электромеханическими и пьезоэлектрическими. И те и другие находят применение в разных устройствах.

Исторически первым появился электромеханический зуммер, представляющий собой электромеханическое реле с нормально замкнутыми контактами, через которые катушка данного реле подключается к источнику тока.

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

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

И вот, контакты снова замкнуты, катушка опять получает питание и сердечник снова притягивает подвижный контакт реле, опять же размыкая собственную питающую цепь. Так процесс повторяется снова и снова. Колебания якоря реле издают звук, похожий на жужжание. Аналогичным образом работает катушка Румкорфа.

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

Основной недостаток электромеханического зуммера очевиден: наличие подвижного элемента изнашивает механизм, а пружина со временем слабеет, в связи с чем наработка зуммера на отказ составляет не более 5000 часов.

Тем не менее, внимания заслуживает первое применение зуммера, изобретенного Иоганном Вагнером в 1839 году, и доработанного позже Джоном Мирандом, который добавил к вибрирующему молоточку колокол. Получился электрический звонок, производящий звук ударом молоточка по колоколу. Молоточек звонка был связан с якорем реле, которое непосредственно и работало в режиме зуммера.

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

Более современный вариант зуммера — пьезоэлектрический звуковой излучатель, относящийся к электроакустическим устройствам, и производящий слышимый звук или ультразвук с помощью обратного пьезоэлектрического эффекта.

Пьезоэлектрик нанесен здесь на тонкую металлическую пластину. На обратной стороне пьезоэлектрического слоя имеется токопроводящее напыление. Напыление и сама пластина служат контактами, на которые подается питание. Для усиления амплитуды распространяющихся звуковых колебаний, к пластине может быть прикреплен небольшой рупор с отверстием.

Питается пьезоэлектрический зуммер переменным током при напряжении от 3 до 10 вольт, а частота тока определяет частоту звука. Характерная резонансная частота пьезоэлектрических звуковых излучателей лежит в диапазоне от 1 до 4 кГц, что и приводит к легко узнаваемому жужжанию со звуковым давлением достигающим 75 дБ на расстоянии в 1 метр от излучателя. Такие зуммеры способны работать как микрофоны или датчики.

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

В данной статье расскажем что такое зуммер, его области применения, и как его подключать.

Бузер, Зуммер, Пьезоэлектрический излучатель, Пищалка или как нибудь ещё? — существует большое количество названий этой маленькой пищащей заразы, которая говорит о том, что случилось что-то не очень хорошее. Как часто я просто ненавидел этот звуковой зуммер с противным писком. Наверное я не одинок в этом желании. Наверняка вы слышали крайне неприятный приятный звук, который на вас по ошибке (или не очень) давала система на входе/выходе из магазина. Согласитесь, что это крайне неприятный звук. В дальнейшей статье, я буду называть их всех зуммером, так как привык к этому названию.

Зуммер – устройство позволяющее генерировать звук определённой частоты. Обычно диапазон частот находиться в диапазоне от 1 – 10 кгц и если вам попался звуковой зуммер, то идёт характерный звук: «пиииииип».

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

Мне лично попал вот такой экземпляр (модель sl1i-12fsp):

С ним я и проводил все свои пробы зуммеров. Оказалось, что его хорошо слышно даже в толпе орущих детей, так как сигнал содержит высокую частоту, которой мало в человеческом голосе. Это позволяет практически всегда сказать, работает он или нет. В случае, если у вас нет толпы детей, а есть работающий вентилятор/двигатель/что-то похожее, то не сомневайтесь, слышно его будет очень хорошо.

Подключение Зуммера.

Подключение к схеме проводиться как у батарейки или диода. На устройстве есть обозначения «+» и «-». Подключаем их к питающему напряжению от 3 до 20 вольт, и радуемся получаемому звуку. У зуммера есть небольшая инерционность, и после отключения питания он ещё некоторое время будет звучать. Поэтому на нём моделировать звук не получиться, а вот как тревожная сигнализация получиться что надо.

Управляют ими обычно при помощи усилителя на биполярных транзисторах с общим эмиттером. Это позволяет от вашего МК(ARDUINO/SMT32/MSP430) делать даже полифоничный звук. Но при этом надо учитывать то, что есть зумеры с встроенным генератором. Они пищат прерывисто, с определённой частотой. Это позволяет используя разные зумеры, которые говорят о разных событиях. Стоят они дороже, но если вы собираете что-то без микроконтроллера, то это отличный финт ушами.

Области применения Зуммера.

Я предлагаю применить данную схему в следующих направлениях:

1)охранные системы

2)датчики, сигнализирующие о воздействиях любого рода.

3)бытовая техника (например в микроволновках, где сигнал о окончании работы подаётся именно зуммером).

4)игрушках.

5)в любых устройствах, где требуется звуковое оповещение.

Личный опыт использования.

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

1) Крайне противный звук при отработке. Конечно, если у вас частота работы данной части раз в несколько дней, то ещё ничего, но во время тестов пищать он будет постоянно, что неминуемо отразится на вашей восприимчивости и желании работать.

2) Достаточное энергопотребление для носимой электроники. Ставить в то, что вы будете носить с собой такую штуку определённо не стоит.

3) Достаточная инерционность. В своё время я потратил кучу времени, чтобы сделать на основе дешёвого зуммера midi-клавиатуру. После всех моих стараний, хорошей звукопередачи не получилось, но музыку из старой SEGA восстановить получилось, чему мой заказчик был крайне рад.

Будет достаточно проще пользоваться устройством, если мы реализуем звуковое сопровождение, подключим зуммер к нашей плате. У нас немного поменялось расположение элементов, поэтому обновим несколько директив #define, а конкретно зуммер подключим к ШИМ выходу arduino. (Полный код, как обычно будет в конце статьи)

#define buzzer 11 // Контакт динамика

В результате, схема подключения зуммера будет выглядеть так

Почему мы выбрали ШИМ выход? Если на динамик подать 5в, он один раз пикнет и всё, вернее это даже слышно не будет практически. Звук – это аналоговый сигнал, а ШИМ выход без лишней головной боли, сможет имитировать поток импульсов


Для активации ШИМ сигнала, мы можем использовать команду analogWrite(выход, значение); , где всего два аргумента – первый это номер выхода, а второй значение от 0 до 255, которое влияет на степень скважности в ШИМ – сигнале. Я поэкспериментировал, и нашёл оптимальное значение скважности 20, для нормального тона динамика. Соответственно, скважность 0 – полностью выключить звук.

AnalogWrite(buzzer, 20); // Включаем звук на ШИМ выходе analogWrite(buzzer, 0); // Выключаем звук на ШИМ выходе

Нужно помнить, что мы не должны использовать delay, в момент создания звуковых эффектов, значит опять будем привязываться к переменной времени контроллера millis().


Попробуем изобразить код на диаграмме. По нажатию кнопки, будем активировать динамик – а потом, при некоторых условиях отключать его, или делать циклы.

Введём флаг ошибки, который будем применять, при нажатии кнопки сброса, неправильном вводе пароля и простое 3 секунды, когда пользователь вдруг перестал вводить пароль

Bool keyError; // Флаг ошибки пароля

Также введём переменную, которую будем сравнивать с временем контроллера millis() .

Uint32_t beep; // Переменная времени задержки зуммера после нажатия кнопки или действия

В цикле loop() у нас будут постоянно проверяться все наши функции.

Key_beep_off(); // Выключение звука зуммера key_beep_ok(); // Звук зуммера при отрытии замка key_beep_error(); // Звук ошибки зуммера

В цикле обработки клавиши key_scan () , если было зафиксировано нажатие, то запустим звуковой сигнал, и сбросим переменную времени.

Beep = millis(); // Приравниваем переменную времени зуммера к времени контроллера analogWrite(buzzer, 20);

Если это просто нажатая клавиша, без действия, то нам нужен очень кратковременный звук. Как нам узнать, что нажатие не привело к действию? Мы проверим статус закрытого замка, и переменную времени в течении 150мс. Если статус замка закрыт, то через 150мс, звук отключаем. Так мы получим непродолжительный звук, при нажатии любой кнопки.

Void key_beep_off() // Выключаем пищалку, если замок остался закрытым, через 150мс { if (millis() - beep > 150 && lockType == 1 && digitalRead(lock) == LOW || millis() - beep > 200 && lockType == 0 && digitalRead(lock) == HIGH) { analogWrite(buzzer, 0); // Выключаем звук на ШИМ выходе } }

Теперь звук ошибки. Предлагаю для понимания сделать два коротких сигнала, обычно этот звук понятен пользователю. Здесь всё очень просто. Нам нужно использовать флаг ошибки keyError . Пока его значение равно 1, мы будем выполнять условия с временным промежутком в 150мс, а в конце просто сбросим его. Просто делаем 3 if, в каждом из котором делаем привязку ко времени. 1)Включаем динамик – > 2) отключаем – > 3) включаем. Потом снимаем флаг keyError == 0 .

Void key_beep_error() // Функция ошибки клавиатуры - двойной писк { if (keyError == 1) { if (millis() - beep > 0 && millis() - beep < 150) // Интервал времени от 0 до 150мс - звук есть { analogWrite(buzzer, 20); // Включаем звук на ШИМ выходе } if (millis() - beep > 150 && millis() - beep < 300) // Интервал времени от 150 до 3000мс - звука нет { analogWrite(buzzer, 0); // Выключаем звук на ШИМ выходе } if (millis() - beep > 300 && millis() - beep < 450) // Интервал времени от 300 до 450мс - звук есть { analogWrite(buzzer, 20); // Включаем звук на ШИМ выходе } if (millis() - beep > 450) // По прошествии 450мс { analogWrite(buzzer, 0); // Выключаем звук на ШИМ выходе keyError = 0; // Сбрасываем флаг ошибки открытия } } }

Затем нам нужно в некоторых участках кода, поднимать флаг keyError == 1 и сбрасывать переменную beep. Этот код нам нужно вставить в обработку клавиши # , также он должен исполняться при неправильном вводе пароля, и сбросе его, при простое 3 секунды.

Beep = millis(); // Приравниваем переменную времени зуммера к времени контроллера keyError = 1; // Активируем флаг ошибки зуммера

Теперь разберём звук динамика в момент открытия замка. Чтобы пользователь понимал, что замок ещё открыт (это особенно актуально в случае применения магнитного замка) будем воспроизводить кратковременные бипы. Цикл бипов должен продолжаться, пока открыт замок, для этого у нас была переменная openTime. Т.е. мы можем считывать состояние замка, и бипать, пока beep < openTime. Далее мы организуем цикл включения и выключения динамика, по схожему принципу, как в коде ошибки, но он у нас будет повторять, пока открыт замок. Чтобы цикл повторно запустился, в конце нам нужно обновить переменную beep.

Void key_beep_ok() { if (millis() - beep < openTime && lockType == 1 && digitalRead(lock) == HIGH || millis() - beep < openTime && lockType == 0 && digitalRead(lock) == LOW) { if (millis() - beep > 0 && millis() - beep < 120) // Задаём время от 0 до 120мс - зуммер активен { analogWrite(buzzer, 30); // Включаем звук на ШИМ выходе } if (millis() - beep > 120 && millis() - beep < 300) // Задаём время от 120 до 300 мс - зуммер не активен { analogWrite(buzzer, 0); // Выключаем звук на ШИМ выходе } if (millis() - beep > 300) // Свыше 300мс обнуляем переменную времени зуммера, чтобы цикл запустился снова, пока действует время открытия замка { beep = millis(); // Приравниваем переменную времени зуммера к времени контроллера } } }

У нас уже прошло достаточно циклов статей по построению нашей системы доступа, поэтому соберём всё в железе, и протестируем, как работает наш код


Записал небольшое видео, где проверим основные функции нашего устройства.

Лучшие статьи по теме