| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Частотный фильтр |
| Автор: Sardar 10.6.2004, 22:15 |
| На вход поступает аналоговый сигнал(звук), а на выходе я хочу получить постоянную 1 если частота входного сигнала Fin >= Fграница. Сейчас использую RC фильтр, затем компаратор, который превращает синусоиду в 2 уровневый(блочный) сигнал. Далее сигнал пускается на мультивибратор(oneshot) который и правращает пульсы в постоянный сигнал. Вроде все работает, но как то дури в ней много... По моему можно отакзатся от входного RC фильтра и собрать двоичный фильтр на мультивибраторе. У меня не получилось... Может кто нибудь знает более красивый способ реализации частотного фильтра, дающего 1 на выходе если входной сигнал в пределах требуемой частоты? |
| Автор: -= Александр =- 10.6.2004, 23:33 |
| Проще будет поставить контроллер со встроенным АЦП и мерить частоту программно. |
| Автор: Sardar 11.6.2004, 13:53 |
| По моему так будет еще сложнее... Xочется упростить схему, чувство схожее когда язык обязывает писать: x=x+2; а хочется x+=2. |
| Автор: Sardar 11.6.2004, 20:13 |
| Получилось. Нашел вот http://www.shema.ru/cgi-bin/rshema.pl?name=20&file=u-cif-f.shtml. Разобрался и переделал. Компаратор на входе преобразует синусоиду в пульсовый(блочный) сигнал. Делитель напряжения из R4, R5 сопротивлений определяет границу по которой компаратор дает 1 на выход, следовательно мы укорачиваем длинну полупериода входного сигнала(duty cycle<50%). Это должно быть учетенно при вычисленнии длины сигнала мультивибратора. Фича нужна была в схеме. На рисунках она стоит, в теории я опустил. ![]() Синий: входной сигнал Оранжевый: сигнал после компаратора, далее по тексту это входной сигнал Зеленый: сигнал мультивибратора Идея: мультивибратор выдает пульсы длинною RC(t). При частоте среза F0 длинна полупериода входного сигнала(Т0/2) равна длинне пульса мультивибратора(t), если частота выше, то Т0/2 короче t, и наоборот если частота ниже, то T0/2 длинее t. Сигнал мультивибраотра назовем Um, a входной сигнал Uin. Тогда выделим сигналы: !Uin&&Um - частота выше F0, Uin&&!Um - частота ниже F0. ![]() Зеленый: сигнал !Uin&&Um Фиолетовый: сигнал Uin&&!Um Красный: всходной сигнал Uin Синий: сигнал мультивибратора Um Далее пускаем их на обычный(SR) flip-flop, с помощью которого получим постоянный сигнал. В зависимости как подключим входные сигналы на flip-flop получаем высокочастотный, либо низко частотный фильтр. ![]() Зеленый: сигнал !Uin&&Um Синий: сигнал Uin&&!Um Оранжевый: сигнал мультивибратора Um Красный: выходной сигнал(flip-flop) Два фильтра + AND элемент = полосной(band) фильтр. На выходы AND элемeнтов повесил конденсаторы, что бы убрать пульс выдаваемый обоими когда Um и Uin поднимаются(0->1). Фильтр почти идеальный, диапазон частот ограничивается лишь быстродействием логических схем. |
| Автор: PILOT 14.6.2004, 14:40 |
| Поздравляю! А теперь все это дело программно перенести на контроллер, тогда можно будет параллельно делать что-нибудь еще СУВ. |
| Автор: Sardar 18.6.2004, 00:26 |
| А почему всё надо на микроконтроллер переносить? Конечно компонент меньше, но это похоже на стрельбу из пушки по воробьям. От батареек схема не работает, так что ток жалеть не буду. Легкость апгрейда? Пока не встречался за всю свою очень короткую практику в электронике |
| Автор: PILOT 18.6.2004, 15:35 |
| Вовсе не обязательно... это я сказал чтобы к теме относилось... СУВ. |
| Автор: Guest 1.11.2005, 17:09 |
| люди помогите!Нужно написать программу на Асемблере по автоматизации пожарной системы. |
| Автор: PILOT 1.11.2005, 23:24 |
| Зарегистрируйся, задай вопрос, покумекаем над пожарниками СУВ. |
| Автор: Гость_bzx 3.11.2005, 17:31 |
| to Sardar Идея абсолютно правильная: обрабатывать всё в аналоговой форме - аналоговый фильтр (ФНЧ) => компаратор. Проблемы в создании фильтра. Увеличь порядок фильтра до 3го или 4 го порядка. Используй операционики для ФНЧ. Понадобится всего пара штук. |