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

Измерение частоты основной гармоники (50 Гц) с точностью 0.01 Гц

Эту задачу на форуме решали уже десятки раз..

 

См. например:

 

И там ещё в окрестностях есть что почитать.. ;)

 

Спасибо! :rolleyes: В любом случае потребуется много экспериментов, чтобы понять, как измерять, какой метод применить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Pridnya, если с частотой семплирования и разрешающей способностью всё понятно, то на каком минимально допустимом интервале времени (в периодах основной гармоники) Вы бы хотели измерить частоту?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Pridnya, если с частотой семплирования и разрешающей способностью всё понятно, то на каком минимально допустимом интервале времени (в периодах основной гармоники) Вы бы хотели измерить частоту?

Хотелось бы измерять за 1, максимум за 5 периодов. Не знаю пока сколько достаточно и на сколько достоверно будет при большом интервале, а вдуруг там какое качание частоты, поэтому хотелось бы за один период.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делов то. Фурье на 8к. Самая яркая палка это она))). Если предварительно сузить полосу прикинув частоту и лисперсию с помощью какого-нибудь капчюр модуля МК. Можно сделать перенос на 0 вокруг, то можно понизить частоту дискретизации и Фурье станет менее требовательным к числу точек и скорости вычислений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делов то. Фурье на 8к. Самая яркая палка это она))). Если предварительно сузить полосу прикинув частоту и лисперсию с помощью какого-нибудь капчюр модуля МК. Можно сделать перенос на 0 вокруг, то можно понизить частоту дискретизации и Фурье станет менее требовательным к числу точек и скорости вычислений.

Почитайте внимательно тему.

Фурье 8192 вы собрались на мк сделать?

На частоте дискретизации, обозначенной ТС'ом в 3200 Гц, 8192 точки это 2560 мс. 1 - 5 периодов 50 Гц сигнала это 20 - 100 мс.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делов то. Фурье на 8к. Самая яркая палка это она))). Если предварительно сузить полосу прикинув частоту и лисперсию с помощью какого-нибудь капчюр модуля МК. Можно сделать перенос на 0 вокруг, то можно понизить частоту дискретизации и Фурье станет менее требовательным к числу точек и скорости вычислений.

Накидайте ка на Си, а я код прогоню на ARM и оценим:

а) реализуемость;

б) время выполнения кода в целевом устройстве;

в) глубину бездны знаний. :rolleyes:

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Накидайте ка на Си, а я код прогоню на ARM и оценим:

а) реализуемость;

б) время выполнения кода в целевом устройстве;

в) глубину бездны знаний. :rolleyes:

 

Сколько можно уже фигней страдать. Вот сюда посмотрите база сигнала

А потом положите B=1, дельта F=0.01 и вычислите дельта t. Затем примите как данность, что Вы проектируете показометр и рассчитывайте значение частоты хоть по 3 точкам на период хоть до 10 знаков после запятой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сколько можно уже фигней страдать. Вот сюда посмотрите база сигнала

А потом положите B=1, дельта F=0.01 и вычислите дельта t. Затем примите как данность, что Вы проектируете показометр и рассчитывайте значение частоты хоть по 3 точкам на период хоть до 10 знаков после запятой.

 

Δ t = B/Δf = 1/0.01 = 100 (секунд?). Не мойму, что-ли 100 секунд предлагается ждать? :wacko: Подобный метод уже предлагали (если на выходе биение 0,01 Гц, то частота 49,99 Гц).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотелось бы измерять за 1, максимум за 5 периодов. Не знаю пока сколько достаточно и на сколько достоверно будет при большом интервале, а вдуруг там какое качание частоты, поэтому хотелось бы за один период.

 

 

            М                  Погрешность, Гц
            1                               1
            3                               0.4
            5                               0.25
           10                              0.06
           15                              0.025
           20                              0.015
           30                              0.0065

 

Сигнал: синусоида f=50 Гц со случайной начальной фазой. fd=44100 Гц.

М- число периодов синусоиды.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

            М                  Погрешность, Гц
            1                               1
            3                               0.4
            5                               0.25
           10                              0.06
           15                              0.025
           20                              0.015
           30                              0.0065

 

Сигнал: синусоида f=50 Гц со случайной начальной фазой. fd=44100 Гц.

М- число периодов синусоиды.

Не понятно, как вы получили результат (матлаб посчитал с помощью dll-ки или вы на С код написали)? Понимаю, что частота дискретизации для оцифровки звука. Хотелось бы попробовать ваш метод расчета на С или С++ при отклонении частоты.

 

Интервал 5 периодов сети 50 Гц - это 0,1 секунды. При частоте дискретизации 44100 Гц, получаем 4410 точек выборки на том интервале. А дальше что делать?

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понятно, как вы получили результат (матлаб посчитал с помощью dll-ки или вы на С код написали)? Понимаю, что частота дискретизации для оцифровки звука. Хотелось бы попробовать ваш метод расчета на С или С++ при отклонении частоты.

 

Интервал 5 периодов сети 50 Гц - это 0,1 секунды. При частоте дискретизации 44100 Гц, получаем 4410 точек выборки на том интервале. А дальше что делать?

Это скорее для иллюстрации, что на 5 периодах погрешность получится 0.25Гц, а вам надо 0.01 :-)

Алгоритм сложный, в МК точно не поместится.

Советую не заморачиваться, поставить 1-бит АЦП (0 - компаратор) и счётчик.

На этом принципе все протонные магнитометры работают. (Погрешность 0.005 Гц, частота 2-3 кГц, время 1-2 сек)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это скорее для иллюстрации, что на 5 периодах погрешность получится 0.25Гц, а вам надо 0.01 :-)

Алгоритм сложный, в МК точно не поместится.

Да мне хотя бы 0,25 Гц программно получить, а там я бы посмотрел что дальше делать. Все говорят "возьмите...", а вот сколько точек на каком интервале взять и как дальше, вот что главное.

Хотя бы с пяти периодов начнем (сигнал на интервале 0,1 секунды). Частота выборки пока 3200 гц. Сколько точек БПФ брать на этом интервале?

И правильно ли я понимаю, что я получу разрешение по частоте 10 Гц? :wacko: 64точки*5периодов = 320 точек. 3200Гц/320 = 10 Гц. Так?

 

Советую не заморачиваться, поставить 1-бит АЦП (0 - компаратор) и счётчик.

На этом принципе все протонные магнитометры работают. (Погрешность 0.005 Гц, частота 2-3 кГц, время 1-2 сек)

У меня использовался компаратор, модуль захват-сравнение, можно вытащить 0,01 Гц, с той же звуковой карты компа подаю и вижу 49.00 Гц, 50,00 Гц...Но мне интересно, как это сделать программно (без матлабов и прочих коммерческих продуктов для настольконго компа) для микроконтроллера.

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

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

64точки*5периодов = 320 точек. 3200Гц/320 = 10 Гц. Так?

Да так. При данной частоте дискретизации и N=320 получится именно такое разрешение по частоте.

Весьма наивно полагать, что проведя параболу через 3 точки, близкие к соответствующему максиммуму спектра, можно получить хорошее разрешение по частоте.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да так. При данной частоте дискретизации и N=320 получится именно такое разрешение по частоте.

Весьма наивно полагать, что проведя параболу через 3 точки, близкие к соответствующему максиммуму спектра, можно получить хорошее разрешение по частоте.

Уже лучше, можно смоделировать: задать чистую синусоиду 50Гц на интервале 0,1 сек, а потом от этого интервала взять 1024-х точечное ДПФ для нескольких частот, близких к искомой, а там посмотреть какая кривая получится.

 

А вот как считать? В смысле спектр будет симметричный относительно искомой частоты (чтобы парабола получилась), т.е. отрицательные и положительные частоты? Или от 0 до частоты выборки Fs.

 

Библиотека CMSIS_DSP для ARM выдает результат от 0 до Fs, т.е. спектр симметричный относительно Fs/2.

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже лучше, можно смоделировать: задать чистую синусоиду 50Гц на интервале 0,1 сек, а потом от этого интервала взять 1024-х точечное ДПФ для нескольких частот, близких к искомой, а там посмотреть какая кривая получится.

А вот как считать? В смысле спектр будет симметричный относительно искомой частоты (чтобы парабола получилась), т.е. отрицательные и положительные частоты? Или от 0 до частоты выборки Fs.

Библиотека CMSIS_DSP для ARM выдает результат от 0 до Fs, т.е. спектр симметричный относительно Fs/2.

Можно сразу задать частоты 49,50,51 Гц и найти значения спектра на этих частотах. Потом провести параболу и найти её максимум. Это будет первое приближение по частоте. Затем взять +-0.5 Гц от найденой частоты, снова найти значения спектра и снова проводить параболу, находить ее максимум, делить интервал на 2 (т.е. до 0.25 Гц) и т.д. Такая вот итерационная процедура... Но это долго получится.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...