Цифровой фильтр на МК

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

Хотел сделать светомузыку на МК...Придумывал разные алгоритмы обработки показаний с АЦП, в результате чтоб красиво мигали светодиоды под музыку, но понесло меня в другую сторону...не буду спешить рассказывать, что вышло - сразу хочу задать вопрос.
Реально ли сделать цифровой фильтр частот на AVR-ке? Если да, то сколько паралельно фильтров "влезит"? Сейчас я имею ввиду не только фильтры под светомузыку, но и для обработки звука с дальнейшим выводом через ЦАП
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 17, 2006 21:57:43

Сообщение Телерадиокошак »

Томатный писал(а):Реально ли сделать цифровой фильтр частот на AVR-ке?
Т.е. преобразование Фурье (пусть даже быстрое ПФ) на AVR в реальном времени? Не хочу огорчать, но это мне кажется малореальным. Не потянет AVR. Надо чего-нибудь помощьнее. Возможно ARM какой-нибудь справится.

Может имеет смысл подумать над несколькими аналоговыми фильтрами, управляемыми при помощи МК?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Телерадиокошак не прав.
AVR в состоянии выполнять БПФ для целей цветомузыки для любого разумного числа каналов (думаю, 32 канала - это уже выходит за рамки разумного)

Для настоящей ЦОС, конечно, AVR не пойдет, но для цветомузыки и т.п. "индикаторных" штучек - запросто. кстати, для цветомузыки можно применять куда более простые алгоритмы, чем БПФ - начиная от простого алгоритма дискриминации длительностей импульсов (я реализовывал его даже на AT89C2051 - во много раз менее производительном МК, чем AVR) до преобразования Хартли, Уолша и т.п.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 200
Зарегистрирован: Пт ноя 17, 2006 21:57:43

Сообщение Телерадиокошак »

Я почему то подумал, что речь не про индикацию, а про реальную обработку звука в спектральном представлении.
Сейчас я имею ввиду не только фильтры под светомузыку, но и для обработки звука с дальнейшим выводом через ЦАП
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

Телерадиокошак писал(а):Т.е. преобразование Фурье (пусть даже быстрое ПФ) на AVR в реальном времени?

Помоему это звётся операцией свертки. Да.
Телерадиокошак писал(а):Может имеет смысл подумать над несколькими аналоговыми фильтрами, управляемыми при помощи МК?
Это по-моему не интересно. Это я так понял тоже может называться програмируемым фильтром? Хотелось бы всётаки на цифре...
Вобщем я тоже думал что не реально, но один интересный человек натолкнул меня на эту идею очень уверено, что я решил попробовать. И вроди как получилось! Но на 99%
Скрины с протеуса:
Изображение

Изображение

Изображение

Изображение

и самое обидное, что эти скриншоты были зделаны, до того как были обнаружены серьезные ошибки в программе... После исправления сигнал стал какойто грубый, и вобще, очень тяжело выяснить причину ошибок... Во первых как подать сигнал на АЦП так, чтобы сигнал полностью попадал в рамки 0..255 и нулевой потенциал имел значение 128 ? и во вторых, как можно вывести 24-битное значение например? и в третих, как отследить переполнение числа в доп коде? Вобщем мозги кипят, оно то работает то нет.
В железе на слух особо не отличается от протеуса... иногда добивался нормального звучания, но были счелчки...
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

ARV писал(а):Телерадиокошак не прав.
AVR в состоянии выполнять БПФ для целей цветомузыки для любого разумного числа каналов (думаю, 32 канала - это уже выходит за рамки разумного)

Для настоящей ЦОС, конечно, AVR не пойдет, но для цветомузыки и т.п. "индикаторных" штучек - запросто. кстати, для цветомузыки можно применять куда более простые алгоритмы, чем БПФ - начиная от простого алгоритма дискриминации длительностей импульсов (я реализовывал его даже на AT89C2051 - во много раз менее производительном МК, чем AVR) до преобразования Хартли, Уолша и т.п.
А можно подробнее о этих алгоритмах для "индикаторных" штучек?
Хочу зделать

Ещё по поводу скриншотов. Можно подумать, что сигнал фильтруется не от самой программы, а изза того, что преобразования происхотяд с небольшой частотой, и поэтому физически не улавливает высокочастотные сигналы... Но, что я хочу сказать... Сам алгоритм этого преобразования фурье получается вписывается в 300-400 тактов кристала, если я конечно его правильно зделал :))
Кста, частота кристала 16 мГц и делитель на АЦП = 32. Это около 38 кГц дискретизация... А прерывание получается через каждые 416 тактов кристала
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

алгоритм БПФ в 400 тактов - это либо не верно реализованный алгоритм, либо для очень малого числа отсчетов (наверное, не более 8). БПФ, кстати, не очень хорошо подходит для фильтрации - он очень удачно позволяет определить спектр сигнала, а вот с фильтрацией там уже хуже - надо учитывать и фазу спектральных составляющих, да и выполнять не только прямое, но и обратное преобразхование... в общем, это явно слишком сложно...

на счет "алгоритмов индикаторных штучек" - здесь была тема "цветомузыка на МК" (по-моему, так называлась), в ней я немного об этом говорил. У меня на сайте есть микро-проектики с реализацией этого алгоритма на 51-ом семействе. Есть и анализатор спектра, уже на БПФ и AVR.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Дык поделились бы исходниками, если это не военно-коммерческая тайна, а то все обещаете, обещаете... :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

что касается алгоритма "дискриминации длительностей импульсов" - то сам алгоритм я словесно описал давным давно - кому надо, пусть прочтет (или у меня на сайте или здесь в обсуждениях на форуме). исходник я публиковал в журнальных статьях о 51-ых МК - он на асме для 51-ых, так что толку для AVR-щиков от него немного...

если речь о БПФ - то исходников и без меня пруд пруди ...

и, в общем-то, я ничего не обещал... :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

http://radiokot.ru/forum/viewtopic.php?t=10534
ARV писал(а):...в общем, с годами все покажу :)
:wink: :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не хотите годы ждать - я выложил модуль энкодера :-)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

есть готовая реализация бпф для авр
на 3 канала влезет

у меня была такая идея, но в силу лени и тупости я от нее отказался
проще 3 фильтра аналоговых поставить и мк использовать для шима или просто переключать лампочки 8 каналов
можно еще сделать бит детектор для канала стробоскопа

плюс мк тут в реализации компрессора
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

ARV писал(а):алгоритм БПФ в 400 тактов - это либо не верно реализованный алгоритм, либо для очень малого числа отсчетов (наверное, не более 8). БПФ, кстати, не очень хорошо подходит для фильтрации...
я делал по этому алгоритму: http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htm
могу выложить исходники и проект протеуса, только сначало нужно понасписывать коментариев в код, чтоб хоть чучуть было понятно что я там понабирал))

Такой вопрос. Кто умеет составлять импульсную характеристику для метода по ссылке, желательно для моего случая? я её приблизительно составил по рисунку(может в этом и проблема?). у меня кстати 29 коефициентов...
ARV писал(а):на счет "алгоритмов индикаторных штучек"...
Спасибо, лучше ими(штучками) и займусь
kalobyte писал(а):есть готовая реализация бпф для авр
делитесь :)
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Томатный писал(а):я делал по этому алгоритму: http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htm
это не БПФ
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

ARV писал(а):это не БПФ
мне от этого не легче :(
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Томатный писал(а):могу выложить исходники и проект протеуса
Давайте, конечно, поковыряем. :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

Та вот только-что доделал!!! :)) :shock:
Начал коменты писать на каждую строчку и нашел несколько грубых ошибок, правда это стоило 3х лишних строк в цикле, что зделало алгоритм на 500 циклов :( пришлось понизить дискретность в 2 раза...но если заюзать мегу88 с кристалом 20 мГц, то этим её можно немного повысить... ещё есть вариант уменьшить число коефициентов, сейчас какраз попробую на сколько это ефективно(http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htm)
Вобщем сейчас всё выложу...
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

вот берике кому нада цяцька :)
толку с него мало, 8 бит всётаки, но рад что доделал (надеюсь всетаки доделал)

Чтоб юзать делитель 32, нужно уменьшить кол коефициентов до 23-х :idea:
думаю от этого никто не пострадает :))
на счет импульсной характеристики - не знаю даже как её делать, как уже говорил набросал визуально с картинки... если кто-то подскажет будит очень хорошо
и ещё там если юзать 16 битный выход, то получается небольшой глюк:
Изображение
это я так понял изза последовательного вывода сначало одного байта, а потом другого(интервал равен длительности такта)
а так вроди все красиво, особено если в протеусе всунуть аудиофайл и пропустить через фильтр :)
Изображение

Спасибо NiTr0 за идею, помощь и поддержку :)
Вложения
kih_filter_mega8.rar
WOOHOO !!!
(43.44 КБ) 642 скачивания
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 140
Зарегистрирован: Пт фев 01, 2008 11:09:49
Откуда: СССР

Сообщение Morse »

А чем вам аналоговые фильтры не нравятся? Возьмите реальный фильтр и сделайте для него математическую модель. Её и используйте в программе. Кстати, если один AVR не справляется, можно последовательно, или параллельно, поставить несколько штук.
Моя родина Советский Союз.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»