C2000 0 August 23 Posted August 23 · Report post Добрый день! Есть задача скорректировать АЧХ, входных цепей+ внутренний фильтр АЦП. Т.е. на входе RC цепь к ней добавляется еще низкочастотный фильтр АЦП, в итоге имеем завал АЧХ примерно до 3ДБ. Нужно расчитать что то подобное (чтобы итоговая АЧХ была примерно константной во всём частотном диапазоне): Можно долго мучаться подбирая нужные параметры и перебирая сотни вариантов, но возможно есть способ по известной АЧХ расчитать её "зеркальное" отображение? Если ещё и фазу можно скорректировать чтобы линейной была, то вообще прекрасно было бы, но фазу хотя бы не трогать - т.е. FIR фильтр Quote Share this post Link to post Share on other sites More sharing options...
des00 19 August 23 Posted August 23 · Report post в матлабе синтез фильтра по точкам не подойдет? Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 23 Posted August 23 · Report post Дома Linux, на работе Matlab не доступен. Нет ли аналогов? pyfdax такого функционала не имеет. Думаю в питоне есть что то подобное, нужно поискать Quote Share this post Link to post Share on other sites More sharing options...
_pv 30 August 23 Posted August 23 · Report post Mathematica, LeastSquaresFilterKernel рандомно натыкал мышкой в картинку графика чтобы точки получить, h - FIR коэффициенты для длины 3, 5, 7, 9, если с нормированием частоты нигде не ошибся. Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 24 Posted August 24 · Report post 23 hours ago, _pv said: Mathematica, LeastSquaresFilterKernel рандомно натыкал мышкой в картинку графика чтобы точки получить, С амплитудой разобрался. Питон нормально синтезирует по точкам. Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 28 Posted August 28 · Report post Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта? Думал использовать FFT, взять буфер на 4096 сэмплов и в python всё рассчитать. Но при моделировании, на сигналах синтезированных в том же python-е понял что не так всё просто, если в буфер укладывается не строго целое количество периодов сигнала. При добавлении даже одного лишнего сэмпла на 4096, получил ошибку фазы 3-ей гармоники примерно в 2 градуса, что довольно много. Амплитуда тоже уплыла где то на 0.4%. Но если с амплитудой помогает окно Хэмминга, то вот от ошибки измерения фазы избавиться не удаётся. Собственно вопрос, есть ли какой то алгоритм, позволяющий точно определить ФЧХ по преобразованию Фурье? Quote Share this post Link to post Share on other sites More sharing options...
des00 19 August 28 Posted August 28 · Report post 20 minutes ago, C2000 said: Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта? так а может быть вам просто эквалайзировать сие? поставить адаптивный эквалайзер, прогнать тестовые сигналы, сохранить коэффициенты? и без всяких оценок и прочего. ЗЫ. А на синусе нельзя снять АЧХ тракта? Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 28 Posted August 28 · Report post 1 hour ago, des00 said: так а может быть вам просто эквалайзировать сие? поставить адаптивный эквалайзер, прогнать тестовые сигналы, сохранить коэффициенты? и без всяких оценок и прочего. ЗЫ. А на синусе нельзя снять АЧХ тракта? Есть возможность только основную частоту 50Гц + гармоника (особенность генератора тока, т.к. АЧХ нужно снять вместе с трансформатором тока, то лабораторный генератор не подойдёт), так можно пройтись по всем гармоникам. Опять же если подать чистый синус - то относительно чего мерить фазу? Нужно как раз таки измерить фазовый сдвиг на всех гармониках относительно основной частоты, т.к. на этой частоте прибор калибруется(фаза каналов относительно друг друга) - соответственно сдвиг фазы на 50Гц можно принять за 0. Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 28 Posted August 28 · Report post Ресемплинг может помочь? Quote Share this post Link to post Share on other sites More sharing options...
des00 19 August 29 Posted August 29 · Report post 12 hours ago, C2000 said: Ресемплинг может помочь? эмм, вы бы описали нормально задачу которую вам нужно решить. Потом все ваши темы можно слить в одну и там народ посоветует что нить) Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 29 Posted August 29 · Report post 3 hours ago, des00 said: эмм, вы бы описали нормально задачу которую вам нужно решить. Потом все ваши темы можно слить в одну и там народ посоветует что нить) Это разные темы. Задача - определить АЧХ и ФЧХ измерительного канала. Т.е. амплитуду и фазу гармоник относительно основной частоты 50Гц Quote Share this post Link to post Share on other sites More sharing options...
aBoomest 0 August 30 Posted August 30 (edited) · Report post On 8/28/2023 at 10:27 AM, C2000 said: Как скорректировать, разобрался. Но теперь возник вопрос как корректно снять изначальную характеристику измерительного тракта? Думал использовать FFT, взять буфер на 4096 сэмплов и в python всё рассчитать. Но при моделировании, на сигналах синтезированных в том же python-е понял что не так всё просто, если в буфер укладывается не строго целое количество периодов сигнала. При добавлении даже одного лишнего сэмпла на 4096, получил ошибку фазы 3-ей гармоники примерно в 2 градуса, что довольно много. Амплитуда тоже уплыла где то на 0.4%. Но если с амплитудой помогает окно Хэмминга, то вот от ошибки измерения фазы избавиться не удаётся. Собственно вопрос, есть ли какой то алгоритм, позволяющий точно определить ФЧХ по преобразованию Фурье? Вы бы описали конкретно, Вам не зря про это говорили. 1. Алгоритм вроде как такой: у вас есть параметры схемы. По ним рассчитываете АФЧХ. Исходя из желаемой суммарной АФЧХ, добавляете звено. 2. На счет фазы не совсем ясно. Никогда не подавал две частоты при снятии частотных характеристик. Всегда подавалась одна. Для чего мудрить? Как вы вобще информацию вытаскиваете если на входе сигнал нескольких частот? Даже если как-то, то точность же этого всего очень плохая? Или я чего-то не понимаю? 3. Про 4096 я что-то не допонял, у вас же АФЧХ какого-то устройства. Для чего вы БПФ сигналов деалете? Проверка какая-то просто? Edited August 30 by aBoomest Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 30 Posted August 30 · Report post 8 hours ago, aBoomest said: Никогда не подавал две частоты при снятии частотных характеристик. Всегда подавалась одна. Как по одной вы ФЧХ расчитываете, относительно чего? 8 hours ago, aBoomest said: Как вы вобще информацию вытаскиваете если на входе сигнал нескольких частот? На выходе интересует RMS (здесь ФЧХ значения не имеет) как одного канала, так и среднее значение COS и SIN произведения двух каналов (а вот здесь от фазы всё сильно зависит). 8 hours ago, aBoomest said: Про 4096 я что-то не допонял Накапливаю на МК буфер реальных данных с АЦП в 4096 отсчётов. Затем его на ПК анализирую. АФЧХ нужно снять один раз (затем скорректировать програмно), это задача не для риалтайма. Впринципе вопрос решён FIR фильтрами на каждую гармонику, далее по переходу через ноль, точность в 0.01гр получилась, что вполне удовлетварительно. Фурье не даёт точного вычислеия фазы на реальном сигнале, только на идеальных что то точное получается. Даже после ресемплинга. Quote Share this post Link to post Share on other sites More sharing options...
aBoomest 0 August 30 Posted August 30 · Report post 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 фильтрами на каждую гармонику Так как будто оптимально вышло? А по времени как? Сколько фильтров? Какой длины? (отн.фильтруемой частоты) Quote Share this post Link to post Share on other sites More sharing options...
C2000 0 August 31 Posted August 31 · Report post 14 hours ago, aBoomest said: Относительно входного сигнала. Это как? Никаких синхроимпульсов в железе не предусмотрено. Как Вы входной сигнал сравните с тем что в МК после прохождения через весь измерительный канал 14 hours ago, aBoomest said: Оно в случае подачи двух частот может показать правильное (нужное для построения афчх) значение? Почему нет? Если Вы изначально знаете какая фаза у гармоники, то выделяете основную частоту и гармонику. Далее смотрите время между переходом через ноль на двух частотах, отнимаете изначально заданный угол и получаете фазу на данной частоте относительно основной частоты Quote Share this post Link to post Share on other sites More sharing options...