Рейтинг@Mail.ru
Пьезоизлучатель
Пьезоизлучатель

Как подключить пьезоизлучатель (пьезопищалку) к Arduino

2 комментарии Arduino
Print Friendly, PDF & Email

Генерировать звуки с помощью Ардуино можно разными способами. Самый простой из них – подключить к плате пьезоизлучатель (или, как его ещё называют, «пьезопищалку»). Но как всегда, есть тут свои нюансы. В общем, давайте подключим к Arduino пьезопищалку и будем разбираться.

Нам понадобится:

Инструкция по подключению пьезоизлучателя к Arduino

1 Схема подключения пьезоизлучателяк Arduino

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

Пьезоизлучатель имеет 2 вывода, причём полярность имеет значение. Поэтому чёрный вывод подключаем к земле (GND), а красный – к любому цифровому пину с функцией ШИМ (PWM). В данном примере положительный вывод излучателя подключён к выводу "D3".

Схема подключения пьезоизлучателя к Arduino
Схема подключения пьезоизлучателя к Arduino и схема, собранная на макетной плате

2 Извлекаем звук из пьезоизлучателяс помощью функции analogWrite()

Пьезопищалку можно задействовать разными способами. Самый простой из них – это использовать функцию analogWrite(). Пример скетча – во врезке. Данный скетч попеременно включает и выключает звук с частотой 1 раз в 2 секунды.

/* Объявляем переменную с номером вывода, 
к которому подключён пьезоэлемент: */
int soundPin = 3; 

void setup() {
  // ставим пин "3" в режим работы "Выход":
  pinMode(soundPin, OUTPUT);
}

void loop() {
    analogWrite(soundPin, 50); // включаем пьезоизлучатель
    delay(1000);  // на 1000 мс (1 сек),
    analogWrite(soundPin, 0); // выключаем звук
    delay(1000); // на 1 сек.
}

Задаём номер пина, определяем его как выход. Функция analogWrite() принимает в качестве аргументов номер вывода и уровень, который может быть от 0 до 255, т.к. ШИМ-выводы Ардуино имеют 8-битный ЦАП. Это значение будет изменять громкость пьезопищалки в небольших пределах. Чтобы выключить пьезопищалку, нужно послать в порт значение "0".

Используя функцию analogWrite(), нельзя изменять тональность звука, к сожалению. Пьезоизлучатель всегда будет звучать на частоте примерно 980 Гц, что соответствует частоте работы выводов с широтно-импульсной модуляцией сигнала (ШИМ) на платах Arduino UNO и подобных.

3 Извлекаем звук из пьезоизлучателяс помощью функции tone()

Но частоту звучания можно менять по-другому. Для этого извлечём звук из пьезоизлучателя посредством встроенной функции tone(). Пример простейшего скетча приведён на врезке.

int soundPin = 3; /* объявляем переменную с номером пина, 
  на который мы подключили пьезоэлемент */
void setup() {
    pinMode(soundPin, OUTPUT); //объявляем пин 3 как выход.
    Serial.begin(9600); // будем выводить в порт текущую частоту
}

void loop() {
    for (int i=20; i<10000; i+=50) { // пройдёмся циклом по диапазону частот
      tone(soundPin, i);
      delay(100); 
      Serial.println(i);  
    }
    noTone(soundPin); // сделаем паузу 
    delay(1000); // в 1 сек 
}

Функция tone() принимает в качестве аргументов номер вывода Arduino и звуковую частоту. Нижний предел частоты – 31 Гц, верхний предел ограничен параметрами пьезоизлучателя и человеческого слуха. Чтобы выключить звук, посылаем в порт команду noTone().

А вот так будет выглядеть временная диаграмма сигнала, который генерирует функция tone(). Видно, что каждые 100 мс частота увеличивается, что мы и слышим:

Временная диаграмма сигнала функции tone()
Временная диаграмма сигнала функции tone()

Как видите, с помощью пьезоизлучателя из Ардуино можно извлекать звуки. Можно даже написать несложную музыкальную композицию, задав ноты соответствующими частотами, а также определив длительность звучания каждой ноты посредством функции delay().

Обратите внимание, что если к Ардуино подключены несколько пьезоизлучателей, то единовременно будет работать только один. Чтобы включить излучатель на другом выводе, нужно прервать звук на текущем, вызвав функцию noTone().

Важный момент: функция tone() накладывается на ШИМ сигнал на "3" и "11" выводах Arduino. Т.е., вызванная, например, для пина "5", функция tone() может мешать работе выводов "3" и "11". Имейте это в виду, когда будете проектировать свои устройства.

Демонстрация работы пьезоизлучателя и Arduino
Последнее изменениеСреда, 16 Январь 2019 20:37 Прочитано 58162 раз

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email

2 комментарии

  • Василий Пименов
    Василий Пименов 28.05.2018 17:00 Комментировать

    Ладно,
    А теперь я подключаю пьезоэлемент, и врубаю на него на 1 минуту звук с частотой 1.7 МГц
    потом минуту отдыхаем.

    int soundPin = 3; /* объявляем переменную с номером пина,
    на который мы подключили пьезоэлемент */
    void setup() {
    pinMode(soundPin, OUTPUT); //объявляем пин 3 как выход.
    }

    void loop() {
    tone(soundPin, 1700000); // включаем звук частотой 1,7 МГц
    delay(60000); // на 1мин
    noTone(soundPin); // выключаем звук
    delay(60000); // ждём 1 мин.
    }

    Странно, но ничего не происходит.
    Угу, оказыается пьезоэлементу нужно питание 24В, как с этим?

  • andy
    andy 28.06.2018 20:21 Комментировать

    Может, дело в том, что звук такой частоты человеческое ухо не воспринимает? Мы же слышим от 20 Гц до 20 кГц.

Оставить комментарий

  1. Arduino это...
  2. Arduino это...
  3. Arduino это...
Отличный способ начать знакомство с электроникой, микроконтроллерами и программированием!
Замечательное средство для создания собственных электронных устройств, которые пригодятся в быту или для развлечения!
Уникальный конструктор, для которого разработаны десятки совместимых датчиков и модулей!
next
prev