Как отделить сигнал определенной частоты от суммирования нескольких сигналов?
Я хочу рассчитать THD. ИТАК, как же мне изолировать основную частоту от сигнала с гармониками? У меня есть сигнал V, который представляет собой сумму V1, V2 и V3. V1=A1sin(w1t+phi1), V2=A2sin(w2t+phi2) и V3=A3sin(w3t+phi3). Я хочу узнать величину/амплитуду известной частоты w1 в сигнале. Как мне поступить? Должен ли я использовать библиотеку БПФ? Если да, то как?
@Krish Ambre, 👍2
Обсуждение1 ответ
Что именно вы пытаетесь сделать? Если вы хотите измерить THD по внешнему сигналу, Arduino, вероятно, не лучший выбор. В нем есть только 10-разрядные АЦП, и они подключены к постоянному току. Вы можете построить простую схему (https://www.daqarta.com/dw_rrll.htm) , чтобы переключить вход с переменным током на постоянный для Arduino, но у вас все равно будет только 10-битное разрешение. Я недостаточно глубоко заглянул в библиотеку, о которой упоминает Крисл, чтобы увидеть, насколько большой БПФ он может выполнять в ограниченной оперативной памяти Arduino, но я подозреваю, что спектральное разрешение будет настолько плохим, что будет бесполезно для измерений THD в реальном мире.
То, как вы описываете сигнал, заставляет меня думать, что это академическое упражнение, а не проблема реального мира. Если это так, вам не нужен Arduino или какое-либо другое оборудование, просто запустите FFT на своем главном компьютере. Если вам действительно нужно провести измерения в реальном мире, лучше всего использовать обычную звуковую карту на вашем компьютере. См. https://www.daqarta.com/dw_0d0t.htm для примера. Подход к звуковой карте имеет дополнительное преимущество в том, что он может генерировать тестовый сигнал с низким уровнем искажений для управления устройством, искажения которого вы пытаетесь измерить. Это позволяет "трюку" (в примере называемому "Блокировкой спектральной линии") получить еще лучшее разрешение, сделав тестовый сигнал синхронным с частотой дискретизации, поэтому вам не нужны оконные функции.
Если вы действительно хотите измерить THD с помощью Arduino, рассмотрите подход, используемый в том, что раньше называлось "анализатором волн". Структурная схема показана здесь: https://www.daqarta.com/dw_0h0p.htm. По сути, это анализатор с одной спектральной линией, который на самом деле может быть более избирательным, чем БПФ. Вы в основном умножаете входной сигнал на синус и косинус опорной частоты (основной), а затем исправляете и фильтруете результаты и объединяете по среднеквадратическому значению. Это дает вам фундаментальное значение (или любую отдельную гармонику, на которую вы настраиваете ссылку), поэтому для получения THD вы делите на среднеквадратическое значение общего входного сигнала.
Подход описываемого вами волнового анализатора называется “[обнаружение гомодины](https://en.wikipedia.org/wiki/Homodyne_detection)”. Он [может использоваться для анализа сигнала в режиме реального времени на Uno](http://arduinoprosto.ru/q/21175), если требования к частоте дискретизации и точности не слишком жесткие., @Edgar Bonet
- Использование MAX30100 для Arduino для чтения АЦП в формате (0-1023)
- Моторный щит L293D
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
Хотя на самом деле это не совсем специфично для Arduino: Да, я думаю, что вам нужно сделать БПФ на сигнале. Когда вы гуглите что-то вроде "Arduino FFT", вы получаете, например, [эту библиотеку](https://github.com/kosme/arduinoFFT). У него тоже есть примеры. Вы можете использовать его или запрограммировать БПФ самостоятельно. Это был бы чистый вопрос программирования на C/C++., @chrisl
Каковы значения частот ω₁/2π...? С какой точностью они известны? Постоянны ли они? Как долго длится сигнал? Достаточно ли она устойчива, чтобы вы могли измерять v₁, v₂ и v₃ последовательно, а не одновременно? С какой точностью вам нужно измерение THD?, @Edgar Bonet
@chrisl: Возможно, ему и не нужен БПФ. БПФ вычисляет амплитуду человеческих частот. Если оператору нужны только три частоты, то БПФ, скорее всего, будет излишним., @Edgar Bonet