Страница 1 из 1
Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 16:34:34
Danielxata
Всем котам доброго времени суток!
Собираю себе усилитель, данные вывожу на цветной дисплей от китайского телефона, и вот застопорился на индикаторе уровня входного сигнала, в виде цветной линейки, чет похожее как в советских магнитофонах.
Как делаю я: входной сигнал от звуковой карты усиливаю (lm358), затем подаю на вход ацп, читаю ацп и в зависимости от процитанных данных рисую цветную линейку, на нужное количество цветных прямоугольников. Нулем у меня считается половина питающего напряжения, то есть 512 из 1023 значений ацп. Так в чем проблема, вроде как все работает, но как-то не то, в основном эта линейка живет своей жизнью и очень редко попадает в такт входного сигнала, такое ощущение что пропускает или не успевает... мега32 на 20 мГц
Может кто подскажет как правильно реализовать чтение и вывод? или может фильтр какой собирать нужно?
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 16:39:11
Engineer_Keen
А если подавать на вход напряжение от 0 до опорного, линейка верно его отображает? Не успевать она не может, 20MHz более чем достаточно для такого применения. Как настроен АЦП меги?
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 16:44:22
Danielxata
В том то и дело что все верно показывает, проц работает от 4 вольт, 2 вольта - это ноль полос на линейке, и если подавать напряжение от 2 до 4 вольт и 0 до 2 вольт, шкала показывает уровень верно, вот когда бас идет, раза два например покажет высокий уровень, а на третий раз как-будто убрали сигнал, просто "катится" на "ноль" шкала...
могу видео скинуть как работает в реале
ацп работает на 1мГц от AVCC, мне так удобнее, можно стабилизировать наприжение через AREF, так работает мой БП, причем давно и без проблем
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 16:48:23
Финский
Без схемы и кода - гадание на кофейной гуще.
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 17:00:58
Danielxata
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Пт апр 27, 2012 17:07:54
Danielxata
Пишу на Си в CVAVR
код? да ниче в нем сложного, кратко: читаю ацп, если значение больше 512, например 520, вывожу один цветной кубик, чем больше значение - тем больше кубиков и так же, если меньше 512, тем больше кубиков, так сказать))
if(sp_time>=200) // 200 тиков от таймера на 1мГц
{
read_adc(1);
if(ADCW!=res) // сравниваем с предыдущем значением, если изменилось, то идем на подрограмму выбора цвета для кубиков линейки
{
sp_left_color(); // выбор нужных цветов линейки от значения ацп
res=ADCW;
}
sp_time=0;
}
всего 16 кубиков, одному соответствует 32 значения ацп
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Сб апр 28, 2012 11:39:31
john_rise
Включите прерывание от АЦП (ИМХО full изврат в цикле ожидать преобразование АЦП, хоть 100 МГц такта на ядро не спасёт ситуацию), пусть прерывание автоматически забирает результат, запускает следующее преобразование. Далее простая функция из диапазона 0... 1023 делает 0... 511 (от средних 511, 512 значений считается 0-лём, отклонение от 511 или 512 в большую/меньшую стороны должно давать прирост уровня на выходе, (понимаете о чём я?)). Далее результат такого преобразования суммируете в 32-х битный сумматор и каждые, например 40 мс (25 кадров в секунду) сумматор делите на число суммирований (суммирования понятно что нужно считать). От полученного результата (сумматор делить на счетчик суммирований) желательно извлечь корень. Таким образом вы получите нелинейную шкалу что-то вроде дБ. Корень(511) = 22,60530911091463044583785059216 уровня. Для Вашего дисплейчика 22 квадратика это более чем достаточно. Только не используейте функцию корня из CVAVR

(это просто ППЦ а не математика), в википедии написан простой алгоритм извлечения корня, вот его и используйте - максимально быстро и компактно.
Удачи.
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Сб апр 28, 2012 13:35:35
Danielxata
То есть суммируем результаты ацп, а перед выводом находим среднее значение, извлекаем корень, получаем число и согласно его рисуем нужное количество квадратиков, я правильно понял? Остальное все понятно
Спасибо!
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Сб апр 28, 2012 14:43:04
pyzhman
Тут еще может срабатывает то, что интерфейс мк-дисплей не моментален, есть задержка при вкачивании инфы в дисплей.
Re: Индикатор аудио сигнала на ATMEGA
Добавлено: Вт май 01, 2012 23:23:32
john_rise
Не сочтите за попытку поднять тему в первые ряды раздела МК, но... что получилось у автора?