Цитата(Fat Robot @ Mar 21 2013, 19:17)

1. чтобы посмотреть, что не так, подайте на вход Вашего фильтра отсчеты синусоиды с разными амплитудами и частотами. Посмотрите, как фильр себя ведет. Сымитируйте АЦП, когда на его входе отсчеты синусоиды.
2. Если у Вас присутствуют импульсные помехи, то вместо линейного фильтра (в Вашем случае ск. среднего или БИХ) было бы эффективней использовать медианный фильтр, как устройство для оценки "среднего" значения.
3. Ну и конечно логически инвертировать отсчет АЦП, а потом накладывать маску - это какая-то военная хитрость
Цитата(Дмитрий_Б @ Mar 21 2013, 20:14)

Частота дискретизации 400 Гц поможет. Лампа вспыхивает 100 Гц.
Дмитрий_Б,
Fat Robot спасибо!
Дмитрий_Б оказался прав. Все просто прекрасно заработало при изменении частоты дискретизации. Правда очень многое осталось неясным.
Во-первых, при настройке фильтра на 400 Гц он не работал, входил в какой-то непонятный колебательный процесс и даже в отсутствии сигнала выдавал какой то бешенный рандом в диапазоне от нуля до максимума. Когда при очередном изменении я случайно настроил фильтр на 200 Гц, а частота задачи вызывающей фильтр так и осталась 400 Гц он заработал, при чем настолько хорошо заработал, что я даже опешил - можно посторить АЧХ и оно совпадет с картинкой на проге. Это мне не понятно, выходит прога неверно генерит код?
Во-вторых, если я ставлю порядок выше 3-го фильтр начинает "колебаться", как я это уже упомянул. При частоте среза ниже 4 Гц включительно, фильтр начинает работать нормально, но как только "видит" мои колебания в 100 Гц снова срывается и начинает рандомно колебаться и уже не восстанавливается даже в отсутствии сигнала. Сейчас у меня 2-ой порядок частота среза 5 Гц, частота дискретизации выставленная в программе 200 Гц, а реально вызывается 400 Гц. Кажется, что все работает отлично, но может ли такое случится, что при помехе некоторой частоты он также сорвется? Может это из-за целочисленных вычислений (мне не хотелось связываться с float и я выбрал целочисленный способ)?
Имитировать частоты софтовым способом, как сказал
Fat Robot, я не стал. Поскольку синус, который я буду таким образом подавать будет полностью синхронизирован с частотой работы задачи, вызывающей фильтр. Я думаю просто воспользоваться генератором сигналов, хотябы с той же звуковой карты. А вот про медианный фильтр наверно хорошая идея, вот только тут у меня знаний еще меньше чем в области БИХ и КИХ фильтров. Что же касается инверсии, то это делает специально, мне же нужно свечение, а оно тем больше чем меньше напряжение на АЦП.
TSerg схемотехнические способы не рассматриваю в принципе. Зачем что-то городить на плате, если можно софтовым способом убрать?
Вообщем, всем большое спасибо!
Сообщение отредактировал yanvasiij - Mar 22 2013, 09:18