Оглавление:

Arduino: преобразование частоты (ДПФ): 6 шагов
Arduino: преобразование частоты (ДПФ): 6 шагов

Видео: Arduino: преобразование частоты (ДПФ): 6 шагов

Видео: Arduino: преобразование частоты (ДПФ): 6 шагов
Видео: Преобразования #6: дискретное преобразование Фурье 2024, Июль
Anonim
Arduino: преобразование частоты (ДПФ)
Arduino: преобразование частоты (ДПФ)

Эта программа предназначена для вычисления частотного преобразования на Arduino с контролем над параметрами. это решается с использованием преобразования Фурье по осквернению.

это не БПФ

БПФ - это алгоритм, используемый для решения ДПФ за меньшее время.

Код для БПФ можно найти здесь.

Шаг 1: Как это работает (концепция):

Как это работает (концепция)
Как это работает (концепция)
Как это работает (концепция)
Как это работает (концепция)

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

  • На рисунке дан набор данных, состоящий из двух частот с именами f2 и f5, которые необходимо протестировать. f2 и f5 - случайные имена для двух частот, большее число - для относительно более высокой частоты. здесь меньшая частота f2 имеет большую амплитуду, а f5 имеет меньшую амплитуду.
  • Математически можно показать, что -сумма умножения двух наборов данных гармоник, имеющих разную частоту, стремится к нулю (большее количество данных может привести к результату теста). В нашем случае, если эти две частоты умножения имеют одинаковую (или очень близкую) частоту, сумма умножения является ненулевым числом, где амплитуда зависит от амплитуды данных.
  • для обнаружения конкретной частоты данный набор данных может быть умножен на различные тестовые частоты, и результат может дать компонент этой частоты в данных.

Шаг 2: Как это работает (в коде):

Как это работает (в коде)
Как это работает (в коде)
Как это работает (в коде)
Как это работает (в коде)

для этих данных (f2 + f5) один за другим от f1 до f6 умножается, и значение суммы записывается. эта окончательная сумма представляет собой содержание этой частоты. остаточная (несовпадение) частоты в идеале должна быть равна нулю, но в реальном случае это невозможно. чтобы сумма была равна нулю, требуется иметь бесконечный размер наборов данных.

  • как показано на рисунках с f1 по f6, показана пробная частота и ее умножение на набор данных в каждой точке.
  • на втором рисунке показано суммирование этого умножения на каждой частоте. можно идентифицировать два пика на 1 и 5.

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

Шаг 3: Использование кода для частотного анализа:

Использование кода для частотного анализа
Использование кода для частотного анализа

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

сначала вставьте прикрепленный код (функция dft) после цикла, как показано на рисунке

8 УСЛОВИЙ, КОТОРЫЕ НЕОБХОДИМО УКАЗАТЬ

  1. массив, из которого нужно взять dft
  2. размер массива
  3. интервал времени между 2 чтениями в массиве в миллисекундах
  4. нижнее значение диапазона частот в Гц
  5. верхнее значение частотного диапазона в Гц
  6. размер шагов для частотного диапазона
  7. повторение сигнала (минимум 1) более высокая точность теста числа, но увеличенное время решения
  8. оконная функция:

    0 для окна без окна 1 для окна с плоским верхом 2 для окна hann 3 для окна Hamming

(если вы не знаете, как выбрать окно, оставьте значение по умолчанию 3)

пример: dft (a, 8, 0.5, 0, 30, 0.5, 10, 3); здесь a - это массив элементов размера 8, который необходимо проверить на диапазон от 0 Гц до 30 Гц с шагом 0,5 (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 повторений и окна Хэмминга

здесь можно использовать массив большего размера, насколько может обрабатывать Arduino.

Шаг 4: Вывод:

Выход
Выход
Выход
Выход

если вы закомментируете

Serial.print (f); Serial.print ("\ t"); Серийный принт ("\ t");

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

Шаг 5: Проверка различных размеров окна и выборки:

Проверка различных размеров окон и образцов
Проверка различных размеров окон и образцов

На рисунке частота синусоидальной волны измерена с использованием различных настроек.

Шаг 6: Пример:

Пример
Пример

на рисунке сравнивается преобразование данных с использованием SciLab и arduino.

Рекомендуемые: