Arduino:Примеры/SimpleAudioFrequencyMeter

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Простой измеритель звуковой частоты[1]

Этот пример показывает, как использовать библиотеку AudioFrequencyMeter для платы Arduino/Genuino Zero. В скетче будет измеряться частота сигнала на 0-ом аналоговом входном контакте, усиленного через специальную электронную цепь. Диапазон частот, которые в данный момент может «уловить» библиотека, составляет от 60 до 1500 Гц, и его можно сузить при помощи функции setBandwith(). Библиотеку AdioFrequencyMeter можно установить при помощи «Менеджера библиотек» в IDE Arduino.

Необходимое оборудование

  • Плата Arduino/Genuino Zero
  • Триммер-потенциометр на 10 кОм
  • Один усилитель – LMV386 или TLV2462
  • Два резистора на 100 кОм
  • Два резистора на 2,47 кОм
  • Конденсатор на 100 мкФ
  • 3,5-миллиметровый разъем

Цепь

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

За настройку звукоусилителя отвечает триммер-потенциометр на 10 кОм. Кроме того, динамика этого показателя будет отображаться в мониторе порта IDE Arduino: если данные о частоте, считываемые системой, «успокоились», это значит, что коэффициент усиления настроен правильно.

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

Схема

Код

/*
  Простой измеритель частоты для Arduino Zero

  Демонстрирует, как сэмплировать входной сигнал, чтобы получить
  его частоту 

  Этот код не защищен авторским правом.

  http://arduino.cc/en/Tutorial/SimpleAudioFrequencyMeter

  Создан Артуро Гуадалупи (Arturo Guadalupi; a.guadalupi@arduino.cc) 
  10 ноября 2015 года
*/

#include <AudioFrequencyMeter.h>

AudioFrequencyMeter meter;

void setup() {
  // поместите здесь код, который будет запускаться лишь единожды:
  Serial.begin(115200);
  Serial.println("started");  //  "Работа скетча началась"

  meter.setBandwidth(70.00, 1500);    // игнорируем частоты за пределами этого диапазона
  meter.begin(A0, 960000);             // инициализируем A0 c сэмплированием на 45 КГц
}

void loop() {
  // поместите здесь код, который будет запускаться раз за разом
  float frequency = meter.getFrequency();
  if (frequency > 0)
  {
    Serial.print(frequency);
    Serial.println(" Hz");  //  " Гц"
  }
}

См.также

Внешние ссылки