|
Анализатор спектра, вывод на ЖКИ 128х64 АЧХ от 300 до 25000 Гц |
|
|
|
Aug 19 2006, 07:24
|
Группа: Новичок
Сообщений: 5
Регистрация: 19-08-06
Пользователь №: 19 664

|
Подскажите, есть Мега16 и МТ12864, как програмно реализовать анализатор частотной характеристики звукового сигнала в полосе до 25кГц, с помощью преобразования Фурье или Уолша?
|
|
|
|
|
 |
Ответов
|
Aug 20 2006, 18:29
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Первая - таблица коэффициентов (Sin, Cos), вторая -весовая фунция Хэмминга (0.54+0.46cos(2pi n/N), предназначена для уменьшения эффекта короткой выборки. последняя - таблица перестановки для выборки нужных для обработке в "бабочке" точек в массиве.
Алгоритм на первый взгляд рабочий, скорость обработки указана. Для 25 Кгц выборки надо делать через 20 мкс, АЦП в Меге не потянет уже. Разрешение будет 50 гц/точка.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Aug 21 2006, 11:17
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(DS_ @ Aug 20 2006, 17:29)  Для 25 Кгц выборки надо делать через 20 мкс, АЦП в Меге не потянет уже. Разрешение будет 50 гц/точка. Два вопросика. 1) Время преобразования АЦП в Меге16 работает от 13 мкс. С чего вы взяли, что не потянет? Вроде бы она ЕЩЁ потянет(:-). 2) Разрешение определяется Fs/Nfft = 50000/256=195 Гц, откуда взялись 50 Гц?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 21 2006, 11:22
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(=GM= @ Aug 21 2006, 15:17)  Цитата(DS_ @ Aug 20 2006, 17:29)  Для 25 Кгц выборки надо делать через 20 мкс, АЦП в Меге не потянет уже. Разрешение будет 50 гц/точка.
Два вопросика. 1) Время преобразования АЦП в Меге16 работает от 13 мкс. С чего вы взяли, что не потянет? Вроде бы она ЕЩЁ потянет(:-). 2) Разрешение определяется Fs/Nfft = 50000/256=195 Гц, откуда взялись 50 Гц? Если частота оцифровки 50 Кгц, то в результирующем массиве максимальная частота - 25 Кгц. И считал я для 512 точек. На АЦП можно подать такой такт, чтобы получилось 13 Мкс, а вот что с точностью при этом будет ? Наскольку я помню, максимальная частота тактировки АЦП при сохранении точности - 200 Кгц.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Aug 21 2006, 12:20
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(DS_ @ Aug 21 2006, 10:22)  Цитата(=GM= @ Aug 21 2006, 15:17)  1) Время преобразования АЦП в Меге16 работает от 13 мкс. С чего вы взяли, что не потянет? Вроде бы она ЕЩЁ потянет(:-).
2) Разрешение определяется Fs/Nfft = 50000/256=195 Гц, откуда взялись 50 Гц?
Если частота оцифровки 50 Кгц, то в результирующем массиве максимальная частота - 25 Кгц. И считал я для 512 точек. Неправильно посчитали. Считается весь спектр, от 0 до Fs, всего 512 точек, от 0 до Fs/2 положительная часть спектра, от Fs/2 до Fs - отрицательная. Если частота выборок (или оцифровки, по-вашему) равна 50 кГц, то расстояние между спектральными линиями для 512 точек будет 50000/512=98 Гц, а не 50 Гц. Цитата На АЦП можно подать такой такт, чтобы получилось 13 Мкс, а вот что с точностью при этом будет ? Наскольку я помню, максимальная частота тактировки АЦП при сохранении точности - 200 Кгц. На АЦП нужно подавать тактовую частоту 50 кГц, т.е. 20 мкс на выборку, разрешение будет 98 Гц (для Nfft=512). А 200 кГц, кстати, будет аж 5 мкс на выборку, чего в данном случае хватит с лихвой. Откуда вы взяли, что атмега16 не потянет?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 21 2006, 12:33
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Да нет, отрицательная чать после работы FFT просто суммируется квадратично с положительной. Поэтому частота все равно остается половинной. Вы путаете с переносом спектра больше F/2, это должен предотвращать входной фильтр. Но что результирующих точек на выходе будет в 2 раза меньше, я согласен - поторпился. Так что, действительно, 100 гц.
А 200 Кгц поделить на 13 тактов, которые требуются АЦП для измерения ?
us5caa, Вот на всякий случай "классический" С-шный алгоритм FFT, легче читается, чем ассемблер.
//#include <math.h>
#define SWAP( a , B ) tempr=( a);( a)=( B );( B )=tempr
void four2(double data[] , int nn, int isign ) { int n,mmax,m,j,istep,i; double wtemp,wr,wpr,wpi,wi,theta; double tempr,tempi; double const p2=8*atan(1); n=nn << 1; j=0; for (i=0;i<n;i+=2) { if (j > i) { SWAP(data[j],data[i]); SWAP(data[j+1],data[i+1]); } m=n >> 1; while (m >= 2 && j >= m) { j -= m; m >>= 1; } j += m; } mmax=2; while (n > mmax) { istep=2*mmax; theta=-p2/(isign*mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (m=0;m<mmax;m+=2) { for (i=m;i<n;i+=istep) { j=i+mmax; tempr=wr*data[j]-wi*data[j+1]; tempi=wr*data[j+1]+wi*data[j]; data[j]=data[i]-tempr; data[j+1]=data[i+1]-tempi; data[i] += tempr; data[i+1] += tempi; } wr=(wtemp=wr)*wpr-wi*wpi+wr; wi=wi*wpr+wtemp*wpi+wi; } mmax=istep; } }
#undef SWAP
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
Сообщений в этой теме
us5caa Анализатор спектра Aug 19 2006, 07:24 Alex B._ Вот тебе все готовое
http://elm-chan.org/works/aki... Aug 19 2006, 10:25 us5caa Цитата(Alex B._ @ Aug 19 2006, 14:25) Вот... Aug 19 2006, 11:15  Make_Pic Цитата(us5caa @ Aug 19 2006, 14:15) Цитат... Aug 19 2006, 12:03   us5caa Вариант Б: (для не начинающего не эмбеддера и вооб... Aug 20 2006, 14:19    DS_ Цитата(us5caa @ Aug 20 2006, 18:19) А мож... Aug 20 2006, 14:34    _Bill Цитата(us5caa @ Aug 20 2006, 17:19) Вариа... Aug 21 2006, 17:15 us5caa Прокоментируйте пожалуйста,
16bit fixed point FFT... Aug 20 2006, 17:52   us5caa На АЦП можно подать такой такт, чтобы получилось 1... Aug 21 2006, 11:35    DS_ Цитата(us5caa @ Aug 21 2006, 15:35) На АЦ... Aug 21 2006, 11:44     =GM= Цитата(DS_ @ Aug 21 2006, 11:33) Да нет, ... Aug 21 2006, 13:10      DS_ Суммирование я имел в виду то же самое, что и Вы, ... Aug 21 2006, 13:24       =GM= Цитата(DS_ @ Aug 21 2006, 12:24) Суммиров... Aug 21 2006, 14:57        DS_ Да Вы меня с толку сбили рассуждением про частоты... Aug 21 2006, 15:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|