Easyelectronics.ru

Электроника для всех
Текущее время: 06 дек 2019, 03:43

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 112 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 19 мар 2019, 15:59 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Появилось два вопроса:
1. Даст ли какое-то преимущество использование ADC в дифференциальном режиме, который есть в stm32f302cbt6?
Тогда работает одно ADC, а не два разных ADC - точнее получится?
Пока оцифровываю в dual mode напряжение на входном электроде на ADC1 и выходном электроде на ADC2.
2. Как я понимаю, 100nf конденсатор перед входом ADC убирает постоянную составляющую сигнала.
Он нужен в любом случае или на расчет не повлияет его отсутствие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 19 мар 2019, 17:02 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
1. "Диф." режим может мешать одновременному измерений в точках А и В. Конкретно - нужно получить две величины, максимально точно (будет ниже) - это "А-В" и "В". Первое есть "напряжение" на DUT, второе - "ток" через DUT. Именно две эти величины и важны. При диф. измерении, когда диф. входы подключены в точкам: первый АЦП к А и В, второй в В, получатся максимально точные замеры (точные по_времени), то точка В окажется под обоими АЦП одновременно и это приведет к повышенной дефектности оцифровки. АЦП в STM32 они это, г-т в вход и весьма вонюче. Даже осциллографом видно.
Так что, чистый диф. режим стоит употреблять в том случае, если вы будете оцифровывать данные последовательно, одним каналом. А именно - вначале (20мс*N) оцифровывать "А-В" , затем (20мс*M) оцифровывать "В". У вас стабильная передача, поэтому процесс замера А-В и В можно делать в разные моменты времени, они не меняются. Если у вас используется параллельный режим захвата, (обе точки А и В в режиме dual ADC, например), то диф. режим измерения А-В и В использовать нельзя. НО, я имел в виду несколько иное. АЦП стоит перевести в диф. режим, но подключать только один вход к измеряемой цепи. Второй вход (диф. режима) надо через такой-же конденсатор (0.1uF) подключить к "земляному" концу тестовой цепи. Для А это будет земля передатчика (ну, где вы выдаете синус наружу), а для В - второй вывод резистора 1к. Вы получаете псевдо-4-точечное подключение. Резко снижает уровень шума.
2. АЦП оцифровывает только в интервале 0-Vcc. Как вы собрались оцифровывать входной сигнал без конденсатора? )))
В-принципе, конденсатор для точки А не нужен, но - вы обязаны сохранить "одинаковость" свойств для измерений точек и А и В, иначе появится фазовый сдвиг, который может _частично_ исправить калибровка. Ну, как в схемотехнике диф. усилителей. Я уже упростил всё, что только возможно. Удешевлять некуда. ))

Remark:
Частота семплирования и частота "сигнала" довольно близки, да и сама частота сигнала очень высока. Поэтому, "неодинаковость" оцифровки входов (по времени) приведет к жутчайшему джитеру.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 19 мар 2019, 19:20 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Попробую описать то, что понял по схеме:

1.Формирую синусоиду на пине DAC_OUT (PA4).
2.С пина DAC_OUT сигнал идет на неинвертирующий вход ОУ (PA3) в режиме повторителя, и через конденсатор 220pf развязывается с землей VSSA.
3.С выхода ОУ (PA2) сигнал идет на входной электрод (точка A)
4.АЦП1 работает в дифференциальном режиме: сигнал из точки A подается через конденсатор 100nf (3) на "+" вход (PA0, ADC1_IN1), "-" вход (PA1) через конденсатор 100nf (9) соединен с землей VSSA.
5.Сигнал с выходного электрода (точка B) идет через резистор 1k на землю VSSA.
6.АЦП2 работает в дифференциальном режиме: сигнал из точки B подается через конденсатор 100nf (6) на "+" вход (PA6, ADC2_IN3), "-" вход (PA7) через конденсатор 100nf (8) соединен с землей VSSA.

И что понял по алгоритму:

1. Подаем синусоиду на (входной электрод) точку A (1). Точка B (4) через резистор 1000 Ом соединена с землей VSSA.
2. Считываем с частотой сэмплирования одномоментно с двух АЦП: напряжение в точке "A" и в точке "B" (выходной электрод).
3. Сохряняем считанные значения напряжения в массивы A[] и B[].
4. Частоты синусоиды и сэмплирования нужно подбирать специальным образом, чтобы в массиве поместилось целое число периодов сигнала.
5. Проходим по массивам, суммируя Xi*COS(i) и Xi*SIN(i), и получаем 4 суммы: AiCOSi, AiSINi, BiCOSi, BiSINi.
6. Рассчитываем активное сопротивление (реальная часть):
Zre = (AiCOSi - BiCOSi) * 1000 / BiCOSi.
7. Рассчитываем емкость (положительная мнимая часть комплексного сопротивления Z):
Zim = (AiSINi - BiSINi) * 1000 / BiSINi.


Вложения:
Комментарий к файлу: Перерисовал схему
k_adc1.png
k_adc1.png [ 46.93 Кб | Просмотров: 926 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 19 мар 2019, 19:25 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Схема - "да".

По алгоритму.
1,2 - да
3. Данные сохраняет DMA, в кольцевой буфер, по мере оцифровки. Вы должны его обсчитывать на лету.
Для этого используйте прерывание по half- и full- заполнению.
4. не только "целое", но и "простое". 49 и 97 простое, а 99 нет.
5. Если делать правильно, то компоненты cos надо накапливать суммированием, а sin накапливать вычитанием. Формула ДПФ. ))
Я всё суммирую, но потом инвертирую результат для sin.
6,7 - нет. Халявы не будет. )) Вариант исполнения ComplexDiv я приводил. Z=ComplexDiv(V,I); где V.re=(Acos-Bcos)*1к; V.im=(Asin-Bsin)*1к; I.re=Bcos; I.im=Bsin


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 12:19 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Что-то недопонимаю в процессе.
Либо замучаю вас вопросами,
либо отправьте меня разбираться в коде проекта, на который вы давали ссылку.

Вывод в DAC очень дискретен (не хватает частоты МК).
Мне кажется, для повышения точности, нужно считывать ADC в моменты, очень близкие к моменту вывода значения в DAC.
А вы значения ADC собираетесь считывать в любой, даже промежуточный момент, соответствующий специальным образом выбранной вами частоте?

Ниже моя логика.

Обозначим количество значений DAC на период синусоиды как K.
Нам нужно максимальное быстродействие, чтобы DAC красивше, то есть, с максимальным количеством точек на период, изобразил синус на входном электроде (точка A).
Поэтому, таймер1 с максимальным приоритетом пинает DMA для вывода в DAC.
Тут, вроде, все ясно.

Считываем напряжения из точек А и В одномоментно (ADC в dual mode).

Момент считывания ADC привязан к моменту выставления в DAC очередного значения.
Во времени из прошлого в настоящее процесс выглядит, по-моему,как-то так
(у таймера1 максимальный приоритет):
1) таймер1 пинул DMA2 (максимальный приоритет) -->
2) DMA2 выставил в DAC значение -->
3) DMA1 запустило ADC ->
4) МК подождал очередного такта на шине, с которой тактируется DAC (так как DAC от шины с делителем 2) -->
5) ADC работает -->
6) на пине DAC_OUT сформировалось напряжение -->
7) ADC работает -->
8) ADC закончило работу -->
9) DMA1 сохраняет значения ADC.
Поэтому, думаю запускать ADC по второму таймеру - таймер2.
Чтобы, сдвигая момент запуска таймера2, подобрать эмпирически правильное его смещение относительно таймер1 для получения максимально точных значений емкости.
Естественно, оба таймера будут тактироваться от одной шины.

Считывать ADC можем редко, с периодами равными: (N*(период синусоиды))+(период таймера1).
То есть, один раз через N полных периодов синусоиды плюс смещение между двумя выводами в DAC.
Тогда, выбрав большое N, мы можем в реальном времени суммировать и вычислять, т.к. нам хватит частоты МК.

Возьмем какой-то момент времени,
в котором в DAC находится значение соответствующее точке на синусоиде при угле R в радианах,
и мы считали значение ADC для точки A и для точки B.
Тогда, сохраняем в буфер два произведения для каждого из значений ADC:
произведение ADC на cos угла R
и
произведение ADC на sin угла R.

В итоге, в буфере ADC накапливаем произведения несколько раз по K штук (K - количество значений DAC на период синусоиды).
Далее, рассчитываем, усредняем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 12:42 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Попробуйте. ))
Вы обязаны считать максимально бОльшее число точек по фазе входного сигнала. Как вы это сделаете - вам виднее.
Второй момент - любая форма джиттера приведет к переводу полезного сигнала в шум.
И еще - (фиксированный) фазовый сдвиг между DAC и его выходом и сдвигом оцифровкой АЦП не важен, если этот сдвиг неизменен для оцифровки точек А vs В на период блока суммирования. Например, в той редакции RLC, что я ссылаюсь, применен очень интересный прием - блок накопления начинается каждый раз со сдвигом на 180 градусов по частоте сигнала (начинают чуть позже). В результате, накапливается попеременно "+" и "-" значения результата. Это эффективно давит оставшееся постоянное смещение и сверхнизкие частоты помех. В других RLC (в частности, RLC2) применен принцип измерения только "cos", но входной сигнал (или частота "несущей" обработки) попеременно сдвигается на 0, 90, 180, 270 градусов. Сдвиг на 0 и 180 дают cos и -cos, а 90 и 270 = -sin и sin.
Так что - вариантов масса. )) Нужно лишь обеспечивать неизменность характеристик сигнала и условий оцифровки. И, одно из условий "неизменности" - никогда не отключайте "воздействие" - частота тестового сигнала, его амплитуда и фаза, должны быть постоянными. И учитывайте время на "вхождение в режим". Просто включить генератор и через такт мерить - так не выйдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 14:31 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
Вы обязаны считать максимально бОльшее число точек по фазе входного сигнала.


Большинство ваших высказываний в моей голове интерпретируются в несколько вариантов.
Какой выбрать - проблема.

Мы взяли с равным шагом фиксированное число N значений фаз F0=0,...,F(N-1)<2*PI.
Для которых вычислили значения синусоидального сигнала, подаваемого на вход.
Я могу сколько угодно раз считывать ADC на разных периодах сигнала, но только в точках F0...F(N-1).
Вы это имеете в виду или то, что я могу считывать ADC, например, между фазами F0 и F1?
Но, ведь тогда на ADC входного сигнала будет все еще DAC при F0.

Альтернативный вариант - несколько итераций.
Рассчитали синус по F0..F(N-1) - провели замеры.
Изменили шаг, взяли M<N F0..F(M-1), т.е. уже у нас другой набор фаз - провели замеры.
И т.д.
Как бы мне вас правильно понять?

u37 писал(а):
(фиксированный) фазовый сдвиг между DAC и его выходом и сдвигом оцифровкой АЦП не важен, если этот сдвиг неизменен для оцифровки точек А vs В на период блока суммирования.


Для меня не ясно, суммируем и рассчитываем Zi только за период i, потом усредняем все Zi в результат Z?
Или суммируем за все целые периоды данные, полученные на разных наборах фаз и только потом делаем расчет Z?

u37 писал(а):
Нужно лишь обеспечивать неизменность характеристик сигнала и условий оцифровки. И, одно из условий "неизменности" - никогда не отключайте "воздействие" - частота тестового сигнала, его амплитуда и фаза, должны быть постоянными. И учитывайте время на "вхождение в режим". Просто включить генератор и через такт мерить - так не выйдет.


Это понятно: включили, прогрели, замерили, выключили.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 15:05 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
"Для меня не ясно, суммируем и рассчитываем Zi только за период i, потом усредняем все Zi в результат Z?
Или суммируем за все целые периоды данные, полученные на разных наборах фаз и только потом делаем расчет Z?"
Накопить, усреднить (и профильтровать) V и I, потом 1 раз посчитать Z.

Я уже говорил, придется повторять. ((
Итак. Для измерения амплитуды и фазы надо измерить множество точек периода (синусоиды) входного сигнала. Если сигнал низкочастотный, то это делается просто - множество отсчетов АЦП за время 1 периода. Каждый следующий отсчет АЦП есть небольшой сдвиг фазы j (j=0...N-1). Если выполнить перемножение АЦП*cos(j*2PI/N) и просуммировать, то получится ДПФ, что и надо. (и АЦП*sin(j*2PI/N)). Условно говоря, J меняется как 0,1,2...N-1 --- последовательно.
Для ВЧ сигнала измерение методом накопления невозможно. Однако, если оцифровывать информационный сигнал с частотой "близкой", но кратной с большим числом (например N), то в оцифрованных данных будет прослеживаться периодичность данных оцифровки с периодом N и, если N является простым числом, все отсчеты _разные_. Если же внимательно посчотреть на сами числа, то выяснится, что полученные значения соответствуют =всему= ряду значений J=0...N-1 (как и в первом варианте!), только они "перемешаны". Для восстановления первоначального порядка, надо или восстановить (пересортировать) отсчеты, или сделать такую таблицу преобразования n->cos(n) (n->sin(n)), чтобы этот порядок восстановился. Т.к. все значения суммируются, то нет смысла позиции "переставлять". Иначе говоря, если мы знаем, что в последовательности отсчетов лежат отсчеты вида 0-4-1-5-2-6-3-7, то можно сразу сгенерировать целевую таблицу вида cos(0),cos(4),cos(1),cos(5)...cos(3),cos(7).
При перемножении отсчетов на cos по такой таблице приведет к точно такому-же результату, как еслиб мы использовали сверхбыстрый АЦП и оцифровали 1 период входного сигнала на N отсчетов.
Для ваших настроек, ближайшие варианты конфигурации:
а) семплирование 1М, размер блока оцифровки (суммирования) 500 (период 0.5мс), частота сигнала 49к*2=98кГц, в блок помещается 49 периодов.
б) семплирование 1М, размер блока оцифровки (суммирования) 1000 (период 1мс), частота сигнала 97к, в блок помещается 97 периодов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 15:49 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Кажется, дошло.
u37 писал(а):
Иначе говоря, если мы знаем, что в последовательности отсчетов лежат отсчеты вида 0-4-1-5-2-6-3-7, то можно сразу сгенерировать целевую таблицу вида cos(0),cos(4),cos(1),cos(5)...cos(3),cos(7).


Я рассуждал выше из того, что логично выбирать для оцифровки ADC частоту, при которой на каждом шаге имеем следующую по порядку фазу.
Однако, вы правы, нам же упорядоченность не нужна.

Постараюсь учесть это при расчете частоты сэмплирования ADC:
u37 писал(а):
Чем дольше суммировать данные перед вычислением Z, тем лучше отсеиваются шумы и тем больше значащих цифр в результате. Всяко, желательно делать накопления с временем, кратным 20 мс - это хорошо давит стандартную помеху 50 Гц.


Удачи!

P.S. Видимо, непонимание еще связано с тем, что я бы хотел пропускать несколько разных частот, а не одну фиксированную.
Поэтому, буду алгоритм затачивать под то, чтобы менять входную частоту, а все остальные параметры таймеров и т.п. пересчитывать автоматом, насколько получится.
Вдруг, для разных типов почв оптимальные частоты для измерения емкости будут отличаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 16:08 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Собственно, а в чем проблема? Главное в сём алгоритме то, что ничего не надо перестраивать в железе. Вы лишь генерируете новую таблицу для DAC и для cos (sin). Таблицы, вообще-то, одни и те-же (поэтому полезно держать одинаковой скорость DAC и оцифровки), и базируются на количестве раз, которое должно уписаться в размер блока накопления (простым числом). Так что, поменяли N, перегенерировали таблицы и в путь. )) Нижняя частота определяется размером блока, для семплирования 1М и 1000 отсчетов это будет 1 кГц, потом 3кГц, 5, ... 97.
... и ничего не надо трогать в настройках аппаратуры.

add.
Вообще-то, можно не перегенерировать таблицы, а использовать принцип DDS генераторов - есть фиксированная таблица значений sin 0-2PI в N позиций. Тогда, сигнал генерируется как sin(i%N), а i=i+k. Меняя k можно весьма плавно менять "частоту". Увы, для DAC таблицу всё равно придется строить - он арифметике не научен )).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 18:03 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Благодарю за терпение!

Как идеалист, пытаюсь понять, в чем преимущество возни с простыми числами.

Например, шесть точек на период DAC синусоиды, следующий период - следующая буква:

aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhiiiiiijjjjjj

Заглавными становятся буквы в местах, где мы считываем ADC.
Период между ADC равен двум периодам синусоиды плюс 1/количество точек за период:

AaaaaabbbbbbcCccccddddddeeEeeeffffffgggGgghhhhhhiiiiIijjjjjj

А можем, если не успеваем, через три периода синусоиды плюс 1/кол-во точек за период:

AaaaaabbbbbbccccccdDddddeeeeeeffffffggGggghhhhhhiiiiiijjjJjj

И не надо искать простых чисел.
В соответствии с выбранной частотой синуса выбираем количество точек на период, которое можем позволить на своем МК.
Выбираем период оцифровки ADC как несколько периодов синусоиды плюс время между двумя (точками) выводами в DAC.
Где я ошибся?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 18:16 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
"Простое" оно нужнО потому, что не_простое будет повторяться Х раз в блоке. Если взять 49, то в блоке будет 500 значений, и все с разной фазой. Если взять 48, то "оно" повторится два раза и будет 250 значений фазы. дискретность по фазе упала в 2 раза. ;)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 18:48 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
"Простое" оно нужнО потому, что не_простое будет повторяться Х раз в блоке. Если взять 49, то в блоке будет 500 значений, и все с разной фазой. Если взять 48, то "оно" повторится два раза и будет 250 значений фазы. дискретность по фазе упала в 2 раза. ;)


То есть это для случая, когда можем более чем раз за период синуса сделать слепок с двух ADC и засунуть его в RAM?
Я-то думал, что МК не успеет больше одного раза за период.
Недооценил stm32 :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 20 мар 2019, 19:52 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Мммм ...
В "том" проекте процессор работает на частоте 24-27 МГц и оцифровывает/обрабатывает/выдает(в DAC) поток с частотой 500кс (2 мкс). Скорость 500 кс определяется и скоростью АЦП и скоростью процессора STM32F100, на который официальная частота "по 24МГц". У вас процессор немножко быстрее. Вполне разумно предположить, что возможна обработка и 1Мс.
В-принципе, у вас очень много RAM, поэтому можно не обрабатывать в реалтайме, а записать все эти ненужные килобайты полезными данными и потом их обработать. F3 допускает больше вольностей, чем F100. ))
На самом деле, второй вариант имеет и скрытое достоинство - на время оцифровки процессор можно загнать в сон, что резко снизит уровень шума. В STM32 стоит SAR, а не Sigma-Delta, к помехам он относится крайне негативно.
Отключать процессор на время измерения, это "стандартная" технология.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 24 мар 2019, 23:24 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Несколько дней в раздумьях: как же правильно измерять ADC?
Наблюдаю такой эффект работы схемы на высокой частоте: момент начала считывания ADC (передний фронт синего сигнала) съезжает вместе с ростом частоты синусоидального сигнала.
Для простоты взял по 3 отсчета DAC на четверть периода.
Синий сигнал вывожу с того же пина и тем же таймером, на котором буду считывать ADC (чтобы максимально приблизить к реальной ситуации).
Таймер TIM4 пинает DAC, таймер TIM4 является прескалером TIM3 (slave).

Получается, момент считывания ADC надо подбирать в зависимости от частоты :(


Вложения:
DS0002.PNG
DS0002.PNG [ 11.3 Кб | Просмотров: 759 ]
DS0003.PNG
DS0003.PNG [ 17.1 Кб | Просмотров: 759 ]
DS0004.PNG
DS0004.PNG [ 18.7 Кб | Просмотров: 759 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 25 мар 2019, 00:11 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Если вы считаете множество "фаз", то начальное значение угла значения иметь не будут. Вы можете даже переставить sin и cos местами, это не существенно. ВажнО лишь то, что "V" и "I" должно сниматься одинаковым способом, с одной и той-же (любой) фазой.
К слову, форма сигнала на 1 картинке в_принципе неприемлема. На 2 - сойдет, на 3 - нормально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 25 мар 2019, 00:20 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
начальное значение угла значения иметь не будут.


Но, тогда значение напряжения V при угле R будет умножаться не на cos(R) или sin(R).
А на cos(что-то там) и на sin(что-то там).

P.S.
Правильно вас понял, что идеальные условия для считывания напряжений - это когда мы запустили
оба DMA (для вывода в DAC) и для считывания из ADC (в dual mode) и МК отправили спать?
Проснемся по таймеру, вырубим DMAхи и посчитаем результат, так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 25 мар 2019, 00:30 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
osetroff писал(а):
u37 писал(а):
начальное значение угла значения иметь не будут.


Но, тогда значение напряжения V при угле R будет умножаться не на cos(R) или sin(R).
А на cos(что-то там) и на sin(что-то там).

u37 писал(а):
Вы можете даже переставить sin и cos местами, это не существенно. ВажнО лишь то, что "V" и "I" должно сниматься одинаковым способом, с одной и той-же (любой) фазой.


Цитата:
Правильно вас понял, что идеальные условия для считывания напряжений - это когда мы запустили
оба DMA (для вывода в DAC) и для считывания из ADC (в dual mode) и МК отправили спать?
Проснемся по таймеру, вырубим DMAхи и посчитаем результат, так?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 25 мар 2019, 00:58 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
начальное значение угла значения иметь не будут.


Понял, благодарю.
Как отлажу - пойду глубже учить мат.часть.

u37 писал(а):
Проснетесь по прерыванию DMA1channel1 от конца оцифровки.


Запустились|заснули|прогрев|годные данные|проснулись|остановили|расчет.
Если по прерыванию DMA1channel1, то в буфере данные и с прогревом и годные будут - буфер нужно большой.
Возможно, по таймеру проснуться - не так уж плохо.
В одном периоде только данные будут новые и старые.
Если DMA сохраняет counter, можно рассчитать "плохой " период и его не считать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 25 мар 2019, 01:29 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Запустите два раза, без пауз между ними, "первый" под нож.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 28 мар 2019, 01:05 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
Программа работает.
Считывает хорошо (по значениям ADC1 и ADC2 в excel строятся красивые синусоиды в точке A и B).

Однако, почему при, например, 36 точках на период в DAC имею 44 точки на период на графике ADC1?
То есть, при частоте в 100кГц на выходе DAC при прохлждении по схеме, в точке A имеем уже меньшую частоту?

Тогда как же определять количество точек на период?
Склоняюсь к программному анализу значений ADC1 и ADC2 для анализа min и max значений для расчета количества точек на период.
Мыслю верно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 28 мар 2019, 01:35 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
Приведите частоту DAC и ADC (семплирования). И частоту тестового сигнала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 28 мар 2019, 15:00 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
Приведите частоту DAC и ADC (семплирования). И частоту тестового сигнала.


С частотой, вроде, разобрался - количество точек на период DAC должно быть кратно частоте синуса.
Иначе, частота слегка уплывает.

Уже сколько мучаюсь с ADC.
Вроде, все просто и все работает.
Но, каждый раз не так, как ожидаю )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 28 мар 2019, 20:52 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6307
"Сплошная оцифровка" даст немереный джиттер. IMHO

По поводу алгоритма "+1" - у вас явная асимметрия сигнала, да еще и с насыщением. Так быть не может. При взоимодействии двух "синусов" всегда получается "синус" (по форме).
Вот еще что - корректность методологии проверяется на SMP (время захвата). Если изменение "Sampling time" приводит к качественному изменению данных, то это БЕДА.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RLC-метр из Г и палок
СообщениеДобавлено: 28 мар 2019, 22:42 
Заглядывает иногда

Зарегистрирован: 18 дек 2015, 23:39
Сообщения: 192
u37 писал(а):
"Сплошная оцифровка" даст немереный джиттер. IMHO


Ясно.

u37 писал(а):
По поводу алгоритма "+1" - у вас явная асимметрия сигнала, да еще и с насыщением. Так быть не может. При взоимодействии двух "синусов" всегда получается "синус" (по форме).


На графике "+1" красный - в точке B, как раз синус, читается ADC2.
Синий - в точке A, читается ADC1.
Код работает как задумано:
TIM4->DAC->DMA2.
TIM3 (для него TIM4 prescaler) с ARR=шаг для оцифровки ADC12 -> DMA1.
Почему такое искажение при чтении - не понимаю.

Красивый вариант получается в варианте с DUAL = 01001: Alternate trigger mode only,
когда считывание происходит без триггера (триггер я не настроил, хотя так по документации нельзя) - график ровный.

u37 писал(а):
Вот еще что - корректность методологии проверяется на SMP (время захвата). Если изменение "Sampling time" приводит к качественному изменению данных, то это БЕДА.


Извините, не понимаю ход ваших мыслей.

Мы имеем синусоиду в точке A и в точке B.
Осциллограф и ADC (в режиме DUAL = 01001) определенно показывают, что сигналы правильные, схема работает.
Технические вещи: DAC, ADC in dual mode, DMA - работают.
Математику вы описали.
Проблема во мне, т.к. вы объясняете, что синхронизация не нужна, а мне трудно это принять )
Кажется, что именно без синхронизации и будет джиттер.
Я упирался в первый вариант алгоритма, чтобы использовать слейв таймер на таймере-мастере, обслуживающем DAC.
Не получается.
Теперь попробую независимым таймером считывать и умножать напряжения на cos и sin неизвестного угла )


Show Непричесаный код для шаг+1


Вложения:
Комментарий к файлу: вариант с DUAL = 01001. Хотел бы я себе такой синус )
no step2.png
no step2.png [ 68.47 Кб | Просмотров: 623 ]
Комментарий к файлу: Искаженный синус в точке A. Шаг период+1
step1.png
step1.png [ 44.47 Кб | Просмотров: 623 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 112 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB