[an error occurred while processing this directive]
|
Ну вот, повторяю (по просьбе трудящихся(:-) программеров) исходный пост. Опечатки поправлены, спасибо ВН.
Как я уже говорил, хочу освоить для себя новый способ измерения (или оценки, если хотите) частоты синусоидального сигнала.
Метод сам по себе достаточно простой и заключается в вычислении и последующем усреднении мгновенной частоты квадратурного сигнала.
По определению мгновенная частота сигнала есть производная по времени от полной фазы сигнала, т.е.
Wm=dФ/dt (1)
Для квадратурного сигнала (q(t),i(t)) фазу можно представить в виде
Ф(t)=arctg(q(t)/i(t)) (2)
Перейдя к конечным разностям, получим
Wm~=(Ф(t(n+1))-Ф(t(n)))/(t(n+1)-t(n))=(Ф(n+1)-Ф(n))/ts= (3)
=(arctg(q(n+1)/i(n+1))-arctg(q(n)/i(n)))/ts,
здесь ts=1/fs, а fs - частота выборок.
Таким образом неизвестная частота синусоидального сигнала может быть выражена как
fx=(arctg(q(n+1)/i(n+1))-arctg(q(n)/i(n)))*fs/(2*pi) (4)
Все формулы хорошо известны и их можно найти в разных книжках.
Формула (4) хорошо работает в идеальных условиях без шумов, хотя в нашей реальной схеме мне удалось измерить частоту 1000кГц с точностью примерно 1 кГц (70 выборок ~17 мкс, fs=4,16666(6)МГц, примерно 4 выборки на период).
К сожалению, приходится вычислять арктангенс. Я попытался избавиться от вычисления арктангенса, аналитически взяв производную от формулы (2) и затем перейдя к конечным разностям
dФ(t)/dt=1/(1+(q/i)^2)*(i*dq/dt-q*di/dt)/i^2= (5)
=(i*dq/dt-q*di/dt)/(q^2+i^2)
Отсюда искомая частота
fx=(i(n+1)*(q(n+1)-q(n))-q(n)*(i(n+1)-i(n)))/
(q^2+i^2)*ts/(2*pi) (6)
Полученная формула (6) не работает при заданном числе выборок на период, вернее она работает, но с неприемлемой точностью, и это мягко говоря...
Поэтому-то я и спрашивал недавно на форуме, как можно быстро посчитать арктангенс с достаточной для практики точностью.
Ну вот, я все рассказал, что знал, приглашаю желающих обсудить данный метод и пути практической реализации, возможно, коллективный разум найдет или, по крайней мере, наметит пути решения.
Спасибо всем, принявшим участие в обсуждении.
E-mail: info@telesys.ru