Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Измерение фазы.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
radioman1
Привет всем!

Есть желание построить прибор для измерения фазы между двумя сигналами. Оба сигнала частотой 1КГц. Реализуемо ли это с Atmega328? Можно ли это сделать только контроллером или нужна доп. периферия? Что то похожее нашел в http://www.isoi.in/Journal/Vol39-1/16th%20article.pdf.
alexvu
Напряжение, форма, шум, точность, внутр. сопротивление источников?
stells
Цитата(radioman1 @ May 3 2012, 13:29) *
Реализуемо ли это с Atmega328?

а хватит ли ног? biggrin.gif
Serhiy_UA
Цитата(radioman1 @ May 3 2012, 12:29) *
Реализуемо ли это с Atmega328? Можно ли это сделать только контроллером или нужна доп. периферия?

Только определитесь с точностью и темпом измерения. Если входные сигналы типа меандр, то один пример Вами уже приведен. Его можно еще упростить, для AVR с тактом в 20 МГц это не сложно.
Второй пример, уже с периферией: после элемента ИСКЛ.ИЛИ (а он формирует широтно- импульсный сигнал) ставьте аналоговый фильтр НЧ, и потом измеряйте уровень через АЦП, он пропорционален фазе.
Третий пример: Если сигналы синусоидальные (что не было указано), и темп измерений не высокий, то измерение в моменты 0 и 90 (270) градусов и алгоритм CORDIC.
=GM=
Цитата(radioman1 @ May 3 2012, 08:29) *
Есть желание построить прибор для измерения фазы между двумя сигналами. Оба сигнала частотой 1КГц. Реализуемо ли это с Atmega328? Можно ли это сделать только контроллером или нужна доп. периферия?

Ещё один вариант - преобразование Фурье обоих сигналов и вычисление фазы между двумя комлексными векторами. Вариант имеет преимущество в том, что не надо выравнивать амплитуды сигналов, ну и не нужна никакая периферия, достаточно голой атмеги.
radioman1
Цитата(Serhiy_UA @ May 3 2012, 13:47) *
Только определитесь с точностью и темпом измерения. Если входные сигналы типа меандр, то один пример Вами уже приведен. Его можно еще упростить, для AVR с тактом в 20 МГц это не сложно.
Второй пример, уже с периферией: после элемента ИСКЛ.ИЛИ (а он формирует широтно- импульсный сигнал) ставьте аналоговый фильтр НЧ, и потом измеряйте уровень через АЦП, он пропорционален фазе.
Третий пример: Если сигналы синусоидальные (что не было указано), и темп измерений не высокий, то измерение в моменты 0 и 90 (270) градусов и алгоритм CORDIC.

Желаемая точность 0.1 градуса при 3-4 измерения в секунду. С датчиков будет поступать синусоидальный сигнал из которого несложно сделать меандр. Идея с измерением амплитуды широтно-импульсного сигнала мне понравилась. Можноли с этим методом достич желаемой точности?

Цитата(=GM= @ May 3 2012, 16:04) *
Ещё один вариант - преобразование Фурье обоих сигналов и вычисление фазы между двумя комлексными векторами. Вариант имеет преимущество в том, что не надо выравнивать амплитуды сигналов, ну и не нужна никакая периферия, достаточно голой атмеги.

Не слишком ли сложно это будет. Задача стоит сделать как можно проще.
kovigor
Цитата(radioman1 @ May 3 2012, 18:42) *
Не слишком ли сложно это будет. Задача стоит сделать как можно проще.


Кстати, сразу же и проверить можно эту идею. Берем компьютер со звуковой картой и установленным MatLab'ом, книжку Сергиенко по ЦОС, оцифровываем оба сигнала и выполняем над ними ДПФ (или БПФ). Сами все и увидите ...
=GM=
БПФ лишнее, поскольку надо сделать ПФ в одной точке.
fox2trot
Цитата(radioman1 @ May 3 2012, 13:29) *
Привет всем!

А) Есть желание построить прибор для измерения фазы между двумя сигналами. Оба сигнала частотой 1КГц. Реализуемо ли это с Atmega328?
Б) Можно ли это сделать только контроллером или нужна доп. периферия?

А) Легко. Главное не заморачивать голову всякими сложностями типа БПФ, а просто вспомнить что такое разность фаз, о чем некоторые комментаторы тут явно забыли.
Б) Зависит от уровня сигнала, в любом случае, обвязка, если она потребуется, нужна будет только аналоговая.
Гы, в свое время делал подобное для 6 сигналов на чем то малокопытном и операционниках, правда там еще частота плавала т.е надо было сравнить частоту, а только после этого определять сдвиг фазы. В общем, особых трудностей задачка не представляла.
defunct
Цитата(=GM= @ May 3 2012, 16:04) *
Ещё один вариант - преобразование Фурье обоих сигналов и вычисление фазы между двумя комлексными векторами. Вариант имеет преимущество в том, что не надо выравнивать амплитуды сигналов, ну и не нужна никакая периферия, достаточно голой атмеги.

Делал так, точность и помехоустойчивость рулит - т.е. можно работать с очень паршивым сигналом (до 3-6dB SNR), но есть одно но
- мега точно не потянет в real-time 1kHz с точностью 0.1 градус и 3-4 измерений в секунду (не потянет даже раз в секунду).

Если сигнал у автора чистый - я бы обратился к более простым методам - преобразование в меандр обеих сигналов с последующим умножением одного на второй (логическое "И"). Для результирующего сигнала рассчитать отношение времени состояния "1" к времени состояния "0" (собсно это отношение будет равно K*амплитуда фильтрованного сигнала). Зависимость будет обратно-пропорциональная от 50% до 0% -> пропорционально 0..Pi.

0% времени умноженный сигнал в "1" - Фаза равна Pi.
25% времени умноженный сигнал в "1" - Фаза равна Pi/2.
50% времени умноженный сигнал в "1" - Фаза равна 0.

Для идеального сигнала минимальная (наихудшая) точность будет определяться отношением частоты измеряемого сигнала к частоте дискретизации (частоте на которой будет производиться захват произведения двух меандров).
stells
для разности фаз до 180 градусов - дифференциальный (инструментальный) усилитель и амплитудный детектор, 0,1 градуса (условно 250нс для сигнала 1кГц) чувствует уверенно:
Нажмите для просмотра прикрепленного файла
MaslovVG
Цитата(stells @ May 4 2012, 08:50) *
для разности фаз до 180 градусов - дифференциальный (инструментальный) усилитель и амплитудный детектор, 0,1 градуса (условно 250нс для сигнала 1кГц) чувствует уверенно:

Но только выходной сигнал есть функция амплитуд входных сигналов и нелинейная функция разности фаз (Sin(фаза)) входных сигналов.
PS. Это для случая если LT1102 не заходит в насыщение.
stells
Цитата(MaslovVG @ May 4 2012, 09:35) *
Но только выходной сигнал есть функция амплитуд входных сигналов и нелинейная функция разности фаз (Sin(фаза)) входных сигналов.

я так понял, что у сигналов меняется только фаза, а амплитуда постоянна? хотя согласен, постоянство это может быть условным, поплыть от температуры, а в результате погрешность измерения
Serhiy_UA
Цитата(radioman1 @ May 3 2012, 18:42) *
Желаемая точность 0.1 градуса при 3-4 измерения в секунду. С датчиков будет поступать синусоидальный сигнал из которого несложно сделать меандр.

Если амплитуды не стабильны, то советую CORDIC с рабочим словом в 16 бит. Очень удобен алгоритм Волдера, часто его использовал. Производительности на 4 измерения должно хватить. Периферии не будет, а только АЦП.
Уточните назначение измерителя, т.е. немного сведений о всей системе.
radioman1
Цитата(Serhiy_UA @ May 4 2012, 10:51) *
Уточните назначение измерителя, т.е. немного сведений о всей системе.

В общем, это должен быть портативный прибор для измерения импедансов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.