Свежие обсуждения
Прочее

Осциллограф-приставка к ПК

1 5 8
Tadas, зачем умножать выборку на функцию окна, если преобразование Фурье в программе не используется? При чем в таком случае разрешение по амплитуде? Хорошо хоть боковые лепестки не вспомнили, и метод дополнения нулями...

Смещение нуля, иначе говоря постоянная составляющая сигнала = среднему арифметическому элементов выборки.

 
А, ну тогда другое дело, извините.
Исходники не изучал, просто так слежу за разговором.
 
Небольшой апдейт:
http://sirdvm.narod.ru/mdm10.rar (30кБ)

Tadas
БПФ тут совсем ни к чему, все что требуется - выделить постоянную составляющую. Первый раз - из сигнала на выходе АЦП ("смещение нуля"), второй раз - из модуля этого сигнала за вычетом "смещения нуля". Если уж говорить о БПФ, функция временных окон не в ликвидации разрывов сигнала, а в регулировании влияния боковых лепестков от спектральных пиков на соседние спектральные пики (за счет уменьшения разрешения по частоте, иначе говоря - увеличения эквивалентной ширины полосы).

 
Все верно, эти лепестки от того и получаются, что выборка не бесконечна.
Оконные функции в некоторой мере уменьшают влияние краевых эффектов.
Но думаю, излагать друг другу основы тут не совсем подходящее место.
 
Ну, я просто просто к терминологии придрался ("Чтобы меандр не рвался...")  
Если неправ, прошу поправить.

Вот исходные данные.
У DVM производится оцифровка выборок продолжительностью 0,1 сек.
Скорость оцифровки 22050 отсчетов в секунду.
При частоте "модулятора" порядка 1 кГц выборка будет состоять примерно из 100 периодов "меандра" (на каждую "полочку" меандра будут приходиться 10 отсчетов).

Что из этого следует.
Редок случай, когда в выборку уложится целое количество периодов.
При измерении среднего значения этот дробный "довесок" будет случайным и даст максимальную ошибку в +- 0,5[периода]/100[периодов]*100%=0,5% от текущей амплитуды.

Вроде не так уж и много, хотя при желании можно уменьшить эту величину.
Для этого, DVM принудительно и однократно устанавливает амплитуду минимальной (процедура "установки нуля"). Но не гарантирует постоянство калибровки в течении нескольких часов.
Tadas предлагает помножать отсчеты на "функцию окна". Т.е. в начале и в конце отсчеты берутся с нулевым "весом", к центру выборки этот вес растет до 1. Так невилируется "краевой эффект".

Но может цифра 0,5% не так уж и велика? (понятно, что при частоте модулятора 100 Гц она будет на порядок хуже)
А что мешает увеличить продолжительность выборок до 1 сек?
Ну, будет буфер не 4,4 кБ, а 44 кБ, да время обработки немного увеличится. Не знаю, так ли сделано в новой версии...

 
IDiod
Не знаю, так ли сделано в новой версии...
Примерно так и сделано.

А именно: для мониторинга постоянной составляющей используется фильтр с конечным импульсным откликом длиной N=220500, все коэффициенты которого = 1/N. Если перевести с русского на русский - вычисляется среднее арифметическое за 10 секунд. Буфер остался прежним. Как я уже говорил выше - оцифровка непрерывная (данные получаются порциями 10 раз в секунду).

Tadas предлагает помножать отсчеты на "функцию окна". Т.е. в начале и в конце отсчеты берутся с нулевым "весом", к центру выборки этот вес растет до 1. Так невилируется "краевой эффект".

Так нельзя на функцию окна умножать, исходную постоянную составляющую после этого уже так просто не определишь. Tadas-то предлагал это, т.к. подумал, что в программе используется БПФ (я этого сначала не понял).

P.S. Новые исходники тут: http://sirdvm.narod.ru/mdm10src.rar

 
Вот я тут подумал
Если бы поставил себе задачу сделать такой прибор,то скорее всего
остановил бы свой выбор на ПНЧ с последующей спектральной обработкой.
Со сдвигом нуля меньше проблем.
Но это не есть критика решения DVM
 
Вычисление смещения нуля на основе длинной выборки (в данном случае, 220.5 тыс. сэмплов) проблему решает. Результат этого вычисления обновляется 10 раз в секунду, по мере поступления на вход цифрового фильтра новой порции данных от АЦП. Т.е. я бы не сказал, что проблема вообще существует

Если уж использовать ПНЧ - частоту основной гармоники гораздо проще определить без спектрального анализа (программный частотомер). Т.к. кроме частоты основной гармоники никакая информация нам не нужна, смысл использовать достаточно ресурсоемкий алгоритм БПФ отсутствует. Можно вообще обойтись без звуковой карты, воспользовавшись одним разрядом COM или LPT порта.

Решающих преимуществ перед выделением постоянной составляющей из модуля входного сигнала после коррекции смещения нуля я не вижу. С учетом того, что проблема с вычислением смещения нуля высосана из пальца В расплату за меньшую чувствительность к наводкам требуется несколько более сложная схема (ПНЧ), по сравнению с модулятором. Плюс к этому, чем меньше частота - тем больше погрешность при фиксированном интервале измерения. С другой стороны, модифицировать программу для поддержки ПНЧ достаточно просто.

Главное - не надо забывать, что мы тут не измерительный комплекс для установки на борт МКС обсуждаем , а всего лишь анализатор разрядной кривой батареек/аккумуляторов (или других медленных процессов) на базе "халявного" АЦП звуковой карты. Если в итоге хотя бы 10 "честных" бит - хватит более чем.

 
Не со всеми положениями согласен.
Во первых - ПНЧ не намного сложнее модулятора.
Во вторых - вариант с частотомером при той же скорости измерений даст
гораздо меньшее разрешение по частоте.
В третьих - ЧМ более помехоустойчива чем АМ (вы тут намекнули на МКС, а до цифровой эры
вся телеметрия с космических аппаратов формировалась именно ПНЧ)
В четвертых - заморачиваться с разработкой алгоритмов БПФ нет необходимости, есть готовые библиотеки.
Ну и главное - Вы сделали работающий прибор и это говорит само за себя