Перейти к содержанию

Лабораторная работа 4. пьезодинамик

Цель работы:

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

Теоретическая часть

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

Рисунок 4.1. Внешний вид пьезодинамика и его изображение на схеме

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

Характеристиками пьезодинамика являются:

  1. Номинальное напряжение, VF [В]
  2. Громкость, P [дБ] (ДециБелл)
  3. Пиковая частота, fP [Гц] (Герц)
  4. Ёмкость, С [Ф] (Фарад)

Практическая часть

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

Функция генерации прямоугольной волны заданной частоты tone().

Описание:

Данная функция генерирует на порту вход / выход прямоугольную волну, заданной частоты с 50% рабочим циклом. К порту подключается пьезо или другой динамик для воспроизведения сигнала.

Воспроизводиться одновременно может только один сигнал. При повторном вызове tone() с тем же номером порта будет устанавливаться новая частота сигнала.

Синтаксис:

tone ( pin, frequency ) либо tone ( pin, frequency, duration )

Параметры:

pin - номер пина,

frequency - частота сигнала [Гц],

duration – длительность сигнала [мс] (может быть не задана, в этом случае сигнал будет генерироваться, пока не будет вызвана функция noTone),

Функция пропорционального переноса - map( ).

Описание:

Функция пропорционально переносит значение value из текущего диапазона значений (fromLow, fromHigh) в новый диапазон (toLow, toHigh), заданный параметрами. Функция map() оперирует целыми числами. При пропорциональном переносе дробная часть числа не округляется по правилам, а просто отбрасывается.

Синтаксис:

map ( value, fromLow, fromHigh, toLow, toHigh )

Параметры:

value - значение для переноса,

fromLow - нижняя граница текущего диапазона, fromHigh – верхняя граница текущего диапазона,

toLow - нижняя граница нового диапазона, в который переносится значение,

toHigh - верхняя граница нового диапазона, в который переносится значение.

Функция возвращает значение в новом диапазоне.

Схема подключения:

При выполнении данной лабораторной работы используется следующая схема подключения (Рисунок 4.2). Для реализации проекта потребуются следующие компоненты: макетная плата, потенциометр (1 шт), пьезодинамик (1 шт) и провода.

Рисунок 4.2. Схема подключения

После сборки схема имеет следующий вид (Рисунок 4.3): Рисунок 4.3. Внешний вид схемы после сборки

Рабочая программа:

// Объявление переменной led_pin и pot_pin, пин светодиода
// и потенциометра соответственно,
// запись значения номера для каждого пина 

int buzzer_pin = 12;

int pot_pin = A0; void setup()

{
// Настройка пина динамика на режим выхода. 
pinMode ( buzzer_pin, OUTPUT );

// Уже изначально все пины настроены на вход, поэтому на вход

// пин потенциометра можно не настраивать.

}

void loop()

{

// Объявление местных переменных rotation (поворот) и
// frequency (частота). int rotation, frequency;
// Считывание в rotation значения напряжения с потенциометра,
// пропорционально углу поворота ручки, запись в rotation
// значения от 0 до 1023

rotation = analogRead ( pot_pin );

// Расчет частоты звучания динамика функцией map. 

frequency = map ( rotation, 0, 1023, 3500, 4500 );

// Выдача пином звука на частоте, равной значению,
// находящемусяя в frequency 20 мс. При следующих loop tone будет
// вызван
// снова, поэтому будет выдан непрерывный писк определенной
// частоты

tone ( buzzer_pin, frequency, 20 );

}

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

Схема подключения:

К данной рабочей программе используется следующая схема под- ключения (Рисунок 4.4). Для реализации проекта потребуются следую- щие компоненты: макетная плата, пьезодинамик (1 шт) и провода.

Рисунок 4.4. Схема подключения

После сборки схема имеет следующий вид (Рисунок 4.5):

Рисунок 4.5. Внешний вид схемы после сборки

Рабочая программа:

// Объявление переменной led_pin и pot_pin, пин светодиода
// и потенциометра соответственно,
// запись значения номера для каждого пина 

int buzzer_pin = 12;

int pot_pin = A10; 

void setup(){
// Настройка пин динамика на режим выхода.
pinMode ( buzzer_pin, OUTPUT );

// Уже изначально все пины настроены на вход, поэтому на вход
// пин потенциометра можно не настраивать.

}

void loop()

{

// Объявление местных переменных rotation (поворот)
// и frequency (частота). int rotation, frequency
// Считывание в rotation значения напряжения с потенциометра
// пропорционально углу поворота ручки, в rotation запишется
// значение от 0 до 1023 

rotation = analogRead ( pot_pin );

// Расчет частоты звучания динамика функцией map. 

frequency = map ( rotation, 0, 1023, 3500, 4500 );

// Выдача пином звука на частоте, равной значению,
// находящемусяя в frequency 20 мс. При следующих loop tone будет
// вызван
// снова, поэтому будет выдан непрерывный писк определенной
// частоты

tone ( buzzer_pin, frequency, 20 );

}

Список контрольных вопросов:

  1. Каким образом пьезодинамик выдаёт звук?
  2. Как изображается пьезодинамик на электрической схеме?
  3. От чего зависит частота звучания пьезодинамика?
  4. Как можно регулировать громкость звучания пьезодинамика?
  5. В чём измеряется громкость звука?
  6. Как называется максимальная частота, которую может выдать пьезоди- намик? В чём она измеряется?
  7. Как работает функция tone?
  8. Какую скважность имеет подаваемая функцией tone волна?
  9. Сколько сигналов может одновременно воспроизводиться функцией tone?
  10. Какие параметры имеет функция tone?
  11. Для чего нужна команда noTone?
  12. Как работает функция map?
  13. Какие параметры имеет функция map?
  14. Какое значение возвращает функция map?

Список дополнительных задач:

  1. Изменить программу так, чтобы регулировать звучание можно было программно.
  2. Изменить диапазон частоты выдаваемого звука.
  3. Поменять направление увеличения частоты звука пьезодинамика на потенциометре.
  4. Изменить программу и использовать в ней функцию noTone.

Center-nav

← Назад | Оглавление | Вперёд →