Генерация низкочастотных прямоугольных импульсов через ЦАП

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

Генерация низкочастотных прямоугольных импульсов через ЦАП

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

Добрый день!
Встала задачка генерить N прямоугольных импульсов 0-5В для шагового двигателя на различной частоте.
Использую ЦАП NI PCI-6221 с подключенной коробкой BNC-2120. К коробке на ao1 подцепил аналоговый осциллограф.
На 1000Гц всё работает нормально, на 100 хуже, на 10Гц какой-то бардак творится.
Причём при генерации синуса или любого другого сигнала c изменением амплитуды не скачком проблем нет!
Что же не так? Должна быть какая-то очень простая ошибка...
Спасибо большое за помощь!
Фотки с осциллографа и программу прикладываю.
Вложения
10-100Hz.jpg
program_prntscrn.jpg
analog_generator.vi
(16.81 КБ) 222 скачивания
Аватара пользователя
Andrew Lunev

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

Упс... первая прикидка дала что походу всё нормально работает... правда что-ли? Закоротил ao1 на ai5... Вот бы никогда не подумал, что осциллограф может не давать измерить корректно 10-100Гц...
Вложения
10Hz-daq_input.jpg
Аватара пользователя
Andrew Lunev

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

На всех трех картинках видно, что сигнал затухает по экспоненте. Просто на малых периодах видны только очень малые части экспоненты и поэтому создается впечатление, что полки сигнала прямые, но все имеют наклон и чем период развертки больше, тем больше это заметно. Явно неисправность развертки осциллографа, чинить его надо...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Генерация низкочастотных прямоугольных импульсов через Ц

Сообщение Blackman »

Проверьте тип входа. Должен быть открытый (DC+AC).
Вложения
OSCInputTYPE.png
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

Blackman, так и есть, причём я тыкал такую же кнопочку левее (там где времена ставишь), а эту у Y1 не заметил... позор мне:(
Да, решил тут для генерации использовать не ЦАП, а счётчик, ибо это вроде логичнее. Накидал программку, но что-то она сильно жрёт процессор, когда долго измеряешь (~10 минут) на 1000Гц сигнал и пишешь его на график. Кому не лень, гляньте пожалуйста. Думаю какие-то тайминги надо выставить, или например слишком много точек на график кидаю... а может вообще лучше потоково писать в файл, а не потом его сохранять? А так вроде стабильно генерится, кому интересно характерный кусочек графика прикладываю.

Спасибо за внимание и за помощь!
Вложения
impulses.vi
(30.88 КБ) 154 скачивания
1.jpg
2.jpg
10Hz_1000Hz_10min.png
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Генерация низкочастотных прямоугольных импульсов через Ц

Сообщение Vitekkz88 »

Для анализа графиков с миллионом отсчетов лучше использовать отдельную программу. Так же, Ваша программа будет замедляться по мере забивания сдвигового регистра. Вы же в нём данные копите, верно? И каждый раз LabVIEW приходится раздувать этот регистр и заниматься копированием + добавкой новой порции данных. Если на десятках тысяч отчетов это будет незаметно, то на сотнях тысяч это будет заметно. Вот и прикидывайте: фунция вам
Разделите Вашу программу на:
а)цикл генерации данных
б)цикл накопления данных
в)цикл записи данных
г)цикл визуализации данных(показывайте не каждую входящую выборку, а каждую десятую например. Если данные поступают
динамично, то пользователь не успеет на глаз ничего оценить).
д)цикл анализа данных(в этот цикл добавите логику принятия решений при тех или иных зафиксированных параметрах, какие-то измерения и прочее).
Передачу данных между циклами делайте с помощью очередей. Вот тут пример посмотрите, почти всё что нужно, осталось запись организовать:
http://labviewportal.org/viewtopic.php? ... =75#p62401
По поводу записи данных: посмотрите еще возможности записи в бинарный файл или в tdms.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

Всем привет!
Оттестировал программку (основу которой я выкладывал выше) на USB-6218: вроде всё хорошо.
Но это дорогая плата, временно взятая для экспериментов из другой установки.
Прочитал что в принципе можно использовать и дешевую USB-6001 для моих целей, и заказал её.
Сегодня её получил, но почему-то не могу настроить PFI... мне кажется какая-то глупость, ибо по мануалю всё должно работать.
Кто знает, подскажите пожалуйста что можно сделать чтобы в выборе каунтера появился PFI0.

В мануале "Using PFI as a Counter Source You can configure PFI 0 or PFI 1 as a source for counting digital edges. In this mode, either rising- or falling-edges are counted using a 32-bit counter." Мануаль, стр. 23: http://www.ni.com/pdf/manuals/374259a.pdf
Как же мне отконфигить PFI0 на counter source? В NI MAX такой опции не нашел.

Labview 12 x64
NI DAQmx 15-11f3

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

В NI Max изменение частоты не активно, при нажатии кнопки старт вроде как ничего не происходит (но осциллограф пока не цеплял на выход порта). Да, Daqmx 15.1.1 совместим как с Labview 12, так и с платой usb-6001. Не думаю что проблема тут. Неужели правда не поддерживается счётчик? Через DAQ Assistant выдать импульсы также не удаётся...
Вложения
nimax.jpg
daq_assist.jpg
daq_assist2.jpg
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Генерация низкочастотных прямоугольных импульсов через Ц

Сообщение Blackman »

У этого устройства нет выходов для счетчиков Counter Output - CO. Только два входа для счетчиков Counter Input - CI.
"Using PFI as a Counter Source You can configure PFI 0 or PFI 1 as a source for counting digital edges...."
Используя PFI как Источник сигналов Счетчика Вы можете задавать PFI 0 или PFI 1 как источник (сигнала) для счета количества фронтов входных цифровых сигналов.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

Уважаемая общественность, а вот ещё хотелось бы вопросик задать...

Читаю данные с тензодатчика, а он выдаёт значения в районе единиц мВ, которые даже крутая 16-битная плата NI USB-6218 читает на пределе погрешности. Поэтому полученные данные нужно усреднять: скажем в секунду читаем 10000 точек, и оставляем из них 50 усреднённых.

Сейчас у меня данные забираются из буфера платы раз в секунду, и как взять среднее за секунду - понятно. Для этого есть "Mean". Но таким усреднением можно замыть какой-то всплеск натяга... Как бы разбить массив данных, полученных за 1с, на 50 частей, и из каждой части взять среднее? Вроде алгоритм должен быть не сложный, но никак не соображу... подскажите кому не лень пожалуйста. Важно именно выбрасывать лишние данные (слишком большой массив будет), а не просто усреднять по стольки-то точкам как я когда-то делал для сглаживания производной ВАХ.

P.S. Оффтоп: А знает кто есть какие-нить платы от National Instruments, заточенные под считывание не +-10В сигнала АЦП, а скажем +-100мВ? Например L-Card платы вроде как имеют переключатели диапазонов... или ещё какие аналоги бывают? Это так, на будущее хотел бы знать...
Вложения
usrednenie_for_Rdiff.jpg
usrednenie_for_Rdiff.jpg (24.04 КБ) 5762 просмотра
5000имп_подъем10Гц_mean1s_10kHz.jpg
buffer_1s.jpg
razrivalka_proga_var_1s_mean.jpg
Аватара пользователя
Andrew Lunev

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

Re: Генерация низкочастотных прямоугольных импульсов через Ц

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

Плата NI USB-6218 имеет настраиваемый диапазон входного сигнала. Варианты: ±0.2 V, ±1 V, ±5 V, ±10 V. Есть другие платы с диапазоном от ±0.1 V и разрядностью 18 бит, это если USB рассматривать. Для других вариантов подключения есть и 24 битные платы.
Для тензодатчиков, если хотите получать нормальные точные измерения, то лучше использовать специализированные модули, у них требуемый диапазон, разрядность 24 бита, запитка датчика, и что очень важно - автоматическая компенсация изменения напряжения питания тензомоста.
Не понимаю, зачем вычитывать данные раз в секунду и потом возиться с разбиением? Не проще просто настроить вычитывание 50 раз в секунду и делать осреднение по всем принятым измерениям? Получите те же 50 усредненных измерений за секунду. Отбрасывать измерения глупо, лишних измерений не бывает, всегда дополнительные измерения можно использовать для улучшения точности. Если есть желание, то по этим усредненным 50 точкам можно еще и скользящим средним пройтись...
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Генерация низкочастотных прямоугольных импульсов через Ц

Сообщение taras_33 »

Полностью согласен с Andrew Lunev. Если вы явно не указали входной диапазон, то он подстраивается автоматически, согласно параметрам созданной вами задачи, посмотрите на скриншот, который я сделал при симуляции NI 6218 и посмотрел min/max range кстати она совсем уж не такая крутая, так средненькая :D Как можно видеть, я "запрашивал" 0.02 Вольт, а получил минимально возможный для NI 6218 +/-0.2V
Load Cell.png
Для этого используются, Strain Gage Input Signal Conditioner, типа таких Тут вам и запитка датчика и фильтрация и компенсация...
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Ответить

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