|
|
  |
Измерение частоты основной гармоники (50 Гц) с точностью 0.01 Гц |
|
|
|
Sep 16 2015, 08:08
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(blackfin @ Sep 16 2015, 10:28)  Эту задачу на форуме решали уже десятки раз.. См. например: И там ещё в окрестностях есть что почитать..  Спасибо!  В любом случае потребуется много экспериментов, чтобы понять, как измерять, какой метод применить.
|
|
|
|
|
Sep 21 2015, 06:30
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(EvgenyNik @ Sep 18 2015, 16:33)  Pridnya, если с частотой семплирования и разрешающей способностью всё понятно, то на каком минимально допустимом интервале времени (в периодах основной гармоники) Вы бы хотели измерить частоту? Хотелось бы измерять за 1, максимум за 5 периодов. Не знаю пока сколько достаточно и на сколько достоверно будет при большом интервале, а вдуруг там какое качание частоты, поэтому хотелось бы за один период.
|
|
|
|
|
Sep 21 2015, 09:36
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Делов то. Фурье на 8к. Самая яркая палка это она))). Если предварительно сузить полосу прикинув частоту и лисперсию с помощью какого-нибудь капчюр модуля МК. Можно сделать перенос на 0 вокруг, то можно понизить частоту дискретизации и Фурье станет менее требовательным к числу точек и скорости вычислений. Почитайте внимательно тему. Фурье 8192 вы собрались на мк сделать? На частоте дискретизации, обозначенной ТС'ом в 3200 Гц, 8192 точки это 2560 мс. 1 - 5 периодов 50 Гц сигнала это 20 - 100 мс.
|
|
|
|
|
Sep 21 2015, 13:59
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(Corner @ Sep 21 2015, 12:08)  Делов то. Фурье на 8к. Самая яркая палка это она))). Если предварительно сузить полосу прикинув частоту и лисперсию с помощью какого-нибудь капчюр модуля МК. Можно сделать перенос на 0 вокруг, то можно понизить частоту дискретизации и Фурье станет менее требовательным к числу точек и скорости вычислений. Накидайте ка на Си, а я код прогоню на ARM и оценим: а) реализуемость; б) время выполнения кода в целевом устройстве; в) глубину бездны знаний.
Сообщение отредактировал Pridnya - Sep 21 2015, 14:00
|
|
|
|
|
Sep 22 2015, 00:00
|
Знающий
   
Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768

|
Цитата(Pridnya @ Sep 21 2015, 16:59)  Накидайте ка на Си, а я код прогоню на ARM и оценим: а) реализуемость; б) время выполнения кода в целевом устройстве; в) глубину бездны знаний.  Сколько можно уже фигней страдать. Вот сюда посмотрите база сигнала А потом положите B=1, дельта F=0.01 и вычислите дельта t. Затем примите как данность, что Вы проектируете показометр и рассчитывайте значение частоты хоть по 3 точкам на период хоть до 10 знаков после запятой.
|
|
|
|
|
Sep 22 2015, 06:52
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(Tiro @ Sep 22 2015, 03:00)  Сколько можно уже фигней страдать. Вот сюда посмотрите база сигнала А потом положите B=1, дельта F=0.01 и вычислите дельта t. Затем примите как данность, что Вы проектируете показометр и рассчитывайте значение частоты хоть по 3 точкам на период хоть до 10 знаков после запятой. Δ t = B/Δf = 1/0.01 = 100 (секунд?). Не мойму, что-ли 100 секунд предлагается ждать?  Подобный метод уже предлагали (если на выходе биение 0,01 Гц, то частота 49,99 Гц).
|
|
|
|
|
Sep 22 2015, 06:57
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Pridnya @ Sep 21 2015, 09:30)  Хотелось бы измерять за 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 Гц. М- число периодов синусоиды.
|
|
|
|
|
Sep 22 2015, 07:11
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(Santik @ Sep 22 2015, 09:57)  Код М Погрешность, Гц 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 - Sep 22 2015, 07:16
|
|
|
|
|
Sep 22 2015, 07:51
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Pridnya @ Sep 22 2015, 10:11)  Не понятно, как вы получили результат (матлаб посчитал с помощью dll-ки или вы на С код написали)? Понимаю, что частота дискретизации для оцифровки звука. Хотелось бы попробовать ваш метод расчета на С или С++ при отклонении частоты.
Интервал 5 периодов сети 50 Гц - это 0,1 секунды. При частоте дискретизации 44100 Гц, получаем 4410 точек выборки на том интервале. А дальше что делать? Это скорее для иллюстрации, что на 5 периодах погрешность получится 0.25Гц, а вам надо 0.01 :-) Алгоритм сложный, в МК точно не поместится. Советую не заморачиваться, поставить 1-бит АЦП (0 - компаратор) и счётчик. На этом принципе все протонные магнитометры работают. (Погрешность 0.005 Гц, частота 2-3 кГц, время 1-2 сек)
|
|
|
|
|
Sep 22 2015, 08:11
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(Santik @ Sep 22 2015, 10:51)  Это скорее для иллюстрации, что на 5 периодах погрешность получится 0.25Гц, а вам надо 0.01 :-) Алгоритм сложный, в МК точно не поместится. Да мне хотя бы 0,25 Гц программно получить, а там я бы посмотрел что дальше делать. Все говорят "возьмите...", а вот сколько точек на каком интервале взять и как дальше, вот что главное. Хотя бы с пяти периодов начнем (сигнал на интервале 0,1 секунды). Частота выборки пока 3200 гц. Сколько точек БПФ брать на этом интервале? И правильно ли я понимаю, что я получу разрешение по частоте 10 Гц?  64точки*5периодов = 320 точек. 3200Гц/320 = 10 Гц. Так? Цитата(Santik @ Sep 22 2015, 10:51)  Советую не заморачиваться, поставить 1-бит АЦП (0 - компаратор) и счётчик. На этом принципе все протонные магнитометры работают. (Погрешность 0.005 Гц, частота 2-3 кГц, время 1-2 сек) У меня использовался компаратор, модуль захват-сравнение, можно вытащить 0,01 Гц, с той же звуковой карты компа подаю и вижу 49.00 Гц, 50,00 Гц...Но мне интересно, как это сделать программно (без матлабов и прочих коммерческих продуктов для настольконго компа) для микроконтроллера. Заодно и пойму, как получить высокое разрешение по частоте.
Сообщение отредактировал Pridnya - Sep 22 2015, 08:12
|
|
|
|
|
Sep 22 2015, 08:35
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Pridnya @ Sep 22 2015, 11:11)  64точки*5периодов = 320 точек. 3200Гц/320 = 10 Гц. Так? Да так. При данной частоте дискретизации и N=320 получится именно такое разрешение по частоте. Весьма наивно полагать, что проведя параболу через 3 точки, близкие к соответствующему максиммуму спектра, можно получить хорошее разрешение по частоте.
|
|
|
|
|
Sep 22 2015, 08:41
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 11-01-11
Из: Орел
Пользователь №: 62 159

|
Цитата(Santik @ Sep 22 2015, 11:35)  Да так. При данной частоте дискретизации и N=320 получится именно такое разрешение по частоте. Весьма наивно полагать, что проведя параболу через 3 точки, близкие к соответствующему максиммуму спектра, можно получить хорошее разрешение по частоте. Уже лучше, можно смоделировать: задать чистую синусоиду 50Гц на интервале 0,1 сек, а потом от этого интервала взять 1024-х точечное ДПФ для нескольких частот, близких к искомой, а там посмотреть какая кривая получится. А вот как считать? В смысле спектр будет симметричный относительно искомой частоты (чтобы парабола получилась), т.е. отрицательные и положительные частоты? Или от 0 до частоты выборки Fs. Библиотека CMSIS_DSP для ARM выдает результат от 0 до Fs, т.е. спектр симметричный относительно Fs/2.
Сообщение отредактировал Pridnya - Sep 22 2015, 08:42
|
|
|
|
|
Sep 22 2015, 08:57
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096

|
Цитата(Pridnya @ Sep 22 2015, 11:41)  Уже лучше, можно смоделировать: задать чистую синусоиду 50Гц на интервале 0,1 сек, а потом от этого интервала взять 1024-х точечное ДПФ для нескольких частот, близких к искомой, а там посмотреть какая кривая получится. А вот как считать? В смысле спектр будет симметричный относительно искомой частоты (чтобы парабола получилась), т.е. отрицательные и положительные частоты? Или от 0 до частоты выборки Fs. Библиотека CMSIS_DSP для ARM выдает результат от 0 до Fs, т.е. спектр симметричный относительно Fs/2. Можно сразу задать частоты 49,50,51 Гц и найти значения спектра на этих частотах. Потом провести параболу и найти её максимум. Это будет первое приближение по частоте. Затем взять +-0.5 Гц от найденой частоты, снова найти значения спектра и снова проводить параболу, находить ее максимум, делить интервал на 2 (т.е. до 0.25 Гц) и т.д. Такая вот итерационная процедура... Но это долго получится.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|