Перейти к содержанию
    

Добрый день!

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

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

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

Screenshot_20230823_190451.thumb.png.d764f401a99385ab49aa68fb6eef3c40.png

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Mathematica, LeastSquaresFilterKernel

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

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

image.thumb.png.30da55f02c3a16821f7e4cc1dd374a7e.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, _pv said:

Mathematica, LeastSquaresFilterKernel

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, C2000 said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, des00 said:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, C2000 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, des00 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, aBoomest said:

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

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

8 hours ago, aBoomest said:

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

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

8 hours ago, aBoomest said:

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 фильтрами на каждую гармонику

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, aBoomest said:

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

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

14 hours ago, aBoomest said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...