|
|
  |
Измерение фазы. |
|
|
|
May 3 2012, 09:29
|
Группа: Новичок
Сообщений: 5
Регистрация: 3-05-12
Пользователь №: 71 680

|
Привет всем! Есть желание построить прибор для измерения фазы между двумя сигналами. Оба сигнала частотой 1КГц. Реализуемо ли это с Atmega328? Можно ли это сделать только контроллером или нужна доп. периферия? Что то похожее нашел в http://www.isoi.in/Journal/Vol39-1/16th%20article.pdf.
|
|
|
|
|
May 3 2012, 11:47
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

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

|
Цитата(Serhiy_UA @ May 3 2012, 13:47)  Только определитесь с точностью и темпом измерения. Если входные сигналы типа меандр, то один пример Вами уже приведен. Его можно еще упростить, для AVR с тактом в 20 МГц это не сложно. Второй пример, уже с периферией: после элемента ИСКЛ.ИЛИ (а он формирует широтно- импульсный сигнал) ставьте аналоговый фильтр НЧ, и потом измеряйте уровень через АЦП, он пропорционален фазе. Третий пример: Если сигналы синусоидальные (что не было указано), и темп измерений не высокий, то измерение в моменты 0 и 90 (270) градусов и алгоритм CORDIC. Желаемая точность 0.1 градуса при 3-4 измерения в секунду. С датчиков будет поступать синусоидальный сигнал из которого несложно сделать меандр. Идея с измерением амплитуды широтно-импульсного сигнала мне понравилась. Можноли с этим методом достич желаемой точности? Цитата(=GM= @ May 3 2012, 16:04)  Ещё один вариант - преобразование Фурье обоих сигналов и вычисление фазы между двумя комлексными векторами. Вариант имеет преимущество в том, что не надо выравнивать амплитуды сигналов, ну и не нужна никакая периферия, достаточно голой атмеги. Не слишком ли сложно это будет. Задача стоит сделать как можно проще.
|
|
|
|
|
May 3 2012, 20:02
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 22-09-07
Из: Орел
Пользователь №: 30 754

|
Цитата(radioman1 @ May 3 2012, 13:29)  Привет всем!
А) Есть желание построить прибор для измерения фазы между двумя сигналами. Оба сигнала частотой 1КГц. Реализуемо ли это с Atmega328? Б) Можно ли это сделать только контроллером или нужна доп. периферия? А) Легко. Главное не заморачивать голову всякими сложностями типа БПФ, а просто вспомнить что такое разность фаз, о чем некоторые комментаторы тут явно забыли. Б) Зависит от уровня сигнала, в любом случае, обвязка, если она потребуется, нужна будет только аналоговая. Гы, в свое время делал подобное для 6 сигналов на чем то малокопытном и операционниках, правда там еще частота плавала т.е надо было сравнить частоту, а только после этого определять сдвиг фазы. В общем, особых трудностей задачка не представляла.
|
|
|
|
|
May 4 2012, 01:05
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=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. Для идеального сигнала минимальная (наихудшая) точность будет определяться отношением частоты измеряемого сигнала к частоте дискретизации (частоте на которой будет производиться захват произведения двух меандров).
|
|
|
|
|
May 4 2012, 08:51
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(radioman1 @ May 3 2012, 18:42)  Желаемая точность 0.1 градуса при 3-4 измерения в секунду. С датчиков будет поступать синусоидальный сигнал из которого несложно сделать меандр. Если амплитуды не стабильны, то советую CORDIC с рабочим словом в 16 бит. Очень удобен алгоритм Волдера, часто его использовал. Производительности на 4 измерения должно хватить. Периферии не будет, а только АЦП. Уточните назначение измерителя, т.е. немного сведений о всей системе.
|
|
|
|
|
May 4 2012, 09:52
|
Группа: Новичок
Сообщений: 5
Регистрация: 3-05-12
Пользователь №: 71 680

|
Цитата(Serhiy_UA @ May 4 2012, 10:51)  Уточните назначение измерителя, т.е. немного сведений о всей системе. В общем, это должен быть портативный прибор для измерения импедансов.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|