kumle 0 11 сентября, 2019 Опубликовано 11 сентября, 2019 · Жалоба Есть задача измерять фазу синусоиды с генератора в момент времени задаваемый с отметчика. В качестве отметчика беру сигнал 3.3v с той же самой частотой, но только c цифрового выхода этого же генератора Частоту сигнала вычисляю точно модулем захвата в микроконтроллере, получается в герцах два знака после запятой стоят стабильно Также Имеется отдельное АЦП которое всегда запущено и сэмплирует с частотой 5Кгц. По приходу фронта отметчика, я начинаю накапливать выборку 2048 сэмплов сигнала. Далее через сумму синусов и косинусов вычисляю действ. и мнимую часть сигнала и вычисляю фазу через atan2 Теперь самое интересное. Если подаю частоту 10 гц, то фаза считается правильно, стоит +/- 1 градус, при изменении фазы на генераторе тоже меняется ну ту же величину. Если подаю 100Гц, то уже фаза плавает +/-10 градусов. Это происходит отчасти из за того, что у меня есть задержка от прихода фронта отметчика, до прихода первого сэмпла с АЦП (ацп уже запущен ранее) Если частота оцифровки 5кгц, то максимальная задержка будет 200 мкс (время между сэмплами) Чтобы учесть эту задержку в расчете фазы, я делаю так: Я засекаю время прихода отметчика, затем засекаю время прихода первого сэмпла (сигнал DRDY c АЦП), затем разницу этих времен пересчитываю в градусы по формуле: Xg=(dt*360.0)/Tob dt - время в микросекундах от фронта отметчика до первого сэмпла, Tob - период синусоиды с генератора в микросекундах Затем из фазы полученной арктангенсом я вычитаю эту фазовую задержку Xg. Можно ли так делать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться