реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как убрать постоянную составляющую из сигнала., Сингал 50Гц
Pat
сообщение Oct 31 2005, 11:12
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Сигнал 50 Гц сдвинут относительно нуля.
Измерение производим АЦП с частотой выборки 5000Гц.
Надо получить его же только относительно нуля.
Go to the top of the page
 
+Quote Post
moonrock
сообщение Oct 31 2005, 11:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 24-03-05
Из: Санкт-Петербург
Пользователь №: 3 661



Вам нужно до АЦП сдвинуть или уже из отсчетов убрать ПС?

Если до, то можно начать с конденсатора.
Если после, то вычисляем среднее арифметическое из какого-то кол-ва отсчетов, например за период. Полученное значение и будет равно постоянному напряжению. Ну а затем просто из каждого отсчета и вычитаем среднее значение.
Go to the top of the page
 
+Quote Post
BVU
сообщение Oct 31 2005, 11:57
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Pat @ Oct 31 2005, 15:12)
Сигнал 50 Гц сдвинут относительно нуля.
Измерение производим АЦП с частотой выборки 5000Гц.
Надо получить его же только относительно нуля.
*

Все зависит от того, когда Вам и для чего необходимо убрать постоянную составляющую сигнала.
В электронной схемотехнике это делается разделительными конденсаторами, либо используя операционный усилитель можно компенсировав смещение напряжения на входе или специальной предназначенной регулировкой добиться требуемого положения нуля на выходе (балансировка нуля).
Для обработки сигнала в нереальном времени используется вычитание значения вычисленного среднего значения , тем самым цифровой сигнал получается относительно 'квази нуля'.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Pat
сообщение Oct 31 2005, 12:30
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(moonrock @ Oct 31 2005, 14:51)
Вам нужно до АЦП сдвинуть или уже из отсчетов убрать ПС?
*

Мне надо из отсчетов убрать.
АЦП не умеет измерять отрицательные значения.
Цитата(moonrock @ Oct 31 2005, 14:51)
Если после, то вычисляем среднее арифметическое из какого-то кол-ва отсчетов, например за период. Полученное значение и будет равно постоянному напряжению. Ну а затем просто из каждого отсчета и вычитаем среднее значение.
*

Дело в том, что памяти маловато и все отсчеты хранить не получается.
Go to the top of the page
 
+Quote Post
Vic
сообщение Oct 31 2005, 14:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-11-04
Из: Санкт-Петербург
Пользователь №: 1 192



Можно не накапливать а вычитать на каждый отсчет, если уровень постоянной заранее известен, а я так понял Вам он известен и вы его сами вводите вгоняя сигнал в диапазон АЦП? Или это не так?
Go to the top of the page
 
+Quote Post
Pat
сообщение Oct 31 2005, 14:38
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(Vic @ Oct 31 2005, 17:23)
Можно не накапливать а вычитать на каждый отсчет, если уровень постоянной заранее известен, а я так понял Вам он известен и вы его сами вводите вгоняя сигнал в диапазон АЦП? Или это не так?
*

Да это так.
Уровень то известен, но он тоже не совершенен. Я ему проводил мониторинг, плавает он. Опорник на него делать не очень хочется, поэтому сдвиг формируется обычным резистивным делителем от источника питания.
Само устройство питается от бестрансформаторно блока питания с гасящим конденсатором.

Можно конечно найти среднее за предыдущий период, и его потом прикладывать к текущему.
Go to the top of the page
 
+Quote Post
VAI
сообщение Oct 31 2005, 15:01
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Уровень то известен, но он тоже не совершенен. Я ему проводил мониторинг, плавает он. Опорник на него делать не очень хочется, поэтому сдвиг формируется обычным резистивным делителем от источника питания.

Ну измеряйте еще и сдвиг, и вычитайте его.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 31 2005, 15:23
Сообщение #8


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



В алгоритмах ничего лучше вычисления среднего и не найдете. Известно же, вроде, blush.gif что вычисление нулевой гармоники спектра Фурье (пусть по быстрым алгоритмам ДПФ) фактически сводится к вычислению среднего значения за период.
Может быть применим еще какой-нибудь алгоритм коррекции ("плавания") ухода постоянного значения уровня (например по max или min значению сигнала).
Go to the top of the page
 
+Quote Post
bmf
сообщение Oct 31 2005, 15:23
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Поcмотри:
простейший HP фильтр
dc_bias - 32 bit integer
clean_sample - 16 bit integer

dc_bias += ((((int32_t) sample << 15) - dc_bias) >> 14);
clean_sample = sample - (dc_bias >> 15);

думаю поможет
Go to the top of the page
 
+Quote Post
Виктория
сообщение Oct 31 2005, 16:12
Сообщение #10


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



To bmf
А поподробнее для всех и автора темы можно? smile.gif
НР фильтр - расшифровка, чья формула, начальные условия (сколько нибудь первых отсчетов пропускаем), литературный источник.
Go to the top of the page
 
+Quote Post
bmf
сообщение Oct 31 2005, 17:32
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Цитата(bmf @ Oct 31 2005, 18:23)
    dc_bias += ((((int32_t) sample << 15) - dc_bias) >> 14);
    clean_sample = sample - (dc_bias >> 15);

примерно так

HP - high pass filter

формула для 1-го порядка:
y(n) = x(n) - x(n-1) + R * y(n-1)

"R" 0.9 .. 1
для -3dB: R = 1 - (pi*2 * frequency /samplerate)

ну а то что в выше - просто реализация что бы небыло дробного умножения

немного теории:
http://ccrma.stanford.edu/~jos/filters/
http://ccrma.stanford.edu/~jos/filters/DC_Blocker.html
Go to the top of the page
 
+Quote Post
bmf
сообщение Oct 31 2005, 17:48
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Цитата(bmf @ Oct 31 2005, 20:32)
y(n) = x(n) - x(n-1) + R * y(n-1)

может более привычный вид
1-st Order Filter of the Form:
y(n)=b0*x(n)+b1*x(n-1)+a1*y(n-1)
Go to the top of the page
 
+Quote Post
ms1
сообщение Oct 31 2005, 18:24
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 150
Регистрация: 13-10-05
Пользователь №: 9 614



Цитата(Pat @ Oct 31 2005, 17:38)
Цитата(Vic @ Oct 31 2005, 17:23)
Можно не накапливать а вычитать на каждый отсчет, если уровень постоянной заранее известен, а я так понял Вам он известен и вы его сами вводите вгоняя сигнал в диапазон АЦП? Или это не так?
*

Да это так.
Уровень то известен, но он тоже не совершенен. Я ему проводил мониторинг, плавает он. Опорник на него делать не очень хочется, поэтому сдвиг формируется обычным резистивным делителем от источника питания.
Само устройство питается от бестрансформаторно блока питания с гасящим конденсатором.

Можно конечно найти среднее за предыдущий период, и его потом прикладывать к текущему.
*



Лучше всего использовать для сдвига половину опорного напряжения самого АЦП.
В Вашем случае это невозможно в принципе?
Go to the top of the page
 
+Quote Post
Pat
сообщение Oct 31 2005, 18:57
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(ms1 @ Oct 31 2005, 21:24)
Лучше всего использовать для сдвига половину опорного напряжения самого АЦП.
В Вашем случае это невозможно в принципе?
*

Не особо хочется, там 220В через делители, без какой либо развязки.
Я думал над этим, но как то стремно питать сдвиг нуля от опроника. Источник питания более мощная вещь.

Спасибо всем сейчас пробую варианты, отчет о проделанноей работе напишу завтра
Go to the top of the page
 
+Quote Post
vm1
сообщение Oct 31 2005, 21:20
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 978



А какой у Вас АЦП?
Есть АЦП с внутренним сдвигом,
питание однополярное а вход двуполярный.
Референс внешний?
Если да, сдвигайте от него вход,
у него должен быть низкий импеданс.
Если будете использовать цифровой фильтр
по старту загружайте в сумматор
значение смещения, чтоб сократить время
выхода правильного результата.
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 1 2005, 05:39
Сообщение #16


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Цитата(bmf @ Oct 31 2005, 22:32)
Цитата(bmf @ Oct 31 2005, 18:23)
    dc_bias += ((((int32_t) sample << 15) - dc_bias) >> 14);
    clean_sample = sample - (dc_bias >> 15);

примерно так

HP - high pass filter

формула для 1-го порядка:
y(n) = x(n) - x(n-1) + R * y(n-1)

"R" 0.9 .. 1
для -3dB: R = 1 - (pi*2 * frequency /samplerate)

ну а то что в выше - просто реализация что бы небыло дробного умножения

немного теории:
http://ccrma.stanford.edu/~jos/filters/
http://ccrma.stanford.edu/~jos/filters/DC_Blocker.html
*



Спасибо. a14.gif
Красивое решение, если практическая реализация не подведет (целочисленное вычисление R, наложение шума при измерениях).
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 1 2005, 19:04
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(bmf @ Oct 31 2005, 20:32)
формула для 1-го порядка:
y(n) = x(n) - x(n-1) + R * y(n-1)

"R" 0.9 .. 1
для -3dB: R = 1 - (pi*2 * frequency /samplerate)

ну а то что в выше - просто реализация что бы небыло дробного умножения
По условию задачи более корректно будет сначала произвести оценку среднего значения (хотя бы в первом порядке):
E(n)=(1-R)*x(n) + R*E(n-1), где 0,9<R<1, ____(1.1)
а затем вычесть ее из текущего значения:
y(n)=x(n)-E(n).___________________________(1.2)
Реализовать можно подобно тому, как Вы и предложили.
//-------------
Вообще-то при таком соотношении частот выборки и измеряемого сигнала R нужно выбирать близким к 1, поэтому, при реализации моего предложения могут быть проблемы с переполнением, а Вашего - неустойчивость работы фильтра. Стоит подумать о системе 2-го порядка.

А еще лучше сначала, как и предлагали, усреднять по периоду (благо он известен):
e(k)=sum( x(n, k) )/N, _____________________(2.1)
где k-номер периода (k=0,1,2,3...), N - количество отсчетов на период (=100), n - номер отсчета в периоде, причем n=0...N-1).
В памяти держать ничего не нужно, кроме текущей суммы по периоду, которую при поступлении N отсчетов (100) нужно поделить на N (ничего не поделать!).
Далее:
E(k+1)=(1-R)*e(k) + R*E(k), где 0,9<R<1, ____(2.2)
и
y(n, k+1)=x(n, k+1)-E(k+1). _______________(2.3)
Здесь R можно выбрать не очень близким к 1, при этом проблема переполнения отпадет.
В качестве Е(1) нужно взять
Е(1)=е(0). _____________________________(2.4)

Сообщение отредактировал Stanislav - Nov 2 2005, 13:24


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 2 2005, 10:27
Сообщение #18


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Так это же совсем другой алгоритм (или я ничего не понимаю sad.gif). У Станислава - нахождение среднего значения за период (фактически постоянной составляющей), последующее сглаживание среднего с помощью экспоненциального фильтра и вычитание из сигнала. А Bmf предлагает алгоритм фильтра, который сам убирает постоянную составляющую.

Другое дело, что при практической реализации в системе измерения я бы остановилась на первом алгоритме (нахождения среднего значения за период). Или задумалась только об алгоритмической коррекции известного значения постоянного сдвига АЦП с учетом его ухода.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 2 2005, 13:05
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Vic1 @ Nov 2 2005, 13:27)
Так это же совсем другой алгоритм (или я ничего не понимаю sad.gif). У Станислава - нахождение среднего значения за период (фактически постоянной составляющей), последующее сглаживание среднего с помощью экспоненциального фильтра и вычитание из сигнала.  А Bmf предлагает алгоритм фильтра, который сам убирает постоянную составляющую.
Да, алгоритмы разные (у bmf - ФВЧ, у меня - адаптивная система). Но предложенный мной, как мне кажется, более корректен в смысле постановки задачи (убрать мат. ожидание - постоянную составляющую). Для этого сначала производится ее оценка адаптивной системой первого порядка (либо с поступлением каждого отсчета (1.1), либо с поступлением нового периода (2.2) ), а потом вычисляется разность т.е., "убирается" постоянная составляющая.
bmf предложил для решения этой задачи использовать БИХ-фильтр ВЧ 1-го порядка, который тоже "убирает" постоянную составляющую.
Цитата
Другое дело, что при практической реализации в системе измерения я бы остановилась на первом алгоритме (нахождения среднего значения за период).  Или задумалась только об алгоритмической  коррекции известного значения постоянного сдвига АЦП с учетом его ухода.
Целесообразность применения вышеуказанных подходов определяется в каждом конкретном случае специфическими требованиями, предъявляемыми к системе обработки информации. Так, например, подход bmf имеет преимущество - простота реализации. Недостаток - большие частотные искажения сигнала в области НЧ. Мой подход (1.1 - 1.2) позволяет решить задачу буквально, при этом частотные искажения будут гораздо меньше. Недостаток - необходимость иметь большое число разрядов при вычислениях, иначе могут быть переполнения (в целочисленной системе). Подход (2.1 - 2.4) избавляет от переполнений, однако вычислительно несколько более сложен (кстати, его можно оптимизировать: деление в 2.1 не производить, а в 2.2 использовать константу (1-R)/N вместо 1-R).


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 2 2005, 14:41
Сообщение #20


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



To Stanislav
Спасибо! С пунктами просто замечательно smile.gif


Все таки вопрос. Известно же, что измерения не идеальны и канал измерения имеет некоторую погрешность (в идеальном варианте - дребезг единички АЦП, реально - другой порядок). С этой точки зрения какой алгоритм предпочтительней? Заранее, еще одно спасибо ( a14.gif )
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 2 2005, 15:26
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Vic1 @ Nov 2 2005, 17:41)
To Stanislav
Спасибо! С пунктами просто замечательно smile.gif


Все таки вопрос. Известно же, что измерения не идеальны и канал измерения имеет некоторую погрешность (в идеальном  варианте - дребезг единички АЦП, реально - другой порядок). С этой точки зрения какой алгоритм предпочтительней? Заранее, еще одно спасибо ( a14.gif )
Не совсем понятно, что подразумевается под идеальным вариантом и другим порядком, но скажу несколько слов о дискретизации. Если в измерительная система имеет источник шума с мат. ожиданием Eш=0 и эффективной амплитудой Uш>~1ЕМР (не строго, более точная модель должна учитывать статистику бОльших порядков), получим несмещенную оценку измеряемой величины. Если источника шума нет, оценка величины может быть смещена относительно истинного значения (рассмотрите вариант нешумящего АЦП, измеряющего постоянное или медленно меняющееся напряжение - ошибка может достигать +/- 0,5 ЕМР).


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 2 2005, 15:42
Сообщение #22


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Я имела в виду, что помимо погрешности дискретизации в канале могут быть погрешности измерений первичных преобразователей или измер. цепей до АЦП (которые тоже шумят, но с амплитудой 10 единиц и неизвестным мат. ожиданием). Хотя автора темы давно нет и у него таких проблем тоже нет.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 2 2005, 17:08
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Vic1 @ Nov 2 2005, 18:42)
Я имела в виду, что помимо погрешности дискретизации в канале могут быть погрешности измерений первичных преобразователей или измер. цепей до АЦП (которые тоже шумят, но с амплитудой 10 единиц и неизвестным мат. ожиданием). Хотя автора темы давно нет и у него таких проблем тоже нет.
Приведенные мной алгоритмы в данном случае предназначены для оценки мат. ожидания случайной величины - постоянной составляющей сигнала после А/Ц преобразования. О полезном сигнале же априори было известно, что он имеет мат. ожидание, равное нулю.
Естественно, если есть систематические погрешности преобразования датчиков, получим смещенные оценки мат. ожидания измеряемых величин, но несмещенные оценки мат. ожидания показаний датчиков (при идеальном АЦП). Для преодоления этих трудностей многие измерительные АЦП имеют встроенную функцию калибровки как себя самих (self-calibration), так и системы в целом (system calibration).
Вообще-то оценка и коррекция погрешностей достойна отдельной темы.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
mbc
сообщение Nov 30 2005, 19:00
Сообщение #24





Группа: Новичок
Сообщений: 2
Регистрация: 30-11-05
Пользователь №: 11 616



Цитата(Pat @ Oct 31 2005, 16:12) *
Сигнал 50 Гц сдвинут относительно нуля.
Измерение производим АЦП с частотой выборки 5000Гц.
Надо получить его же только относительно нуля.

Можно попробовать так: в течение 21 мсек(105 отсчетов) измеряется минимальное и мксимальное значение сигнала АЦП, далее из максимального вычитается минимальный, делится на 2. Получаем амплитудное значение измеряемого сигнала.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th September 2025 - 10:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01895 секунд с 7
ELECTRONIX ©2004-2016