Как менять фазу генератора сигнала "на лету"?

Захват, обработка и генерирование сигнала
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Andrew Lunev писал(а): 07 май 2021, 02:14 То есть должно получиться 8 вариантов.
8 вариантов:
по какому фронту синхронизация - неактивное состояние счётчиков #0, #1 - результат
спадающий - high low - синхронизуется, не возвращается в исходное состояние при сдвиге не синхронизуемого фронта 1-50 и 50-99%
спадающий - high hign - нет синхронизации
спадающий - low high - нет синхронизации
спадающий - low low - синхронизуется, не возвращается в исходное состояние при сдвиге не синхронизуемого фронта 1-50 и 50-99%
возрастающий - при всех 4 вариантах синхронизуется, не возвращается в исходное состояние при сдвиге не синхронизуемого фронта 1-50 и 50-99%

Видяшка для возрастающий - low low
Так ведут себя все варианты кроме не синхронизующихся. Т.е. синхронизация почему-то сбивается именно при изменении % в процессе работы программы. Если перезапустить, синхронизация возвращается.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Во, если запустить программу сразу при 10%, то синхронизации нет. Сигналы расходятся потихоньку.
Вложения
generator 2 counter LV2012 - 1.vi
(35.1 КБ) 66 скачиваний
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrew Lunev »

У меня два варианта, почему так может происходить.
1. Не смотря на то, что настроили счетчики на работу от общего генератора они по факту используют свой встроенный генератор. Это можно проверить удалив из циклов обновление времен и запустив оба счетчика с одинаковыми параметрами. При этом посмотреть уходит ли фаза со временем.
2. Каждое изменение параметров low и high time для каждого счетчика приводит к тому, что обновление происходит не синхронно и это приводит к тому, что фаза смещается. Можно проверить, задав для счетчика 0 постоянные параметры (удалить обновление из цикла), а для счетчика 1 сделать обновление по кнопке "принять", например. Чтобы обновление не происходило 10 раз в секунду, а только при изменении параметров.

Но это только для проверки причины. В любом случае, если фазы смещаются со временем, то идея с использованием двух счетчиков видимо не будет работать. По крайней мере если фазу обновлять в реальном времени, а не задавать постоянной при инициализации.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Выглядит как провал;)
Как по мне надо именно фазу двигать, т.е. использовать параллельно 2 одинаковых счётчика. Но я совсем не знаком с триггерами... может запустить первый счётчик, посчитать сколько-то импульсов встроенного 80МГц генератора, и пустить второй, так можно? Пока давайте выкинем возможность непрерывного изменения фазы... это спасёт?
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение jane_wild »

Так и не поняла, чем предложенный мной вариант не нравится. Только что проверила, правда использовала USB NI 6212. Фазы двигает, ничто никуда не "плывет" фронты крутые...
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Ну если честно, я его просто не понимаю... Да, а можно мне файлик под 2012 LabView? Может потыкаюсь, и разберусь. Спасибо!
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение jane_wild »

Так там и есть 2012, а на скриншоте 2020
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

2012.png
кажись не 2012...
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение jane_wild »

Если коротко. Задается частота тактирования 50кГц. Количество точек 50000/10 = 5000. Это значит что драйвер будет записывать 5000 точек за один цикл на частоте 50000, это займет 100мS. Правда есть нюанс, частота, которую вы затребовали не всегда точно совпадает с реальной, на реальном железе, хотя и очень близка. Поэтому в примере используется Timing Node для точного определения частоты. Если хотите чтобы цикл крутился два раза в секунду, поставте 25000 точек. Вы установили частоту 300Гц значит за 100 mS произойдет 30 полных цикла. А если поставить 298Гц то будет 29.8 цикла, так? - Вот для этого и нужно помнить в каком месте Basic Function Generator.vi закончил формировать waveform, чтобы начать на следующей интерации именно с этого места, а для этого и нужно гонять фазу по кругу, а не как у вас при каждой итерации цикла начинать всегда с нуля... С этим разобрались. Далее внутри цикла есть Event структура, которая не участвует в формировании прямоугольных импульсов, но нужна чтобы обрабатывать изменения фазы "на лету". Если в процессе подстройки будет найден необходимый сдвиг и в дальнейшем изменения не нужны, то можно эту структуру не использовать, задав в самом начале константу. Перед запуском цикла, второй канал сдвигается на 180 градусов. И если в процессе юзер изменил фазу, срабатывает событие и вносятся эти самые изменения "в провод, передающий фазу ". А дальше снова структура "не при делах". Ее таймаут равен нулю, т.е. все "задержки" (а может скорость) цикла обеспечивает драйвер, записывая 5000 точек, по одной на частоте 50000.

P.S. Согласно документации 6218 может сэмплировать аналоговый выход до 250kS, так что смело ставте 100k, вместо 50k

Сейчас перезагружу
Вложения
Continuous Output (1).vi
LV 2012
(51.75 КБ) 71 скачивание
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Большое спасибо за пояснения и выложенный файлик, стало понятнее что к чему! Но к сожалению частота в вашем варианте так же скачет как и в моем предыдущем дилетантском. Попробовал подобрать оптимальное число точек для основной используемой частоты f=300Гц. То есть такое, чтобы за 1 секунду прописывалось целое число периодов триггерного сигнала. Для вашего варианта программы так и не подобрал почему-то, а для моего подкорректированного при 60000 точках/минуту на уставке 300Гц реальная частота сразу стабилизируется на уровне 300.299Гц. Сдвиг фазы ничего не портит, вроде как можно сколько угодно её двигать в любую сторону. Да, двигаю я только второй сигнал относительно первого. Как в плюс, так и в минус. Рад, что 300.299Гц хорошо работают, но ошибка в задании частоты для меня (точнее для моих лазеров) критичная... можно ли как-то скорректировать sample clock, или завязаться на какой-то другой канал (для счётчиков например удалось завязываться на 80МГц, а тут кажись так нельзя), чтобы выставить частоту поточнее?
На 300.299Гц работает вот такой вариант, он же приложен файликом. Кому не лень...посоветуйте пожалуйста куда бы ещё порыть! Да, уменьшение заполнения (длительности высокого уровня импульсов) не помогает.
60000.jpg
Вложения
KOLHOZNY generator 3.vi
(31.11 КБ) 63 скачивания
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как менять фазу генератора сигнала "на лету"?

Сообщение Andrey Petrzhik »

Да, если вдруг кому интересно что зачем... я пытаюсь засинхронить/предсказуемо рассинхронить (сдвинуть на определенный угол) вот такие импульсы от двух лазеров. Штатный режим работы - 300Гц.
Вложения
photo5249353065927127693.jpg
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»