Jump to content
    

Коррекция АЧХ

Добрый день!

Есть задача скорректировать АЧХ, входных цепей+ внутренний фильтр АЦП.

Т.е. на входе RC цепь к ней добавляется еще низкочастотный фильтр АЦП, в итоге имеем завал АЧХ примерно до 3ДБ.

Нужно расчитать что то подобное (чтобы итоговая АЧХ была примерно константной во всём частотном диапазоне):

Screenshot_20230823_190451.thumb.png.d764f401a99385ab49aa68fb6eef3c40.png

Можно долго мучаться подбирая нужные параметры и перебирая сотни вариантов, но возможно есть способ по известной АЧХ расчитать её "зеркальное" отображение?

Если ещё и фазу можно скорректировать чтобы линейной была, то вообще прекрасно было бы, но фазу хотя бы не трогать - т.е. FIR фильтр

Share this post


Link to post
Share on other sites

в матлабе синтез фильтра по точкам не подойдет?

Share this post


Link to post
Share on other sites

Дома Linux, на работе Matlab не доступен. Нет ли аналогов?

pyfdax такого функционала не имеет. Думаю в питоне есть что то подобное, нужно поискать

Share this post


Link to post
Share on other sites

Mathematica, LeastSquaresFilterKernel

рандомно натыкал мышкой в картинку графика чтобы точки получить,

h - FIR коэффициенты для длины 3, 5, 7, 9, если с нормированием частоты нигде не ошибся.

image.thumb.png.30da55f02c3a16821f7e4cc1dd374a7e.png

 

Share this post


Link to post
Share on other sites

23 hours ago, _pv said:

Mathematica, LeastSquaresFilterKernel

рандомно натыкал мышкой в картинку графика чтобы точки получить,

 

С амплитудой разобрался. Питон нормально синтезирует по точкам.

Share this post


Link to post
Share on other sites

Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта?

Думал использовать FFT, взять буфер на 4096 сэмплов и в python всё рассчитать. Но при моделировании, на сигналах синтезированных в том же python-е понял что не так всё просто, если в буфер укладывается не строго целое количество периодов сигнала.

При добавлении даже одного лишнего сэмпла на 4096, получил ошибку фазы 3-ей гармоники примерно в 2 градуса, что довольно много. Амплитуда тоже уплыла где то на 0.4%. Но если с амплитудой помогает окно Хэмминга, то вот от ошибки измерения фазы избавиться не удаётся.

Собственно вопрос, есть ли какой то алгоритм, позволяющий точно определить ФЧХ по преобразованию Фурье?

Share this post


Link to post
Share on other sites

20 minutes ago, C2000 said:

Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта?

так а может быть вам просто эквалайзировать сие? поставить адаптивный эквалайзер, прогнать тестовые сигналы, сохранить коэффициенты? и без всяких оценок и прочего.

ЗЫ. А на синусе нельзя снять АЧХ тракта?

Share this post


Link to post
Share on other sites

1 hour ago, des00 said:

так а может быть вам просто эквалайзировать сие? поставить адаптивный эквалайзер, прогнать тестовые сигналы, сохранить коэффициенты? и без всяких оценок и прочего.

ЗЫ. А на синусе нельзя снять АЧХ тракта?

Есть возможность только основную частоту 50Гц + гармоника (особенность генератора тока, т.к. АЧХ нужно снять вместе с трансформатором тока, то лабораторный генератор не подойдёт), так можно пройтись по всем гармоникам.

Опять же если подать чистый синус - то относительно чего мерить фазу? Нужно как раз таки измерить фазовый сдвиг на всех гармониках относительно основной частоты, т.к. на этой частоте прибор калибруется(фаза каналов относительно друг друга) - соответственно сдвиг фазы на 50Гц можно принять за 0.

Share this post


Link to post
Share on other sites

Ресемплинг может помочь?

Share this post


Link to post
Share on other sites

12 hours ago, C2000 said:

Ресемплинг может помочь?

эмм, вы бы описали нормально задачу которую вам нужно решить. Потом все ваши темы можно слить в одну и там народ посоветует что нить)

Share this post


Link to post
Share on other sites

3 hours ago, des00 said:

эмм, вы бы описали нормально задачу которую вам нужно решить. Потом все ваши темы можно слить в одну и там народ посоветует что нить)

Это разные темы. Задача - определить АЧХ и ФЧХ измерительного канала. Т.е. амплитуду и фазу гармоник относительно основной частоты 50Гц

Share this post


Link to post
Share on other sites

On 8/28/2023 at 10:27 AM, C2000 said:

Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта?

Думал использовать FFT, взять буфер на 4096 сэмплов и в python всё рассчитать. Но при моделировании, на сигналах синтезированных в том же python-е понял что не так всё просто, если в буфер укладывается не строго целое количество периодов сигнала.

При добавлении даже одного лишнего сэмпла на 4096, получил ошибку фазы 3-ей гармоники примерно в 2 градуса, что довольно много. Амплитуда тоже уплыла где то на 0.4%. Но если с амплитудой помогает окно Хэмминга, то вот от ошибки измерения фазы избавиться не удаётся.

Собственно вопрос, есть ли какой то алгоритм, позволяющий точно определить ФЧХ по преобразованию Фурье?

Вы бы описали конкретно, Вам не зря про это говорили.

1. Алгоритм вроде как такой: у вас есть параметры схемы. По ним рассчитываете АФЧХ. Исходя из желаемой суммарной АФЧХ, добавляете звено.
2. На счет фазы не совсем ясно. Никогда не подавал две частоты при снятии частотных характеристик. Всегда подавалась одна. Для чего мудрить? Как вы вобще информацию вытаскиваете если на входе сигнал нескольких частот? Даже если как-то, то точность же этого всего очень плохая? Или я чего-то не понимаю?
3. Про 4096 я что-то не допонял, у вас же АФЧХ какого-то устройства. Для чего вы БПФ сигналов деалете? Проверка какая-то просто?

Edited by aBoomest

Share this post


Link to post
Share on other sites

8 hours ago, aBoomest said:

Никогда не подавал две частоты при снятии частотных характеристик. Всегда подавалась одна.

Как по одной вы ФЧХ расчитываете, относительно чего?

8 hours ago, aBoomest said:

Как вы вобще информацию вытаскиваете если на входе сигнал нескольких частот?

На выходе интересует RMS (здесь ФЧХ значения не имеет) как одного канала, так и среднее значение COS и SIN произведения двух каналов (а вот здесь от фазы всё сильно зависит).

8 hours ago, aBoomest said:

Про 4096 я что-то не допонял

 

Накапливаю на МК буфер реальных данных с АЦП в 4096 отсчётов. Затем его на ПК анализирую. АФЧХ нужно снять один раз (затем скорректировать програмно), это задача не для риалтайма.

Впринципе вопрос решён FIR фильтрами на каждую гармонику, далее по переходу через ноль, точность в 0.01гр получилась, что вполне удовлетварительно. Фурье не даёт точного вычислеия фазы на реальном сигнале, только на идеальных что то точное получается. Даже после ресемплинга.

Share this post


Link to post
Share on other sites

4 hours ago, C2000 said:

Как по одной вы ФЧХ расчитываете, относительно чего?

Относительно входного сигнала.

4 hours ago, C2000 said:

На выходе интересует RMS (здесь ФЧХ значения не имеет) как одного канала, так и среднее значение COS и SIN произведения двух каналов (а вот здесь от фазы всё сильно зависит).

Оно в случае подачи двух частот может показать правильное (нужное для построения афчх) значение?

4 hours ago, C2000 said:

АФЧХ нужно снять один раз (затем скорректировать програмно), это задача не для риалтайма.

Отлично.

4 hours ago, C2000 said:

Фурье не даёт точного вычислеия фазы на реальном сигнале

Это очень зыбкая фраза на мой субъективный взгляд. (это касательно просто фразы самой по себе)
На счет как это к вашему вопросу относится, все равно до конца не пойму. Вы писали

4 hours ago, C2000 said:

АФЧХ нужно снять один раз (затем скорректировать програмно), это задача не для риалтайма.

Так вы ее измерили. Исходя из желаемой АФЧХ добавили корректирующее звено.

4 hours ago, C2000 said:

Впринципе вопрос решён FIR фильтрами на каждую гармонику

Так как будто оптимально вышло? А по времени как? Сколько фильтров? Какой длины? (отн.фильтруемой частоты)

Share this post


Link to post
Share on other sites

14 hours ago, aBoomest said:

Относительно входного сигнала.

Это как? Никаких синхроимпульсов в железе не предусмотрено. Как Вы входной сигнал сравните с тем что в МК после прохождения через весь измерительный канал

14 hours ago, aBoomest said:

Оно в случае подачи двух частот может показать правильное (нужное для построения афчх) значение?

Почему нет? Если Вы изначально знаете какая фаза у гармоники, то выделяете основную частоту и гармонику. Далее смотрите время между переходом через ноль на двух частотах, отнимаете изначально заданный угол и получаете фазу на данной частоте относительно основной частоты

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...