Например TDA7294

Форум РадиоКот • Просмотр темы - FFT на Си для AVR
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:46:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 200 ]     ... , , , 8, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Ср май 03, 2017 21:15:41 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4871
Откуда: Минск
Рейтинг сообщения: 1
Я - логарифм. Причём совмещая операцию извлечения корня из суммы квадратов Re и Im на последнем этапе и логарифмизации результата в одну операцию логарифмизации, в этом случае корень и вычислять не нужно, т.к. log(sqrt(R²+I²)) = 0.5*log(R²+I²).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Чт май 04, 2017 06:23:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Прошу пояснить, что такое нормализация и какую цель она преследует.
Я как-то традиционно после FFT корень из суммы квадратов Re и Im гармоник вычислял и все. А логарифм... зачем? В чем смысл?

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Чт май 04, 2017 07:57:28 
Грызет канифоль

Зарегистрирован: Чт апр 16, 2009 14:23:59
Сообщений: 274
Рейтинг сообщения: 0
я в целом имел в виду вывод конечного результата на дисплей/матрицу. Сам в данный момент просто принял некое значение за максимум (20 светодиодов), а получаемые значения отображаю пропорционально, получается линейная шкала. Но встречал в разных проектах и логарифмическую, поэтому и спросил


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Чт май 04, 2017 10:43:45 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4871
Откуда: Минск
Рейтинг сообщения: 1
Вывод в логарифмической шкале интересен, если речь идёт от звуке (в контексте AVR это обычно так и есть). Поскольку у человека шкала слуха логарифмическая, то и результат более оправданно будет выглядеть в этом случае.
Скажем, такой набор мощности звука:
Код:
P,  2P,  4P,  8P,  16P,  32P,  64P,  128P

будет воспринимать линейно. И имеет смысл на мощности 16P зажигать именно 5 светодиодов из 8, а не один, как было бы при линейной шкале (16P - как раз одна восьмая из 128P).


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт май 05, 2017 20:41:21 
Грызет канифоль

Зарегистрирован: Чт апр 16, 2009 14:23:59
Сообщений: 274
Рейтинг сообщения: 0
Используете ли Вы усреднение результатов ? Например высчитать 2-3 выборки БФП, а на дисплей вывести средний результат?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт май 05, 2017 22:01:56 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4871
Откуда: Минск
Рейтинг сообщения: 1
Нет. Жалко времени на доп. расчёты. Но поскольку лишнее мельтешение тоже видеть не хочется, применяется другой подход. Значения спектра выводятся в виде столбиков на экран и запоминаются. При следующем показе новых данных, если новый столбик выше предыдущего, он отображается как есть, а если ниже - рисуется старый, уменьшенный на 1. Получается быстрое нарастание, но медленный спад, что выглядит приятно для глаза: http://wiselord.github.io/avr/ampcontrol/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Ср дек 20, 2017 21:57:28 
Встал на лапы

Зарегистрирован: Чт ноя 17, 2011 00:57:23
Сообщений: 134
Откуда: Харьков
Рейтинг сообщения: 0
Всем добрый вечер подскажите допустим имеем микрофон подключённый к ацп атмеги +лсд . Как можно определить пик частоты ?
Хочется чет наподобие спектрального анализатора .


Вложения:
t.JPG [55.05 KiB]
Скачиваний: 479
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Чт дек 21, 2017 06:55:31 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Q-ti писал(а):
Хочется чет наподобие спектрального анализатора

http://elm-chan.org/works/akilcd/report_e.html

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт дек 22, 2017 18:29:34 
Встал на лапы

Зарегистрирован: Чт ноя 17, 2011 00:57:23
Сообщений: 134
Откуда: Харьков
Рейтинг сообщения: 0
Спасибо видел но немного не то , хотелось бы выводить только цифры , пиковую частоту в Гц .
Я так понимаю это то что мне нужно но по какой формуле высчитать эту частоту не пойму .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт дек 22, 2017 18:37:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Q-ti писал(а):
Спасибо видел но немного не то , хотелось бы выводить только цифры , пиковую частоту в Гц .
Я так понимаю это то что мне нужно но по какой формуле высчитать эту частоту не пойму
вам хочется, чтобы кто-то за вас сделал то, что вам хочется?

у вас есть библиотека FFT, которая выдает массив амплитуд частот. неужели вы сами не можете перебрать этот массив и найти в нем наибольшее значение?

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт дек 22, 2017 18:58:21 
Встал на лапы

Зарегистрирован: Чт ноя 17, 2011 00:57:23
Сообщений: 134
Откуда: Харьков
Рейтинг сообщения: 0
Делать за меня ничего не надо просто прошу подсказать по какой формуле высчитать частоту ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Пт дек 22, 2017 20:30:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Да вы хоть почитайте про библиотеку и вообще принцип FFT! каждая частота в массиве после FFT имеет фиксированное значение, зависящее от общего количества полос (а оно в свою очередь зависит от размера буфера семплов) и частоты семплирования. Например, при частоте семплирования 32 кГц и размере буфера в 128 семплов вы получите значения амплитуд 64 частот, первая будет иметь частоту 0 Гц (т.е. это будет постоянная составляющая) вторая 250 Гц, третья 500 Гц и так далее с шагом 250 Гц, последняя 64-я будет, как вы можете догадаться 15750 Гц.

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 13:52:50 
Встал на лапы

Зарегистрирован: Пт мар 19, 2021 08:58:45
Сообщений: 103
Рейтинг сообщения: 0
Мужики пытаюсь въехать в ДПФ. поэтому подниму эту тему, она как раз подходит. У меня вопрос по поводу настройки периферии атмеги328, точнее таймера для измерения сигнала в 100Гц к примеру. Т.е. период 10000uS хочу произвести 32 измерения равно 312,5 uS - дискретность 3,2kHz. АЦП будет 10bit 125kHz = (11,5+2)/0,125+(4/16MHz) =108.25uS на 1 преобразование АЦП, т.е. убираемся в 312,5uS аж 2 целых два раза. Правильно ли я иду?
И второй вопрос, люди вот все делают для N выборок так:
Код:
for (int k = 0; k < 1024; k++)
            {
                for (int n = 0; n < 1024; n++)
                {
                    x_real[k] += x_n[n] * Math.Cos( (-2) * Math.PI * k * n / 1024 );
                    x_imag[k] += x_n[n] * Math.Sin( (-2) * Math.PI * k * n / 1024);
                }
                x_Ampl[k] = Math.Sqrt( x_real[k] * x_real[k] + x_imag[k] * x_imag[k] );   
            }

а для одной выборки получатся следующее?:
Код:
for (int n = 0; n < 1024; n++)
                {
                    x_real[1] += x_n[n] * Math.Cos( (-2) * Math.PI * 1 * n / 1024 );
                    x_imag[1] += x_n[n] * Math.Sin( (-2) * Math.PI * 1 * n / 1024);
                }
                x_Ampl[1] = Math.Sqrt( x_real[1] * x_real[1] + x_imag[1] * x_imag[1] );

и можно ли ограничиться одной выборкой(семплом),а не 32?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 16:08:40 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
БПФ на восьмибитке, не умеющей флоаты?
Мде...

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 17:32:54 
Грызет канифоль

Зарегистрирован: Пн окт 26, 2020 08:37:51
Сообщений: 284
Откуда: г.Волгоград
Рейтинг сообщения: 0
Мужики пытаюсь въехать в ДПФ. поэтому подниму эту тему, она как раз подходит. У меня вопрос по поводу настройки периферии атмеги328, точнее таймера для измерения сигнала в 100Гц к примеру. Т.е. период 10000uS хочу произвести 32 измерения равно 312,5 uS - дискретность 3,2kHz. АЦП будет 10bit 125kHz = (11,5+2)/0,125+(4/16MHz) =108.25uS на 1 преобразование АЦП, т.е. убираемся в 312,5uS аж 2 целых два раза. Правильно ли я иду?
И второй вопрос, люди вот все делают для N выборок так:
Код:
for (int k = 0; k < 1024; k++)
            {
                for (int n = 0; n < 1024; n++)
                {
                    x_real[k] += x_n[n] * Math.Cos( (-2) * Math.PI * k * n / 1024 );
                    x_imag[k] += x_n[n] * Math.Sin( (-2) * Math.PI * k * n / 1024);
                }
                x_Ampl[k] = Math.Sqrt( x_real[k] * x_real[k] + x_imag[k] * x_imag[k] );   
            }


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

x_real[k] += x_n[n] * Math.Cos( 2* Math.PI * k * n);
x_imag[k] += x_n[n] * Math.Sin( 2 * Math.PI * k * n);
n=0..N-1
k=0..N/2
x_real симметричен относительно точки k=N/2, x_imag антисимметричен относительно точки k=N/2 - их можно не считать, но помнить про них, если потом потребуется обратная операция.
В математическом смысле, следовало бы еще результат (x_Ampl[k]) умножить на величину интервала дискретизации. Обычно это не делают, но про него следует помнить.
Вы расскажите что хотите - может подскажу.
Если речь идет про "изучение", то микроконтроллер этой архитектуры вообще не для этого.

_________________
ФУОЗ на платформе Ардуино: viewtopic.php?p=4366626#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 18:26:33 
Встал на лапы

Зарегистрирован: Пт мар 19, 2021 08:58:45
Сообщений: 103
Рейтинг сообщения: 0
Второе - под знаком тригонометрической функции должно быть вот так (если говорить про ДПФ или БПФ).

x_real[k] += x_n[n] * Math.Cos( 2* Math.PI * k * n);
x_imag[k] += x_n[n] * Math.Sin( 2 * Math.PI * k * n);
n=0..N-1
k=0..N/2
x_real симметричен относительно точки k=N/2, x_imag антисимметричен относительно точки k=N/2 - их можно не считать, но помнить про них, если потом потребуется обратная операция.
В математическом смысле, следовало бы еще результат (x_Ampl[k]) умножить на величину интервала дискретизации. Обычно это не делают, но про него следует помнить.
Вы расскажите что хотите - может подскажу.
Если речь идет про "изучение", то микроконтроллер этой архитектуры вообще не для этого.

Eddy_Em и C.H. да я понимаю что АВР-ка не подходит для данного изучения, но пока тренируюсь на ней... Хочу понять как считать Real и Imag, и уже из них угол Fi = arctg(Re/Im) и амплитуду A = sqrt(Re^2 + Im^2), в дальнейшем уже на STM32 уже понять как измеряется емкость и.т.п. У меня нет какого то проекта и STM32 я только начинаю изучать. Поэтому пока позвучал немного теории и вот первое с чем столкнулся изложил выше.
C.H. по поводу примера формул, почему k=0..N/2 и n=0..N-1? где можно об этом прочитать и аргуметировать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 19:09:40 
Грызет канифоль

Зарегистрирован: Пн окт 26, 2020 08:37:51
Сообщений: 284
Откуда: г.Волгоград
Рейтинг сообщения: 0
по поводу примера формул, почему k=0..N/2 и n=0..N-1? где можно об этом прочитать и аргуметировать

Это называется основы ЦОС (Цифровая обработка сигналов).
1. Частота Найквиста (её же определяет теорема Котельникова) - Спектр, сигнала подлежащего преобразованию АЦП должен быть ограничен половиной его частоты дискретизации, ИНАЧЕ наложения спектральных линий друг на друга.
2. k=0..N/2 - это следствие функций синус и косинус. Считать можно, но можно просто взять их отраженную копию относительно точки k=N/2.

И прошу прощения - память моя подвела (этой темой 17 лет не занимался плотно), 1/1024 (исходя из N=1024) должно быть под синусом и косинусом.

Это все можно прочитать в любом букваре по ЦОС. Классика Марпл–мл. С.Л. Цифровой спектральный анализ и его приложения.

_________________
ФУОЗ на платформе Ардуино: viewtopic.php?p=4366626#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"


Последний раз редактировалось С.Н. Сб сен 17, 2022 19:16:30, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 19:15:39 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
kote52, ну так лучше на ПК и проверять все, а когда уж заработает — переносить код на МК. Только МК, умеющий флоаты и имеющий математический сопроцессор, стоит ой как дорого. Иначе придется искать реализацию простого БПФ в целых числах. Но для спектрального анализа нет смысла БПФ применять: ведь фаза нам не нужна, соответственно, не нужны и комплексные числа. Для этого сгодится ДКП, а косинусы можно таблично вычислять.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 19:19:51 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
БПФ на восьмибитке, не умеющей флоаты?
Мде...

да ты задрал уже со своими дебильными замечаниями! хоть что-то в мире, кроме собственного я, ты уважаешь?!

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

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FFT на Си для AVR
СообщениеДобавлено: Сб сен 17, 2022 19:25:16 
Грызет канифоль

Зарегистрирован: Пн окт 26, 2020 08:37:51
Сообщений: 284
Откуда: г.Волгоград
Рейтинг сообщения: 0
Все эти преобразование можно на любом камне считать - они же не потоковые (не реал тайм). Тем более Вы на Си пишете и уж как нибудь float там будет работать. Мой опыт показывает, что само по себе ДПФ нужно лишь как обучалка. В приложениях или уж БПФ или ряд Фурье (гармоники).

_________________
ФУОЗ на платформе Ардуино: viewtopic.php?p=4366626#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 200 ]     ... , , , 8, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y