реклама на сайте
подробности

 
 
> Анализатор спектра, вывод на ЖКИ 128х64 АЧХ от 300 до 25000 Гц
us5caa
сообщение Aug 19 2006, 07:24
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 19-08-06
Пользователь №: 19 664



Подскажите, есть Мега16 и МТ12864, как програмно реализовать анализатор частотной характеристики звукового сигнала в полосе до 25кГц, с помощью преобразования Фурье или Уолша?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DS
сообщение Aug 20 2006, 18:29
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Первая - таблица коэффициентов (Sin, Cos), вторая -весовая фунция Хэмминга (0.54+0.46cos(2pi n/N), предназначена для уменьшения эффекта короткой выборки. последняя - таблица перестановки для выборки нужных для обработке в "бабочке" точек в массиве.

Алгоритм на первый взгляд рабочий, скорость обработки указана. Для 25 Кгц выборки надо делать через 20 мкс, АЦП в Меге не потянет уже. Разрешение будет 50 гц/точка.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 21 2006, 11:17
Сообщение #3


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 Гц?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 21 2006, 11:22
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 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 Кгц.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 21 2006, 12:20
Сообщение #5


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 не потянет?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 21 2006, 12:33
Сообщение #6


Гуру
******

Группа: СуперМодераторы
Сообщений: 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


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 12:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016