Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/SimpleAudioFrequencyMeter

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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

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

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

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

Цепь

ArduinoZeroAudioInput bb.png

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

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

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

Схема

ArduinoZeroAudioInput schem.png

Код

  1. /*
  2.   Простой измеритель частоты для Arduino Zero
  3.  
  4.   Демонстрирует, как сэмплировать входной сигнал, чтобы получить
  5.   его частоту
  6.  
  7.   Этот код не защищен авторским правом.
  8.  
  9.   http://arduino.cc/en/Tutorial/SimpleAudioFrequencyMeter
  10.  
  11.   Создан Артуро Гуадалупи (Arturo Guadalupi; a.guadalupi@arduino.cc)
  12.   10 ноября 2015 года
  13. */
  14.  
  15. #include <AudioFrequencyMeter.h>
  16.  
  17. AudioFrequencyMeter meter;
  18.  
  19. void setup() {
  20.   // поместите здесь код, который будет запускаться лишь единожды:
  21.   Serial.begin(115200);
  22.   Serial.println("started");  //  "Работа скетча началась"
  23.  
  24.   meter.setBandwidth(70.00, 1500);    // игнорируем частоты за пределами этого диапазона
  25.   meter.begin(A0, 960000);             // инициализируем A0 c сэмплированием на 45 КГц
  26. }
  27.  
  28. void loop() {
  29.   // поместите здесь код, который будет запускаться раз за разом
  30.   float frequency = meter.getFrequency();
  31.   if (frequency > 0)
  32.   {
  33.     Serial.print(frequency);
  34.     Serial.println(" Hz");  //  " Гц"
  35.   }
  36. }

См.также

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

  1. Arduino.cc - SimpleAudioFrequencyMeter