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

 
 
> Фильтр для выделения прямоугольных импульсов
mempfis_
сообщение May 14 2012, 08:24
Сообщение #1


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.
При разработке нового прибора возникли проблемы с подсчётом прямоугольных импульсов на входе процессор.
Стоит задача подсчитать кол-во прямоугольных импульсов (предположительно меандр) с периодом от 15-20 мС до 10 С. Входные импульсы ограниченные амплитудой 3В через диод подаются на параллельную RC-цепочку 100k 0,1uF. RC-цепочка одним входом подключена напрямую к ножке процессора (LPC17) а вторым на землю. На пине процессора отключены pullup/pulldown.
В лабораторных условиях подсчёт импульсов происходит точно. При установке аппарата на транспортное средство появляется значительный пересчёт.
Импульсы считаются программно - идёт выборка состояния пина раз в 2 мС, выполняется медианная фильтрация настроенная на фиксацию импульсов от 10 мС (т.е. буффер на 9 отсчётов).
Источник проблемы пока не выяснен, поэтому стоит задача программно обойти проблему. Как я вижу медианной фильтрации недостаточно (или она неправильно настроена). Поэтому вопрос к тем кто сталкивался с подобной задачей - есть ли какие-либо программные фильтры для подобных задача? Поделитесь плиз ссылкой или идеей. Заранее благодарен за любую инфу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=AK=
сообщение May 14 2012, 09:26
Сообщение #2


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(mempfis_ @ May 14 2012, 17:54) *
Входные импульсы ограниченные амплитудой 3В через диод подаются на параллельную RC-цепочку 100k 0,1uF. RC-цепочка одним входом подключена напрямую к ножке процессора (LPC17) а вторым на землю.

То есть, у вас пиковый детектор на входе стоит. С постоянной времени разряда 100к*100n=10 мс и задним фронтом 2.2*R*C = 22мс. При этом время заряда конденсатора неизвестно, оно определяется выходным сопротивлением источника сигнала. Непонятно, почему вы используете пиковый детектор, а не обычный RC фильтр. Я бы вместо диода поставил резистор 33к, а резистор на землю увеличил бы до 1М.

Цитата(mempfis_ @ May 14 2012, 17:54) *
При установке аппарата на транспортное средство появляется значительный пересчёт.

Надо полагать, помехи. А пиковый детектор редкие помехи не фильтрует, он их регистрирует. sm.gif

Цитата(mempfis_ @ May 14 2012, 17:54) *
Импульсы считаются программно - идёт выборка состояния пина раз в 2 мС, выполняется медианная фильтрация настроенная на фиксацию импульсов от 10 мС (т.е. буффер на 9 отсчётов).

Если 9 отсчетов по 2мс, это 18мс получается, а не 10.

Медианный фильтр - лишняя сущность. Используйте простой "антидребезговый" алгоритм: берите отсчеты раз в миллисекунду и вдвигайте их в однобайтный сдвиговый регистр; если в сдвиговом регистре все восемь бит равны 0 - устанавливайте выходную переменную в ноль, если все восемь бит равны 1 - устанавливайте ее в единицу.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение May 14 2012, 10:05
Сообщение #3


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(=AK= @ May 14 2012, 12:26) *
То есть, у вас пиковый детектор на входе стоит. С постоянной времени разряда 100к*100n=10 мс и задним фронтом 2.2*R*C = 22мс.


Надо полагать, помехи. А пиковый детектор редкие помехи не фильтрует, он их регистрирует. sm.gif

Если 9 отсчетов по 2мс, это 18мс получается, а не 10.


Схему составлял не я - возможно это есть пиковый детектор реагирующий на помехи. Я только программирую плату.
Вот схема. Резистор сверху 4к7 подключён к +3В, снизу 100к. Конденсатор 0,1uF. диодная сборка BTA54. Значёк сапрессора не нашёл - заменил на закарлючку.
Эта схема позволяет подавать на вход до 12В. Реагирует на подачу 0.
Медианный фильтр просимулирован и работает корректно - сохраняет в буффер на место самого старого отсчёта новый, сортирует по возрастанию и возвращает 9/2=4 й элемент буффера - поэтому 5*2 = 10мС.

Если ничего нельзя поменять в схеме то если я увеличу период фильтра до 20-30 мС возможно ли улучшение работы?
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 14 2012, 11:09
Сообщение #4


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(mempfis_ @ May 14 2012, 19:35) *
Вот схема. Резистор сверху 4к7 подключён к +3В, снизу 100к. Конденсатор 0,1uF. диодная сборка BTA54. Значёк сапрессора не нашёл - заменил на закарлючку.

Слава богу, есть резистор 4.7к, значит, короткая помеха все-таки будет отфильтрована. Хотя фильтр все-таки нелинейный.

Интересно, куда на плате подключен земляной вывод супрессора. Если разводка земли некачественная, то из-за супрессора по земле могут бегать серьезные помехи.

Цитата(mempfis_ @ May 14 2012, 19:35) *
Медианный фильтр просимулирован и работает корректно - сохраняет в буффер на место самого старого отсчёта новый, сортирует по возрастанию и возвращает 9/2=4 й элемент буффера - поэтому 5*2 = 10мС.

Вы опять говорите о медианном фильтре. Вы что, сигнал при помощи АЦП получаете, что ли? Вы, наверное, в книгу рекордов Гиннеса хотели попасть?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 14 2012, 11:38
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(=AK= @ May 14 2012, 14:09) *
Вы опять говорите о медианном фильтре. Вы что, сигнал при помощи АЦП получаете, что ли? Вы, наверное, в книгу рекордов Гиннеса хотели попасть?
А какая разница откуда он получает данные?
Битовый массив нечётного размера (массив нулей и единиц) вполне себе нормально можно фильтрануть медианным фильтром. Только зачем так сложно это вопрос...
Можно просто посчитать кол-во нулей или единиц в скользящем окне (это кстати одна инструкция на некоторых архитектурах) и если оно больше половины размера массива то принимать соответствующее решение.
Тут ИМХО главное грамотно размер массива выбрать (лучше чтобы в нативный тип int все битики влезли) и период выборки рассчитать.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:31
Рейтинг@Mail.ru


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