Jump to content

    
Sign in to follow this  
ernipat

Разработка управляемого адаптивного цифрового фазовращателя

Recommended Posts

Приветствую всех!

Пишу диплом по теме, техническое задание предварительно такое:
 

  1.    Тип входного сигнала – однополярный меандр
  2.    Уровни входного сигнала 0 - +5В
  3.    Диапазон частот входного сигнала 0.1 – 10 КГц
  4.    Диапазон управления фазовым сдвигом – 0,5 – 360 градусов
  5.    Шаг регулировки фазового сдвига – 0,5 градуса
  6.    Фазовый сдвиг должен сохраняться при изменении частоты входного сигнала с погрешностью не более 0,5 градуса.

Вопросы такие:
Насколько проблемно спроектировать такое устройство и каких подводных камней надо опасаться?
Какую литературу/электронные ресурсы посоветуете, чтобы вникнуть в суть темы? По фазовращателям толком ничего найти не могу.
Возможно ли исполнение устройства с заданными характеристиками на базе микроконтроллера? Если да, то какого? И где про это можно почитать?

Руководитель предоставил часть своих материалов, но из за отсутствия некоторых знаний в области толком ничего не понятно.

Share this post


Link to post
Share on other sites

Не вижу диплома. Максимум лабораторка на час. Входной триггер(компаратор) - цифровая задержка с дискретом например 10нс. - выходной формирователь.
Соответственно сдвиг на 10 кГц  на 10нс эквивалентен  0,036 градусам. На меньших частотах ещё круче.

Share this post


Link to post
Share on other sites
5 минут назад, MegaVolt сказал:

Не вижу диплома. Максимум лабораторка на час. Входной триггер(компаратор) - цифровая задержка с дискретом например 10нс. - выходной формирователь.
Соответственно сдвиг на 10 кГц  на 10нс эквивалентен  0,036 градусам. На меньших частотах ещё круче.

Не совсем понял о чем Вы. Возможно потому что я плохо описал суть устройства.

Во многих источниках мне встречались фазовращатели с фиксированной длиной фазового сдвига на одной частоте.
Адаптивность проектируемого устройства заключается в сохранении заданного фазового сдвига при изменении частоты входного сигнала.
Управляемость же заключается в возможности изменения длины самой задержки (фазовым сдвигом).

Share this post


Link to post
Share on other sites

Да вроде ничего не меняется. Измеряем длительность предыдущего периода. Домножаем его на заданный сдвиг. Выставляем этот сдвиг у задержки. И так каждый такт. 

Share this post


Link to post
Share on other sites
4 часа назад, ernipat сказал:

на базе микроконтроллера? Если да, то какого?

Любого, у которого есть защёлки и компараторы таймеров (capture compare module), а это сейчас практически каждый первый.

 

Исходный сигнал подаётся на вход защёлки такого узла и каждый период микроконтроллер будет получать прерывание, читать из регистра полученную привязку сигнала к таймеру, прибавлять к ней нужную фазу и записывать в регистр компаратора этого же узла этого же таймера, который будет выдавать выходной сигнал — в общем, программа на десяток строк.

Share this post


Link to post
Share on other sites
В 05.04.2019 в 21:54, Plain сказал:

Любого, у которого есть защёлки и компараторы таймеров (capture compare module), а это сейчас практически каждый первый.

 

Исходный сигнал подаётся на вход защёлки такого узла и каждый период микроконтроллер будет получать прерывание, читать из регистра полученную привязку сигнала к таймеру, прибавлять к ней нужную фазу и записывать в регистр компаратора этого же узла этого же таймера, который будет выдавать выходной сигнал — в общем, программа на десяток строк.

Не могли бы Вы, пожалуйста, подробнее расписать вашу идею? 

Какая защёлка имеется в виду? И зачем использовать компаратор? Что мы должны сравнивать?

Не кидайтесь тапками, пожалуйста, никогда не работал с МК.

Share this post


Link to post
Share on other sites
On 4/5/2019 at 9:54 PM, Plain said:

Любого, у которого есть защёлки и компараторы таймеров (capture compare module), а это сейчас практически каждый первый. . . 

Если буквально - точность 0.5 градуса, надо смотреть как оно соотносится с минимальной-максимальной частотами и входной таймерной частотой, разрядностью тамер(ов). Хотя как для учебной задачи - вполне достаточно будет "удержания" сдвига фазы на разной частоте.

ps

1. Постоянно измеряете период входных импульсов, в идеале - на каждый период должно быть 2 замера периода (фронт-фронт и спад-спад)

2. Исходя из последнего замера периода, пересчитываете заданную в градусах фазовую задержку в такты таймера.

3. Выполняете задержку следующего фронта или спада на вычисленное в (2) кол-во тактов.

Опятьже, если задача учебная - читайте САМИ док на контроллеры, их таймеры. Контроллер - мимнимум 16-разрядный вроде MSP430F5438, с несколькими (нормальными) таймерами и несколькими CCR  Compare-Capture-Registr. Еще лучше - 32 разр. ARM.

На MSP430 есть компеловские книжки с док-ей по MSP430 на русском языке. (переводы Ti)

Share this post


Link to post
Share on other sites

Для начала следует понять, корректно ли говорить о фазовращателе применительно к цифровому сигналу. Думаю, "цифровым фазовращателем" можно было бы назвать обычный фазовращатель гармонического сигнала с цифровым управлением. А в данном случае речь идёт о задержке меандра на некоторую величину, прямо пропорциональную периоду. Коэффициент пропорциональности задаётся внешне, это и есть "управление".

Поэтому ищите литературу не по фазовращателям, а по цифровой электронике.

On 4/5/2019 at 5:31 PM, ernipat said:

Руководитель предоставил часть своих материалов, но из за отсутствия некоторых знаний в области толком ничего не понятно.

Так Вы не ждите, пока Вам тут разжуют всё и дадут готовое решение, а покажите что Вам понятно, а что - непонятно. А то создаётся впечатление, "отсутствие некоторых знаний в области" - это их полное отсутствие.

Share this post


Link to post
Share on other sites
2 часа назад, k155la3 сказал:

0.5 градуса, надо смотреть как оно соотносится с минимальной-максимальной частотами и входной таймерной частотой, разрядностью тамер(ов)

3 · 10 кГц · 360° / 0,5° = 21,6 МГц минимум для тактовой таймера, а его разрядность элементарно наращивается программно.

Share this post


Link to post
Share on other sites
2 часа назад, Herz сказал:

Для начала следует понять, корректно ли говорить о фазовращателе применительно к цифровому сигналу. Думаю, "цифровым фазовращателем" можно было бы назвать обычный фазовращатель гармонического сигнала с цифровым управлением. А в данном случае речь идёт о задержке меандра на некоторую величину, прямо пропорциональную периоду. Коэффициент пропорциональности задаётся внешне, это и есть "управление".

Поэтому ищите литературу не по фазовращателям, а по цифровой электронике.

Так Вы не ждите, пока Вам тут разжуют всё и дадут готовое решение, а покажите что Вам понятно, а что - непонятно. А то создаётся впечатление, "отсутствие некоторых знаний в области" - это их полное отсутствие.

В принципе, по поводу "управления" Вы все верно подметили.
Фазовращатель является цифровым, так как по задумке он должен работать только с цифровым (двухуровневым) сигналом. На вход такого устройства достаточно поставить АЦП чтоб из гармоники получить меандр.
Само устройство, предполагается, что будет состоять из управляемой цифровой линии задержки, в качестве которой можно использовать стек FIFO. Входной сигнал (меандр) должен подаваться на информационный вход УЛЗ, и так же на вход тактирования, но перед тем, как попасть на вход тактирования, сигнал должен пройти через умножитель частоты. Это сделано для того, чтобы сохранить соотношение частоты входного сигнала и частоты сигнала тактирования, чтобы фазовый сдвиг сохранился прежним. В этом и заключается свойство адаптивности.
В качестве умножителя частоты предполагается использование ФАПЧ. На данный момент непонятно какой ФАПЧ ставить, т.к. к ФАПЧу надо прикрутить еще делитель частоты коэффициент которого варируется от 1 до 720.

Share this post


Link to post
Share on other sites

Функциональна схема облегчила бы жизнь и сэкономила бы время всем. Ваш вариант.

ps делать FIFO для 2-уровневого цифрового сигнала - зачем ? Тем более на 1 (?) период ? Для аналогового - обосновано (храним форму). 

Share this post


Link to post
Share on other sites
__interrupt void TIMER_CAPTURE_IRQ(){
  half_period += ((TIMER_CAPTURE - capture_prev) - half_period) / K;
  timer_fifo.push(TIMER_CAPTURE + half_period * phase_shift);
  capture_prev = TIMER_CAPTURE;
}

__interrupt void TIMER_COMPARE_IRQ(){
  TIMER_COMPARE = timer_fifo.pop();
}

как-то так примерно, ну ещё полярности (положительный/отрицательный фронт) можно проверять и конфигурировать соответственно compare выход таймера.

и какое-то fifo, хотя бы на два элемента всё равно понадобится, так как сдвиг может быть больше 180 градусов.

Share this post


Link to post
Share on other sites
В 26.05.2019 в 14:56, Plain сказал:

3 · 10 кГц · 360° / 0,5° = 21,6 МГц минимум для тактовой таймера, а его разрядность элементарно наращивается программно.

Не затруднит ли вас пояснить, откуда в данных расчетах взялось число 3?
Правильно ли я понял, что тактовая частота таймера равняется частоте самого микроконтроллера?

 

 

В 26.05.2019 в 12:05, k155la3 сказал:

Контроллер - мимнимум 16-разрядный вроде MSP430F5438, с несколькими (нормальными) таймерами и несколькими CCR  Compare-Capture-Registr. Еще лучше - 32 разр. ARM.

На MSP430 есть компеловские книжки с док-ей по MSP430 на русском языке. (переводы Ti)

Не годится ли для данной задачи какой-нибудь AVR? Например 8-ми разрядный ATmega128/328.

 

 

В 26.05.2019 в 20:13, _pv сказал:

half_period += ((TIMER_CAPTURE - capture_prev) - half_period) / K;

Что значит K в данной строке?
 

 

В 26.05.2019 в 20:13, _pv сказал:

какое-то fifo, хотя бы на два элемента всё равно понадобится

FIFO программный, или надо к микроконтроллеру подключать другие элементы?


И еще такой вопрос. Возможно ли реализовать на микроконтроллере такую возможность, чтоб сигнал поступающий на вход 1 разряда, формировался сдвинутым по фазе и подавался на выходы, но только чтоб на разных разрядах выводов контроллера были сигналы с разным сдвигом? К примеру чтоб 16-ти разрядный контроллер выдавал одновременно сигнал сдвинутый на 1,5 градуса, 3 градуса... И если возможно, то насколько это проблемно?


Ребята, спасибо всем кто участвовал в обсуждении! На данный момент проблема с вариантом на дискретных элементах неактуальна.
А вот с микроконтроллером вопрос открыт.

Share this post


Link to post
Share on other sites
6 hours ago, ernipat said:

Не годится ли для данной задачи какой-нибудь AVR? Например 8-ми разрядный ATmega128/328.

Что значит K в данной строке?

IFO программный, или надо к микроконтроллеру подключать другие элементы?


И еще такой вопрос. Возможно ли реализовать на микроконтроллере такую возможность, чтоб сигнал поступающий на вход 1 разряда, формировался сдвинутым по фазе и подавался на выходы, но только чтоб на разных разрядах выводов контроллера были сигналы с разным сдвигом? К примеру чтоб 16-ти разрядный контроллер выдавал одновременно сигнал сдвинутый на 1,5 градуса, 3 градуса... И если возможно, то насколько это проблемно?

сгодится и atmega, но для нескольких выходов таймер может понадобиться с бОльшим количеством capture/compare,  чем у той же атмеги, да и разрядность таймера тоже хорошо бы не 8 бит иметь.

K коэффициент ФНЧ фильтра для измеряемого периода, можно сказать временная константа ФАПЧ.

Фифо программный, так как при сдвиге фазы больше 180 градусов надо выдать импульс не на последний пришедший фронт на входе, а на предыдущий ему.

Share this post


Link to post
Share on other sites
6 часов назад, ernipat сказал:

откуда в данных расчетах взялось число 3?

Минимально возможная доля МЗР для получения погрешности округления менее него.

 

6 часов назад, ernipat сказал:

Правильно ли я понял, что тактовая частота таймера равняется частоте самого микроконтроллера?

Зависит от квалификации его разработчика, в общем случае да.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this