Что мерить, чем мерить, как мерить. И, естественно - зачем мерить...

При поддержке компании ПРИСТ


Ответить

Re: Помогите разобратся в теории

Чт ноя 24, 2022 17:29:27

Это реализация КИХ (FIR) буфера. Для него может не хватить памяти или производительности. Обычно в таких случаях применяется БИХ (IIR) накопление. Рекурсивный фильтр. В простейшем случае - экспоненциальный фильтр.
Ну и в представленном коде нет выпрямления. Для униполярного АЦП так работать не будет.

Добавлено after 1 hour 31 minute 52 seconds:
{
Последний вопрос, сигнал на ножку АЦП подавать с операционного усилителя повторителя, вообще что делать с отрицательной полу волной?

Никаких отрицательных полуволн на входе АЦП быть не должно. Сигнал нужно смещать на середину ДД АЦП. А при обработке приводить смещенный массив к знаковой форме

Re: Помогите разобратся в теории

Чт ноя 24, 2022 23:09:02

Что за такое выпрямление, весь вечер в инете лазил ничего не нашел, всю голову поломал себе. Зато нашел
https://youtu.be/U2gvvNFcQ04.

Re: Помогите разобратся в теории

Пт ноя 25, 2022 04:20:49

Я же вам написал выше. Это нахождение модуля. Но для вычисления среднеквадратичного значения можно модуль и не вычислять. Квадрат отрицательного числа и так будет положителен. Про выпрямление я сказал лишь потому, что математика языка программирования должна корректно умножать знаковые типы переменных. Так на АСМе ряда платформ МК нет знакового умножения.
Важно привести однополярный сигнал с АЦП к знаковой форме.
То есть сдвинутый на 1,65 Вольта на входе АЦП нужно вернуть обратно на ноль математически, вычитая 2047 из каждого получаемого значения массива.
А если совсем строго, то нужно еще и оффсет (сдвиг нуля) схемы и АЦП вызванный естественными технологическими разбросами компенсировать. Либо однократно при включении, а лучше следящим методом.
Иначе будет возникать погрешность результата вызванная этим оффсетом.
ЗЫ. Видео правильное, но только надо понимать, что для работы с одним периодом нужно вычислять этот самый период. При накоплении значительного количества периодов краевой эффект неточного интегрирования по периоду размывается на число периодов. При задании точности можно посчитать эту краевую погрешность для выбранной длины интегрируемого буфера.
Кстати, синхронизировать с началом периода интеграл не нужно. Вычисление суммы этого не требует.

Re: Помогите разобратся в теории

Пт ноя 25, 2022 13:17:05

ошибка номер 1 - незачем мне высчитывать среднеквадратичное напряжение, если калиброванный генератор и так его выдает. Необходимо получить максимальное значение из списка.
ошибка номер 2 - реально esp32 измеряет до 3.16 вольт. измеренное напряжение нужно пропустить через делитель на два. Потому, что напряжение смещения, плюс напряжение измеряемого сигнала, превышает предел измерения АЦП. Пропустить через делитель на 2.

Re: Помогите разобратся в теории

Пт ноя 25, 2022 14:03:23

Необходимо получить максимальное значение из списка.

Найти среднеквадратичное значение быстрее В РАЗЫ, нежели найти максимальное значение из списка. :wink:
Все сортировки в вычислительных алгоритмах - беда бедовая - самые прожорливые.
Про необходимость фильтрации, патамушта АЦП в МК шумят МИНИМУМ на 2...3 младших разряда я уже молчу, а вычисление среднеквадратичного значения - это классическая НЧ фильтрация. Так же гарантированно, ПОМИМО ШУМОВ, будет наблюдаться интерференция отсчетов относительно периода сигнала, что вызовет внешне хаотичное (на самом деле периодическое) дрожание значения максимальных отсчетов.
Это ВАША ошибка номер 1.
реально esp32 измеряет до 3.16 вольт. измеренное напряжение нужно пропустить через делитель на два. Потому, что напряжение смещения, плюс напряжение измеряемого сигнала, превышает предел измерения АЦП. Пропустить через делитель на 2.

Бессмысленный набор слов. Перечитал четыре раза и ничего не понял.
Подавать знакопеременный сигнал на АЦП нельзя. Стандартный способ обработки переменного напряжения - сдвинуть это напряжение на половину динамического диапазона АЦП. Дураку понятно, что амплитуда входного напряжения не должна превышать эту самую половину динамического диапазона. Какое еще "деление на два"? Вы вообще о чем? Входной сигнал ПО ЛЮБОМУ должен быть буферизован на ОУ. На этом ОУ можно сделать ЛЮБОЕ масштабирование сигнала. Никто не привязывается к идиотским библиотекам, которые пересчитывают код АЦП в микровольты. Тем более, что точность питания МК, которое и является опорой АЦП НИКАКАЯ. То есть необходимо предусмотреть КАЛИБРОВКУ усиления и калибровку оффсета (чтобы минимизировать потери ДД АЦП).
Но это все даже не главное. Главное состоит в том, что при получении данных с АЦП выраженных в микровольтах, код будет вызывать процедуру пересчета данных с АЦП в микровольты НА КАЖДОЕ ПОЛУЧЕННОЕ ЗНАЧЕНИЕ. Вместо того, чтобы сделать это ОДИН РАЗ В КОНЦЕ ВСЕХ ВЫЧИСЛЕНИЙ... :music: :music: :music:
Это ВАША ошибка номер 2.
Мусьё знает толк в извращениях... :tea:
И таких ошибок у вас будет много... :))) :tea:
Кстати, еще надо посмотреть умеет ли микропитон работать с реальным временем... Ибо предмет разговора ТРЕБУЕТ режим реального времени. То есть аппаратный запуск АЦП (желательно от таймера) и получение данных либо через ДМА (если он есть), либо в прерывании...

Re: Помогите разобратся в теории

Пт ноя 25, 2022 14:56:21

Да я пишу о своих ошибках.
Библиотека, которая пересчитывает значение попугаев в микровольты не нужна. Единственное что делает цикл в котором считывается значение с АЦП это добавляет его в список.
Второе устанавливает задержку 20мкс.
После смещения сигнала 1,6 вольтами, плюс полезный сигнал 1,6 вольта уже выходит за предел измерения АЦП 3.16 вольт. Поэтому предположил использовать резистивный делитель на 2.
Микропайтон скорее всего не умеет работать в режиме реального времени. Поэтому первая идея была хороша, просто измерять уровень напряжения с логарифмического детектора.

Только я никак не пойму, если мой генератор калиброванный, то он выдает уровень 0 дб а в вольтах это 1 RMS, то зачем мне в измерителе считать среднеквадратичное напряжение,
получается я посчитаю среднеквадратичное напряжение от среднеквадратичного?

Re: Помогите разобратся в теории

Пт ноя 25, 2022 15:15:48

Второе устанавливает задержку 20мкс.

:shock: А вы с какой частотой сигнала собрались работать?
После смещения сигнала 1,6 вольтами, плюс полезный сигнал 1,6 вольта уже выходит за предел измерения АЦП 3.16 вольт. Поэтому предположил использовать резистивный делитель на 2.

Забудьте о конкретном напряжении на входе. Это напряжение ПОДГОНЯЮТ по ДД АЦП, рассчитывая на какой то максимальный входной сигнал. Поэтому там будет какой то коэффициент передачи схемы оффсета и буфера. Какой надо, такой и будет. Осциллографом посмотрели на амплитуду и уложили ее в 3,3 Вольта динамики АЦП.
Микропайтон скорее всего не умеет работать в режиме реального времени. Поэтому первая идея была хороша, просто измерять уровень напряжения с логарифмического детектора.
А перейти на Си не судьба?
К слову, оная AD8307 стоит некоторых денег. И они не символические. Но тут кому как.
Только я никак не пойму, если мой генератор калиброванный, то он выдает уровень 0 дб а в вольтах это 1 RMS, то зачем мне в измерителе считать среднеквадратичное напряжение

Так, следите за ходом моей мысли...
Есть генератор, который калиброван в средних квадратах или логарифмах, но от средних квадратов.
Вы его включаете на вход фидера, а потом сломя голову мчитесь ко второму его концу и там измеряете НЕЧТО обсуждаемой приблудой.
Вопрос. А что вы хотите узнать? Ну наверное потери в линии. Или нет?
Ежели потери, то приблуда должна измерять:
1. напряжение.
2. среднеквадратичное либо в линейном, либо в логарифмическом масштабе.
Тогда вы в линейном масштабе делите выходной сигнал на входной и получаете потери линии в линейном масштабе.
Либо вычитаете из логарифмических показаний приблуды логарифмический уровень генератора.
Что не так?

Re: Помогите разобратся в теории

Пт ноя 25, 2022 15:56:14

У меня паралельно линии стоит нагрузка 600 ом обычный резистор. Потом разделительный конденсатор и повторитель сигнала на ОУ NE5532, со смещением 1.6 вольт.
И вот на выход ОУ подключена ножка АЦП , во время измерения и вычисления среднеквадратичного значения я вижу заниженные показания -40% примерно, когда пересчитываю их в Дб. А если выбираю из массива измерений максимальное значение амплитуды, то измерение точное, ну плюс минус 5 %.
Может в моем понимании схемы что то не так, ну допустим разделительный конденсатор обладает реактивным сопротивлением и сажает сигнал.
После попадания выборок в массив вычитаю 1.6 вольт от каждого элемента массива.

Дошло, что калиброванный генератор выдает 1 вольт RMS, но амплитудное значение напряжения конечно же выше.
А откуда взялась эта формула для логарифмического детектора
Результат в дБ= -60+((АЦП-869)/31)?

Re: Помогите разобратся в теории

Сб ноя 26, 2022 21:47:40

Диапазоны измерений АЦП ESP32
Если посмотреть техническую документацию на ESP32, то в ней указано, что при напряжении VDD_A = 3.3V:

0dB ослабление (ADC_ATTEN_DB_0) дает диапазон до 1.1V.
2.5dB ослабление (ADC_ATTEN_DB_2_5) дает диапазон до 1.5V.
6dB ослабление (ADC_ATTEN_DB_6) дает диапазон до 2.2V.
11dB ослабление (ADC_ATTEN_DB_11) дает диапазон до 3.9V.
По факту, если при ADC_ATTEN_DB_11 замерять напряжение, то уже при величине порядка 2.6 V на 12-ти битах АЦП начинает выдавать предельные 4095.

Из-за характеристики АЦП наиболее точные результаты измерений получаются в более узком диапазоне, чем заявлено в документации. На начальном и конечном участке более или менее линейная характеристика АЦП изгибается и становится более пологой, поэтому измерения очень неточные. В документации указаны рекомендуемые диапазоны измерений:

0dB ослабление(ADC_ATTEN_DB_0) — от 100 до 950mV.
2.5dB ослабление (ADC_ATTEN_DB_2_5) от 100 до 1250mV.
6dB ослабление (ADC_ATTEN_DB_6) от 150 до 1750mV.
11dB ослабление (ADC_ATTEN_DB_11) от 150 до 2450mV.
В документации есть примечание, что при ослаблении в 11dB максимальное напряжение ограничено VDD_A, а не указанным ранее 3.9 V.

Re: Помогите разобратся в теории

Сб ноя 26, 2022 22:17:12

Если посмотреть техническую документацию на ESP32, то в ней указано

И что это меняет? Тем более, нужно не привязываться к абсолютным значениям, а укладывать сигнал в границы динамического диапазона обозначенного даташитом.
Хотя по нынешним меркам, АЦП у Espressif - эпичное унылое гуано. Приведенные в даташите величины говорят нам о том, что китаезы напихали между пинами и УВХ усилитель, что и привело к безумному и безальтернативному дроп ауту. В нормальных архитектурах если усилитель и имеется, то он может быть подключен к УВХ по желанию.
Ответить