Модуль пассивного зуммера Arduino
Описание Подключение модуля пассивного зуммера Применение
Модуль пассивного зуммера Arduino
Описание
Модуль пассивного зуммера (рисунок 1), входящий в состав ARDUINO SENSOR KIT, является пассивным звуковым модулем и представляет собой плату с 5-вольтовым пьезоизлучателем (для включения звука нужно подать питание 5 В на пьезоизлучатель, например с выхода Arduino). Конструктивно модуль исполняется в самых разных вариантах. Самый рекомендуемый для подключения к Arduino — готовый модуль со встроенной обвязкой. В отличии от активного зуммера, данному типу зуммера нужен внешний звуковой генератор, в качестве которого может работать плата Arduino, зато появляется возможность регулировать частоту звука. По своей геометрической форме активный и пассивный зуммеры никак не различаются, и отнести элемент к тому или иному виду по данной характеристике не представляется возможным (визуально идентифицировать можно только активный зуммер, если на плате дополнительно присутствуют резистор и усилитель, так как у пассивного они обычно отсутствуют).
Рисунок 1 — Модуль пассивного зуммера Arduino.
Таблица – Технические характеристики модуля пассивного зуммера.
Параметр | Значение |
---|---|
Номинальное рабочее напряжение | от 3,5 В до 5 В |
Потребляемый ток | не более 25 мА |
Регулировка аудио частоты | возможна |
Габаритные размеры | 19 мм х 15 мм х 12 мм |
Подключение модуля пассивного зуммера
Распиновка модуля пассивного зуммера представлена на рисунке 2.
Рисунок 2 – Распиновка модуля пассивного зуммера Arduino.
Для его подключения потребуются:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- провода типа «папа-мама»;
- модуль пассивного зуммера Arduino.
Схема подключения модуля пассивного зуммера представлена на рисунке 3.
Рисунок 3 – Подключение модуля пассивного зуммера к Arduino UNO.
Схемы подключения модуля пассивного зуммера к микроконтроллерам Arduino Uno, Arduino Nano или Arduino Mega принципиально ничем не отличаются.
Подключается модуль пассивного зуммера к Arduino Uno следующим образом:
- GND — GND;
- VCC — 5V;
- In — любой цифровой порт.
Потребляемый пьезоэлементом ток маленький, поэтому при простейшей схеме можно просто напрямую соединить пьезоэлемент с нужным пином (рисунок 4).
Рисунок 4 – Простейшая схема подключение модуля пассивного зуммера к Arduino UNO.
После сборки электрической схемы, необходимо загрузить управляющую программу (скетч) в микроконтроллер.
Применение
Модуль пассивного зуммера — это простой электронный компонент, который достаточно легко подключается к платам Arduino, что дает возможность заставить схему издавать нужные звуки: сигнализировать, пищать и даже проигрывать мелодию. Благодаря этому, модуль можно использовать в различных сигнальных системах, бытовых или промышленных приборах, таймерах, обучающей или игровой технике.
Подключение зуммера к микроконтроллеру — №6
Как я изучал микроконтроллеры AVR
- Вы здесь:
- Программирование
- Как я изучал микроконтроллеры AVR
- Подключение зуммера к микроконтроллеру — №6
Напрямую к портам микроконтроллера мы не можем подключать большую нагрузку, так как выйдут из строя порты микроконтроллера, для этого будем использовать транзисторный ключ структуры n-p-n, если в схеме нужно будет подключать не минус к зуммеру как в нашем случае, а плюс источника напряжения, то там будем использовать транзисторы структуры p-n-p — эти знания нам пригодятся в дальнейшем когда будем подключать семисегментные индикаторы с общим катодом и анодом соответственно.
Начнем с алгоритма работы нашей программы!
1. Если нажать кнопку КН1 подключенную к порту PB1, то на ножке микроконтроллера №15 появится минус источника питания.
2. На ножке №3 порт PD1 появится напряжение и через токоограничительный резистор пойдет на базу транзистора VT1.
3. Ключ срабатывает и подает минус на ножку зуммера ВА1.
Перейдем к написанию программы и рисованию электрической схемы!
1. Создаем новый проект в Atmel Studio 7 по пути File > New > Projec…, выбираем C/C++ и тип проекта GCC C Executable Project, вводим название проекта (Name: и Solution name:).
2. Выбираем тип микроконтроллера с которым будем работать, в нашем случае Atmega8.
Программа нам выдает код в файле main.c*
Приводим его к читабельному виду, удаляем лишние комментарии.
Рисуем электрическую схему подключения зуммера к микроконтроллеру:И так схема у нас есть, на ней обозначены микроконтроллер, источник напряжения 5В, к порту PD1 ножки микроконтроллера №3 подключен транзистор базой к микроконтроллеру, через токоограничительный резистор, зуммер ВА1, к порту PB1 ножки микроконтроллера №15 подключена кнопка КН1, а также обозначены выводы для подключения программатора, вернемся к программе.
Ключ подключен к порту РD, настроим в программе ножки порта РD на выход, допишем в программе DDRD = 0b11111111;, так как кнопка подключена к порту В настроим его ножки на вход DDRB = 0b00000000;, по алгоритму микроконтроллер должен понимать, что когда мы подали минус — замкнув кнопку, для этого подтянем ножки порта В к +5в через внутренние резисторы микроконтроллера PORTB = 0b11111111;.
Добавим в программу библиотеку задержек #include <util/delay.h>, для задержки — чтобы исключить дребезг контактов кнопки будем использовать функцию _delay_ms(), далее с помощью оператора #define укажем программе, что наш микроконтроллер будет работать от внутреннего генератора с частой 8МГц допишем в код #define F_CPU 8000000UL.
Вот такой получился код:
Запишем в бесконечный цикл while код опроса порта на котором подключена кнопка:
Для опроса кнопки воспользуемся операторами if и else, строка if (PINB == 0b11111101) означает, если ножка порта PB1 равна минусу, то выполним код выделенный красным на рисунке ниже, иными словами подадим +5в на базу транзистора VT1, после задержки 50ms для устранения дребезга контактов:
В противном случае else, выключим порт D:
Теперь мы знаем как подключить транзистор к микроконтроллеру и управлять более мощной нагрузкой.
Исходный код программы Скачать архив
- Назад
- Вперед
Статьи по теме
Как правильно пользоваться зуммером
Стефан Кальдерони написал эту статью. Только предисловие мое.
Предисловие
Часто мы думаем, что знаем что-то хорошо, потому что это кажется простым. Например, для работы светодиоду нужен только небольшой резистор и небольшое напряжение, и все в порядке.
А зуммер есть зуммер; подключите его к выводу PWM и используйте библиотеку тонов, чтобы сделать какой-нибудь звук.
Хорошо, это сработает, но лучший ли это способ? Может ли это повредить Arduino или любой другой микроконтроллер?
Несмотря на то, что я часто использовал зуммер в своих гаджетах и курсах и никогда не имел поврежденного микроконтроллера, это вопросы, которые у меня (иногда) возникали мимоходом, но я не пытался ответить.
Но Стефан ответил на эти вопросы и нашел очень интересные ответы.
Вот как это началось:
Стеф написал(а): Я работаю над простым проектом Arduino: перепрограммирую Саймон говорит игру с помощью Arduino Nano, 4 кнопок, 4 светодиодов и пассивного зуммера.
С программированием проще простого, и это явно не моя проблема.
Меня больше волнует электронная часть, в которой я новичок без опыта.
У меня нет технических подробностей о пассивном зуммере, который был в китайском наборе Arduino, который я заказал 3 года назад. В этом руководстве пользователя на странице 68 вы можете увидеть единственные имеющиеся у меня технические данные об этом пассивном зуммере, который, вероятно, является очень простым и очень распространенным.
Инструкции по подключению, приведенные в этом руководстве, как и во многих онлайн-учебниках в этом отношении, кажутся мне действительно неразумными и глупыми. Действительно, подключение зуммера напрямую через его положительный электрод к одному из контактов ШИМ микроконтроллера (ATmega328P) может привести к возникновению электрического напряжения, которое может повредить его или даже полностью разрушить. ATmega328P может обрабатывать постоянный ток до 20 мА на своих входных/выходных контактах (хотя вы можете увеличить его до 40 мА, например, с помощью импульсов ШИМ, но это действительно предел, который вы не должны превышать). А регулятор напряжения платы Arduino может принимать до 200 мА на контактах Vcc (5V) и GND.
Итак, Стефан отправился исследовать проблему. Ниже его ответ. Я хотел опубликовать этот пост с разрешения Стефана, потому что это отличный пример постановки правильных вопросов для достижения полезного и правильного решения.
Я сохранил оригинальный документ Стефана (размещенный в нашем Клубе Создателей) с небольшими правками (пара опечаток).
Как (правильно) использовать зуммер
В начале я хотел управлять простым пассивным зуммером с платой Arduino Nano, чтобы издавать звуки разных тонов и сделать игру «Саймон говорит».
Единственный пассивный зуммер, который у меня был, был из китайского комплекта Arduino, который я купил 3 года назад. В течение долгого времени я был введен в заблуждение, консультируясь со многими веб-сайтами, которые утверждают, что объясняют вещи любому, кто будет слушать, но делают много ошибок, которые могут разрушить плату Arduino. Прежде всего, вопреки тому, во что многие верят, зуммеры, продаваемые в дешевых комплектах Arduino, являются не пьезоэлектрическими зуммерами с высоким импедансом , а магнитными зуммерами с низким импедансом .
И этот момент крайне важно учитывать, если вы хотите защитить свою плату Arduino. Не имея точной информации о характеристиках моего зуммера, я измерил его импеданс мультиметром и нашел 15 Ом. Это позволило мне провести исследование, и я, наконец, наткнулся на правильное техническое описание для этого типа зуммера. У меня модель 16R.
Магнитные зуммеры — это не что иное, как обычные динамики. Они содержат катушку из проводящего провода и небольшие магниты и могут быть ассимилированы в цепь RL. Наличие индуктивности означает, что необходимо принять меры предосторожности для поглощения энергии, высвобождаемой при внезапном падении напряжения на его выводах.
Также необходимо учитывать, что зуммер может войти в резонанс с внешними помехами и подавать ток, наведенный катушкой, который будет повторно подан в цепь. Чтобы сократить эти эффекты, мы должны принять меры предосторожности, подключив диод к клеммам зуммера, который будет рассеивать эту энергию.
Здесь достаточно простого диода 1N4148 для поглощения тока, наводимого катушкой. В случае пьезоэлектрического зуммера, наоборот, для рассеивания этой энергии необходимо подключить резистор высокого сопротивления (1 кОм) вместо диода.
Чтобы издать звук, вы должны послать на зуммер прямоугольный периодический сигнал, частота которого соответствует высоте ноты, которую вы хотите сыграть. Платформа Arduino предоставляет для этого функцию tone() . Он позволяет формировать ШИМ-сигнал со скважностью 50 % и на желаемой частоте:
тон (контакт, частота, длительность_мс)
Опять же, многие сайты утверждают, что вы должны подключить зуммер к контакту микроконтроллера, способному передавать сигнал ШИМ.
Но это неправда!
Вы можете подключить зуммер к любому контакту!
Однако важно учитывать, что для генерации прямоугольного периодического сигнала на заданной частоте функция tone() генерирует ШИМ-сигнал с коэффициентом заполнения 50%. Для генерации такого сигнала он использует 9 микросхем ATmega328P.0022 Таймер2 . Поэтому функции микроконтроллера по умолчанию, использующие этот таймер, больше недоступны. Тем не менее именно Timer2 генерирует сигналы ШИМ по умолчанию, подаваемые на контакты D3 и D11 .
Другими словами, эти контакты больше нельзя использовать как таковые. Их можно использовать как простые цифровые выводы без сигналов ШИМ по умолчанию. Однако вы можете использовать любой из них для отправки ШИМ-сигнала переменной частоты, сгенерированного функцией tone() , на зуммер с помощью Timer2. Но вам не нужно. Вы можете выбрать контакт, который вам нравится, чтобы активировать зуммер. Я решил использовать контакт D12 (это не контакт ШИМ).
Согласно техпаспорту моего зуммера 16R, ток, проходящий через него, должен быть не более 30 мА . А цифровые контакты ATmega328P могут выдавать непрерывный ток только 20 мА. Этот предел увеличивается до 40 мА в случае импульсного тока (применимо к ШИМ-сигналу с коэффициентом заполнения 50 %). Поэтому я мог бы вставить простой резистор между контактом D12 платы Arduino и зуммером, чтобы не повредить его.
Например, с резистором 10 Ом мы получаем ток 5/(10 + 16) = 19,23 мА. Это допустимо для микроконтроллера. Но я предпочел использовать биполярный транзистор, чтобы позволить мне поиграть с этим замечательным компонентом и в то же время добавить защиту. Транзистор здесь используется в режиме переключения: он действует как переключатель, управляемый током, поступающим с вывода D12. С этого момента все становится немного сложнее и требует некоторых расчетов.
Здесь я использую транзистор NPN S8050 D331, также входящий в комплект Arduino. Уместно рассмотреть проводка с общим эмиттером для облегчения определения неизвестных в схеме и для гарантии того, что мы можем быстро насытить транзистор, не перегревая его.
Я представил свою электрическую проводку на следующей схеме. Я поставил резистор Rc перед зуммером, чтобы ограничить протекающий через него ток (30 мА) и не рисковать его повредить. Этот ток поступает на коллектор транзистора (назовем его Ic ).
В паспорте транзистора указано, что ток коллектора Ic не должен превышать 500 мА. Мы будем намного ниже этого значения, поскольку мы должны ограничить его до 30 мА. Для защиты микроконтроллера и транзистора я также поставил резистор Rb между выводом D12 платы Arduino и базой транзистора.
Минимальный коэффициент усиления транзистора, указанный в таблице данных, составляет 50 . Другими словами, ток Ib через Rb на базу транзистора должен быть меньше Ic/50=500/50=10 мА. В основном это приемлемо для ATmega328P. Тем не менее, мы увидим, что можно значительно уменьшить это значение, следуя диаграмме и полученным уравнениям:
Важное примечание: среднее напряжение на чистой индуктивности обязательно равно нулю при периодической работе.
Значения Rc и Rb, показанные фиолетовым цветом, соответствуют идеальным значениям, которые учитывают рабочие пределы различных компонентов. Но в качестве меры безопасности мы увеличим значение этих резисторов, чтобы они оставались намного ниже этих пределов.
Для окончательной разводки я выбрал следующие значения (красные на моей схеме), которые гарантируют отличное функционирование схемы и защиту всех ее компонентов:
Rc = 220 Ом и Rb = 10 кОм
Очевидно, что значение Rc (220 Ом) влияет на величину звукового давления зуммера и, таким образом, на интенсивность результирующей громкости звука. Конечно, мы можем взять более низкие значения, чтобы увеличить громкость.
Но мы не должны опускаться ниже 131 Ом.
Вот окончательная проводка для моей игры Simon Says:
А вот и самое интересное:
Надеюсь, что в рассуждениях и расчетах я все сделал правильно. Я рассчитываю на то, что ты, Питер, поправишь меня в случае необходимости.
Я рад, что смог решить эту проблему самостоятельно. В конце концов, это было отличное упражнение. И этот пост поможет вашим читателям понять, что мы не должны доверять всему, что находим в Интернете. На эту тему есть десятки туториалов, часто ерунды…
Ура,
Стеф
Зуммер с Ардуино. Как управлять зуммером с помощью ARDUINO UNO | от Arduinounomagic
4 минуты чтения·
15 февраля 2022 г.Зуммер или пьезодинамик — это звуковое сигнальное устройство, обычно используемое для воспроизведения звука. Пьезозуммер издает звук на основе обратного принципа пьезоэлектрического эффекта. Зуммер — менее дорогое и легкое электронное устройство, поэтому его используют в компьютерах, сигнализаторах, холодильниках, микроволновых печах, охранных устройствах и так далее.
Внутри зуммера имеется два проводника с пьезокристаллом между ними. Всякий раз, когда к кристаллу прикладывается потенциал, положение проводника изменяется, из-за чего звуковая волна от 2 до 4 кГц генерируется зуммером.
В этой статье я объясню вам, как с помощью Arduino Uno можно по-разному управлять зуммером, чтобы генерировать разные звуки. Это очень простой учебник, если вы хотите узнать больше о том, как зуммер банки используется в любом устройстве безопасности, тогда вы можете проверить мой проект продвинутого уровня под названием Locker Guard на основе Arduino Uno.
- 1 x Зуммер
- 1 x Arduino Uno
- 1 x Макетная плата
- Несколько перемычек
Зуммер представляет собой двухконтактное устройство (один длиннее, другой короче). Более длинная ветвь используется для обеспечения входа, а более короткая ветвь используется для обеспечения заземления. Согласно принципиальной схеме я соединил контакт 7 Arduino с более длинной ножкой зуммера. Более короткая ножка зуммера подключена к клемме GND Arduino Uno.
Здесь я делюсь тремя кодами вместе с их выходным видео, которое поможет вам понять работу кода эффективным образом.
Код-1:
В этом первом примере я использовал команду « digitalwrite(pin, value) » для управления зуммером. В этом синтаксисе контакт указывает номер контакта, а значение указывает НИЗКИЙ или ВЫСОКИЙ. Для включения зуммера используется ВЫСОКОЕ значение, а с другой стороны, для выключения зуммера в команде предпочтительнее НИЗКОЕ значение.
Код-2:
В этом примере я использовал функцию tone() для управления зуммером. Существует два типа синтаксиса, используемых для функции tone().
Синтаксис функции tone():
- тон(пин, частота):
- тон(пин, частота, продолжительность):
Параметры :
- контакт = номер контакта, который используется для создания тона.
- Частота = частота тона в герцах (целое число без знака может принимать значения до 65 535, но мы будем использовать значения от 2000 до 5000, чтобы сделать тон слышимым для человеческого уха).
- Продолжительность = ограничение времени тона в миллисекундах.
Я использовал разные значения для создания разных тонов. Функция tone(), используемая для генерации прямоугольной волны указанной частоты. Продолжительность тона можно указать с помощью частоты тона. Если продолжительность указана вместе с функцией tone(), то тон будет генерироваться только в течение указанной продолжительности. Если продолжительность не указана в функции tone(), то для остановки тона необходима функция noTone().
Синтаксис функции noTone():
- noTone(pin)
Параметр:
- pin = контакт, на котором генерация тона должна быть остановлена.
- Если вы используете AnalogWrite() на выводах 3 или 11, то вы не можете использовать функцию tone(), поскольку функция tone() использует тот же встроенный таймер для контактов 3 и 11, что и AnalogWrite().