Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
13.05.2017, 09:34
|
|
Прописка
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
|
Цифровой метод определения разности фаз
Есть два синусоидальных сигнала (частота 600 Гц), отличающиеся друг от друга фазой, которая в процессе работы изменяется в пределах одного градуса. Необходимо с высокой точностью (не хуже 0,1%) определить эту величину.
Первоначально попытался решить задачу с момощью двух компараторов и логики, которая запускает счётчик TIM1 (контроллер STM32) на время пока одна полуволна выше нуля, а вторая ниже. Но, скорее всего из-за нестабильности компаратора (LM319), полученный результат отличается от данных, полученных импортным прототипом.
Искал какой-нибудь готовый фазовый дискриминатор аналоговых сигналов, но безрезультатно (есть много, но все они для цифровых сигналов), т.е. проблема будет той же - нужен хороший компаратор...
В ряде учебников по цифровой обработке сигналов встречал очень в сокращённом виде (3-4 предложения и в лучшем случае одна формула), что эту задачу можно решить при помощи БПФ. Но написать полноценную программу по этому материалу, во всяком случае я, не смогу.
Буду благодарен за любую помощь.
|
|
|
|
13.05.2017, 10:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,734
Сказал спасибо: 130
Сказали Спасибо 1,115 раз(а) в 530 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Компараторы тут не спасут. Малейший шум сигнала - и 0,1% уже не достижима. Либо набирать большую статистику и считать "среднюю температуру по больнице".
Как вариант решения - оцифровать несколько периодов с максимальным разрешением - обработка. Сглаживание и т.д.
|
|
|
|
13.05.2017, 10:54
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
но это - в идеальных условиях. шум в исходном сигнале внесет свою погрешность. RC-цепочки внесут погрешность в исходные фазы.
Ну и как в теме про УЗИ и коров - изначально ТС спрашивал, как измерить ток в многожильном кабеле, не разрывая его, а выяснилось, что надо было подходить совсем с другой стороны.
Хочется именно цифровым методом? Ладно, заводите оба сигнала на АЦП и с очень высокой скоростью оцифровывайте их. Шумы придется фильтровать. Затем складываете два сигнала, второй в противофазе, и должны получить разность, амплитуда разностного сигнала будет мерой фазового сдвига между сигналами
Последний раз редактировалось NewWriter; 13.05.2017 в 11:25.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
13.05.2017, 11:36
|
|
Прописка
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Сообщение от DanilinSA
|
Как вариант решения - оцифровать несколько периодов с максимальным разрешением - обработка.
|
Вот здесь и проблема, т.к. не могу найти более менее толковой методики, как после оцифровки "вытащить" значение фазы.
Сообщение от DanilinSA
|
Компараторы тут не спасут. Малейший шум сигнала - и 0,1% уже не достижима. Либо набирать большую статистику и считать "среднюю температуру по больнице".
|
Это на самый крайний вариант.
|
|
|
|
13.05.2017, 11:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,616
Сказал спасибо: 708
Сказали Спасибо 4,382 раз(а) в 2,007 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
NewWriter, - правильный подход, но можно проще.
Компаратором оцифровать, D-триггером сигналы /2 и складывать противофазные. Или XORить.
Выход хорошечно отфильтровать.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Последний раз редактировалось Kabron; 13.05.2017 в 11:55.
|
|
|
|
13.05.2017, 12:13
|
|
Прописка
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Сообщение от NewWriter
|
Хочется именно цифровым методом? Ладно, заводите оба сигнала на АЦП и с очень высокой скоростью оцифровывайте их. Шумы придется фильтровать. Затем складываете два сигнала, второй в противофазе, и должны получить разность, амплитуда разностного сигнала будет мерой фазового сдвига между сигналами
|
Спасибо, попробую. Но допустим:
Ф1: 0; 45; 90;
sin(Ф1): 0; 0,7071; 1;
Ф2: 1; 46; 91;
sin(Ф2): 0,0174; 0,7193; 0,9998;
abs(разн.): 0,0174; 0,0122; 0,0002;
В зависимости от угла меняется и разность. Здесь, скорее всего, по выборкам надо каким-то другим образом определять частоты и фазы.
На импортном прототипе на входе стоит 931 (скорее всего это MAX931), выход, которого связан с ПЛИС "Altera" (марки не видно). Есть ещё стереокодек CS4272D (он скорее всего формирует первую синусоиду 600 Гц). Плата многослойная и залита бакситкой, так что более подробно изучить её не удалось.
Последний раз редактировалось shyub; 13.05.2017 в 12:20.
|
|
|
|
13.05.2017, 12:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Если частота 600 Гц "плавает" точности также не будет. На таймер надо подавать 360х10х600=2,16 МГЦ (для точности +- 0.1). Возможно использовать два таймера, один считает период основного сигнала, другой сдвиг фазы. Таймеры поделить друг на друга и умножить на коэффициэнт пересчета. Тогда таймер 24-х разрядный.
__________________
Решил посоветовать, да забыл что...
|
|
|
|
13.05.2017, 12:44
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Сообщение от shyub
|
В зависимости от угла меняется и разность.
|
Правильно - картинку выше посмотрите, синусоида на выходе такая же будет, только с меньшей амплитудой, ее амплитуда будет равна разности фаз.
Но тут еще одна фишка - могут быть разные амплитуды двух сигналов. Причем, эта разница будет напрямую влиять на результат.
Посему, перед вычитанием, амплитуды исходных сигналов надо нормализовать, т.е. уравнять. Математически.
|
|
|
|
13.05.2017, 12:45
|
|
Прописка
Регистрация: 20.08.2008
Сообщений: 260
Сказал спасибо: 305
Сказали Спасибо 76 раз(а) в 42 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Сообщение от Kabron
|
Компаратором оцифровать, D-триггером сигналы /2 и складывать противофазные. Или XORить.
Выход хорошечно отфильтровать.
|
Я вас правильно понял, вы это имели ввиду?
Это уже делал, правде без триггеров, а на компараторах и логике. Результат счётчика суммировал за 10 периодов и делил на 20. Максимум, что удалось получить - это ошибку около 1%. А надо не хуже 0,1%.
|
|
|
|
13.05.2017, 12:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,616
Сказал спасибо: 708
Сказали Спасибо 4,382 раз(а) в 2,007 сообщении(ях)
|
Re: Цифровой метод определения разности фаз
Сообщение от shyub
|
Я вас правильно понял, вы это имели ввиду?
Вложение 114343
Это уже делал, правде без триггеров, а на компараторах и логике. Результат счётчика суммировал за 10 периодов и делил на 20. Максимум, что удалось получить - это ошибку около 1%. А надо не хуже 0,1%.
|
Правильно. Суммируйте за 100 периодов.
Можно просто фильтровать и мерять постоянную составляющую.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Последний раз редактировалось Kabron; 13.05.2017 в 12:52.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:01.
|
|