Свежие обсуждения
Измерения

Дизайн народного RLC-метра (RLC-3)

1 68 174

Я имел виду точек 2000 , а не 20! Фильтры роли не играют. Ето рекламный трюк!

 

chav1961: Ни о каких тысячах выборок по той причине речи не идет, максимум, что удалось обработать - 32 точки, поэтому девайс врет как сивый мерин

На врятли он поэтому врёт, достаточно и шести точек, чтобы определить модуль вектора методом преобразования Фурье. Картинка немного трудна для восприятия, но представьте что на ней не ломанная, а синус, а там где изломы - точки в которых производятся измерения.

-JonnS-: аппаратным умножителем на борту для вычисления преобразования Фурье т.е реализировать ЦСД програмно в МК.

Не пойму ЦСД и Фурье это вроде как разные вещи.
К стати вот картинка которая показывает чем хорош сдвиг в 45 градусов, посмотрите на величину В1 и С1 в первом и во втором примере. Как видно при сдвиге фазы на 45 градусов приводит к тому что синусная составляющая и косинусная составляющая больше нуля. При сдвиге в 0 градусов косинусная составляющая равна нулю, а накопление и измерение нуля при помощи АЦП приводит к большой погрешности измерения. И ещё вспомнил, что при генерации синуса отсутствуют чётные гармоники, присутствуют только нечётные гармоники, т.е. в районе 45 градусов синус менее всего искажён.

Pitty: Тогда уж имхо лучше по экспоненте мерить тау и считать RLC.

Мне эта идея тоже нравится, но где взять формулы?

 

Link: Не пойму ЦСД и Фурье это вроде как разные вещи
Если делать преобразование Фурие только на ОДНУ частоту а именно на частоту сигнала получим ЦСД.

dert18: Я имел виду точек 2000 , а не 20!
Вроди про 20 точек не говорил:
-JonnS-: 100KSPS, время измерения 0.5сек
Счас посмотрел на программу, уточняю: частота сигнала 1кГц, 120 точек на период. Напряжение и ток измеряются по очереди накапливая по 200 периодов сигнала. (т.е время измерения 2x0.2сек /кратное 50гц/) Результат по стабильности неосновного параметра не радует.

GM: Ну, тонкостей и недомолвок там хватает...
Спасибо, етот кусок видимо прозевал! Стало понятно!

По поводу усовершенствования СД в RLC2, возможно Ваш вариант будеть лучше, но руки не поднимаются коверятся в настроеным уже прибором.

 


-JonnS-: Результат по стабильности неосновного параметра не радует.

Для наглядности амплитуда 50 Герцовой помехи ½ от амплитуды измеряемого сигнала. Основной сигнал f(n) в двадцать раз по частоте выше частоты наводки т.к. 1000Гц/50Гц=20.

 

Так, граждане, давайте-ка будем по-почтительнее с теорией Жана Батистовича...Синхронный детектор и преобразование Фурье это немного разные вещи.

1) В ПФ для получения коэффициентов А и В одной частоты вы интегрируете произведение сигнала на идеальные косинус и синус соответственно. Для МК это будет суммой произведений выборок сигнала на выборки синуса и косинуса.

2) В СД вы умножаете сигнал на два квадратурных меандра. Если вы замените синус на +1 в 1 и 2 квадрантах, и на -1 в 3 и 4 квадрантах, аналогично для косинуса, то получите квадратурный СД. Недостаток состоит в том, что СД реагирует как на основную гармонику, так и на нечётные гармоники сигнала, что, сами понимаете, приводит к ошибке.

В данной ветке предлагается использование именно преобразования Фурье сигналов тестовой частоты, поскольку лучшего придумать трудно. Я предлагаю делать накопление выборок в течение 1 сек, что даст разрешение 1 Гц по полосе. Прикиньте сколько пролезет мощности помех в полосе скажем 9999,5 -10000,5 Гц и подумайте какой цифровой фильтр обеспечит такую полосу. Разумеется, предпочтительнее делать одновременное измерение двух каналов, опорного и измерительного. (В принципе, если помеха стационарная, то можно измерять последовательно)

Если взять 100 квыборок/с, а это минимум для 10 кГц тест-сигнала, то за 1 с получится 100000 двух-трёх-байтных выборок. Чтобы не хранить все выборки в памяти предлагается делать частное суммирование на лету. Скажем, для 10 кГц тест-сигнала будет 10 точек на период, значит, каждая 10-я выборка суммируется с очередной точкой периода, так называемые частные суммы (их можно делать в течение всего периода накопления, т.е.на лету), а общая сумма вычисляется один раз в конце периода накопления, как произведение частных сумм на соответствующий синус и косинус.

-JonnS-: Если не применять фильтров, то получится примерно RLC1 на другом MK с различной аналоговой части. Но параметры будут на мой всгляд почти один к одному. Единственое подобрение будеть увеличение диапазона измеряемых елементов за счеть применение еще одну частоту тестового сигнала.
Ну, знаете, запорожец тоже автомобиль о четырёх колёсах, но мне более комфортно в моём Фольксвагене Пассате.

 

Господа, просветите еще немного по теории. Было сказано, что для нормального результата достаточно 6 точек. Предположим, при расчете синусоидальной составляющей я беру эти точки при 30, 90, 150 и т.д. градусах образцового синуса, а при расчете косинусоидальной - при 0, 60, 120 и т.д. градусах. Значения функций синуса и косинуса в указанных точках равны соответственно либо +/- 0.5, либо +/- 1, никаких операций умножения нахрен не нужно, их заменяют либо чистые сложения, либо сложения с правым арифметическим сдвигом на 1 разряд (как привязаться именно к этим углам, давайте обсуждать не будем, некие соображения по этому поводу у меня наклевываются ). Вопрос - насколько достоверным может быть результат, учитывая, что активную и реактивную составляющую RLC мы в этом случае считаем со сдвигом фаз в 30 градусов по выборкам.

 

chav1961: Господа, просветите еще немного по теории.
Можно сделать хитрее.
Производить измерения по одной точке.
Вспоминая формулы про Z.
Z=Va/Ia
R=Z*cos(g)
X=Z*sin(g)
XL=2*pi*f*L Xc=1/(2*pi*f*C)
Va-амплитудное значение напряжение на измеряемом сопротивлении.
Ia-амплитудное значение тока протекающего в измеряемом сопротивлении.
g-угол между током и напряжением.
Если измеряем активное сопротивление то g=0, и соответственно X=Z*sin(0)=Z*0=0 R=Z*cos(0)=Z*1. g=90 X= Z*sin(90)=+Z т.е. измеряем идеальную индуктивность у которой активное сопротивление равно нулю.
Далее свою идею распишу на примере индуктивности L=0.1Гн R=2.5Ом f=1000Гц T=1000мксек.

Как видно из формул приведённых выше для определения полного сопротивления достаточно знать амплитудные значения тока и напряжения, а для нахождения активной составляющей и реактивной составляющей надо знать угол между напряжением и током.
Как узнать амплитудное значение напряжения и тока? Можно измерить значение напряжения в конкретный, (за ранние известный) момент времени. Если за начало отчёта брать точку перехода напряжения через ноль подождать 1/8 периода ( cos(45) ) и измерить значение напряжения в момент времени равный 1/8периода т.е. через 125мксек, мы получим значение проекции вектора напряжения самого на себя и величина измеренного напряжения будет равна V=Va*cos(45). Отсюда находим амплитудное значение напряжения на индуктивности Va= V/ cos(45),

точно также находим ток при переходе тока через ноль выжидаем 125мксек, запускаем измерение и получаем значение проекции тока самого на себя I=Ia*cos(45) находим Ia=I/cos(45).
Когда мы подставим найденные формулы в Z=Va/Ia=V/I, косинусы сократятся, т.е. значение угла при котором производились измерения тока и напряжения сокращаются, главное произвести измерение тока и напряжения через равные промежутки времени.
Найти модуль полного сопротивление не тяжело, достаточно двух измерений.
Вот с углом между током и напряжением сложнее.
В конкретном примере угол между током и напряжением можно найти как время между переходом напряжения через ноль и переходом тока через ноль.

В конкретном примере теоретически ток будет отставать от напряжения на 249,366738мксек, или же на угол 360*249,366738/1000=89,7720256гр.
Теперь модуль полного сопротивления знаем, угол знаем можно вычислить активную и реактивную составляющую.
С измерением временем проблемы, его надо мерить как можно точнее, это легко делается если накапливать периоды, т.е. запустить таймер по переходу напряжения через ноль, а остановить таймер через 100 периодов перехода тока через ноль.
Вот в этом заключается моя идея.
Я произвёл замеры по курсорам в симуляторе, при T/8 у меня получилось
I=0.001136 V=0.707107
Z=0.707107/0.001124=629.098 время между переходом через ноль тока и напряжения t=249.373мксек откуда находим угол g= 360*249.373/1000=89.77428
L=629.098*sin(89.77428)/2*pi*1000=0.10012339
R=629.098*cos(89.77428)=2.478
Я не могу в симуляторе найти величину тока в необходимое мне время, поэтому и полезла погрешность.
Надеюсь, идею изложил понятно.

 

2 А.В.

Достоверности никакой, если я правильно понял идею.

В ранние годы, когда DSP были слабы, нередко для син/кос выбирали углы 0, 90, 180, 270, 360,...и делали по таким 4-х точечным последовательностям { 0, 1, 0, -1, 0, 1, 0, -1. . . } для синуса и { 1, 0, -1, 0, 1, 0, -1, 0. . .} для косинуса, там действительно, умножение вырождалось в сложение, пропуск и вычитание. Ну, если вы приглядитесь, то это и будет квадратурное синфазное детектирование, со всеми своими недостатками. Что вы так умножения боитесь? Давайте проведём мини-семинар по проблемам умножения .

Некоторые горячие головы ищут проц, чтобы там было умножение 16*16, как будто такое умножение решает все насущные проблемы. Результаты-то будут 32-битные, да ещё надо их складывать 100000 раз, получается 49-битный результат, четыре числа, их надо перемножать и складывать опять, уже будут 98-битные...В стремлении не потерять из измеренного ни йоты я доходил до 128-битных переменных! На этом фоне практически нет разницы, перемножать 8*8 или 16*16. Кстати вот, перемножение 16*16 и сложение с 48-битным результатом на авр занимает 24 МС, т.е. 1,2 мкс при 20 МГц тактовой, вполне приличный результат, это вам не пик какой-нибудь...

 

Link: С измерением временем проблемы, его надо мерить как можно точнее, это легко делается если накапливать периоды, т.е. запустить таймер по переходу напряжения через ноль
Ваша идея в теории будет работать, а на практике невыполнима. Это как со строительством коммунизма, идея хорошая, а люди дурные, гребут под себя...

Даже если бы не было шумов, ваша идея ограничена точностью измерения времени перехода через 0. Точность измерения не может быть лучше, чем 50 нс для существующих атмелов, значит теоретически достижимая погрешность (0.1 мкс/10 мкс)*100=1%, не густо, добавьте шумы, добавьте динамический диапазон, останется шиш да кумыш...

Вот вам ещё одна идея: достаточно засечь две точки синуса известной частоты и по ним вычислить амплитуду синуса и его фазу. Попробуйте реализовать на практике, будет вам почёт и уважение...

 

Поэтому я и предложил накапливать время на протяжении нескольких периодов перехода тока через ноль. Приведу пример с величинами взятыми из пальца.

Компаратор напряжения запаздывает на 50нсек компаратор тока на 75 нсек, Пусть период у нас 1000нсек, 1клеточка равна 100нсек, из за того что компараторы запаздывают и имеют не чёткий порог включения, мы получаем погрешность в 25нсек, т.е. (1025-100)/1025= 0,025=2,5% погрешность, если взять и подождать десять периодов то время увеличивается, а вот погрешность вносимая компараторами постоянна, т.е. (10025-1000)/1000=0,0025=0,25% как видим увеличение периодов измерения приводит к уменьшению погрешности пропорционально количеству периодов.

GM: Вот вам ещё одна идея: достаточно засечь две точки синуса известной частоты и по ним вычислить амплитуду синуса и его фазу. Попробуйте реализовать на практике, будет вам почёт и уважение...

Я понимаю куда Вы клоните. К синхронному детектору, там тоже достаточно измерить две точки при 0 и при 90 градусов. Но Проблема в практике в том, что величина проекции напряжения индуктивности и ёмкости на реальную ось стремится к нулю, и что самое главное дребезг младших разрядов АЦП автоматом вносит ошибку в угол. При ПФ погрешность АЦП также вносит погрешность в величину угла. В моей идее погрешность определения угла отделена от погрешности вносимой АЦП. И при чём угол можно определить достаточно точно. Поэтому дребезга не основного параметра наблюдаться не должно.
В общем вот такие у меня домыслы.