Перейти к содержанию
    

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, MegaVolt сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, ernipat сказал:

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 05.04.2019 в 21:54, Plain сказал:

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, k155la3 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Herz сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__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 градусов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 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 градуса... И если возможно, то насколько это проблемно?


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, ernipat said:

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

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

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


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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...