Шумомер

Voronar
Offline
Зарегистрирован: 30.04.2012

Здравствуйте.

Пока мой вопрос про 7-полосный анализатор звука остается без внимания, я решил покурить в сторону вычислительных методов по обработке сигналов, а именно в сторону быстрого преобразования Фурье.

В процессе поиска я натыкался на разные обсуждения, но так и до конца не понял, что конкретно я получаю, пользуясь этим преобразованием. Это громкость звука(звуковое давление в дБ) на определенной частоте или просто сигнал о том, что был звук на определенной частоте?

Вообще, я хочу собрать шумомер, который бы собирал информацию о уровне шума на разных частотах (аналог дорогово промышленного шумомера). Мне интересно, как они устроены. Там обработка звукового сигнала (разложение звука на частоты и пр.) идет физическим путем (с помощью радиодеталей, электротехники и законов физики) или все таки там стоит мощный процессор, который делает эту работу чисто математическими вычислениями с минимальным набором электронных компонентов или все вместе?

Чтобы посоветуете? 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

шумомер в каком диапазоне частот?

Voronar
Offline
Зарегистрирован: 30.04.2012

Меня интересуют вот эти частоты:

63 125 250 500 1000 2000 4000 8000 (Гц)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

http://yadi.sk/d/cyD8GFReCbbh4

вот я использовал

есть еще быстрое преобразование фурье дл 256 частот

http://wiki.openmusiclabs.com/wiki/ArduinoFFT?action=AttachFile&do=view&target=ArduinoFFT.zip

и быстрое преобразование хартли

http://wiki.openmusiclabs.com/wiki/ArduinoFHT?action=AttachFile&do=view&target=ArduinoFHT.zip

хартли быстрее и меньше занимает места так как не использует мнимую часть

Voronar
Offline
Зарегистрирован: 30.04.2012

Спасибо за библиотеки.

Я не силен в мат. части. Можете мне объяснить, в каких единицах измерения получается высчитанная аплитуда? По идее мы подаем на вход от 0 до 5 вольт (0 - 1023), а в конечном подсчитанном итоге это милливольты, вольты, децибелы? Если милливольты или вольты, то возможно их как-то перевести в дБ?

В той библиотеке, которую вы скинули (как я догадываюсь, она на ассеблере) я нашел вот такую строку "Number of samples (64,128,256,512)". То есть получается ограничение на 8-битном мк - 500Гц. А если взять 32-битный мк, то сколько там можно подсчитать? И как считается на n-битном мк максимальное значение спектра частот? Я пытался подсчитать, но остановился на том, что мы имеем в распоряжении 2^n signed чисел (точек) для расчета.

Стоит ли вдаваться в математику и расчитывать на мощный процессор, чтобы получить достойную замену промышленному шумомеру?

step962
Offline
Зарегистрирован: 23.05.2011

Voronar пишет:

 Если милливольты или вольты, то возможно их как-то перевести в дБ?

Конечно же - нет. Это же целых три действия:

step962
Offline
Зарегистрирован: 23.05.2011

Упс - дубль. Чой-то хворум глючит...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Voronar пишет:

Спасибо за библиотеки.

Я не силен в мат. части. Можете мне объяснить, в каких единицах измерения получается высчитанная аплитуда? По идее мы подаем на вход от 0 до 5 вольт (0 - 1023), а в конечном подсчитанном итоге это милливольты, вольты, децибелы? Если милливольты или вольты, то возможно их как-то перевести в дБ?

В той библиотеке, которую вы скинули (как я догадываюсь, она на ассеблере) я нашел вот такую строку "Number of samples (64,128,256,512)". То есть получается ограничение на 8-битном мк - 500Гц. А если взять 32-битный мк, то сколько там можно подсчитать? И как считается на n-битном мк максимальное значение спектра частот? Я пытался подсчитать, но остановился на том, что мы имеем в распоряжении 2^n signed чисел (точек) для расчета.

Стоит ли вдаваться в математику и расчитывать на мощный процессор, чтобы получить достойную замену промышленному шумомеру?

вы наивно полагаете что там идет специальный подсчет в вольтах? каким образом? вы неизвестную плату  с неизвестными характеристиками, например коэффициент усиления и ачх подключаете. вы даже не знаете что на вход подаете а ходите на выходе точные еденицы вольты децибелы. вам в данном случае нужно менять аналоговый тракт, расчитать нормальный усилитель, снять его характеристики без микрофона сначала например программой RightMark Audio Analyzer потом с микрофоном, подкорректировать усиление, влияние будет оказывать даже корпус для микрофона куда запихнете. и только потом уже к ардуине. там вам понадобится откалибровать все в целом, скорее всего внести попрабочные коэффициенты на разных частотах так как микрофон, усилитель и ардуина будут работать на разных частотах по разному. вот вкраце а не подключил неизвестную плату, подключил библиотеку и все пожалуйста децибелы миливольты, хоть акустику настраивай по нему)))

Voronar
Offline
Зарегистрирован: 30.04.2012

Можно поподробней про элементы девайса.

Вы сказали поменять аналоговый тракт. То есть поменять микрофон, усилитель входного сигнала?

Рассчитать нормальный усилитель... Знать бы ещё как его расчитывают. Не подскажите, может рассчитывали?

Что-то я не понял. А разбивку сигнала на частоты какой элемент будет делать?

В итоге получается достаточно трудоемкий и дорогой процесс. Новый микрофон, усилитель. Но это не самое главное. Главное, что мои навыки в электронике самые начальные.

Voronar
Offline
Зарегистрирован: 30.04.2012

Да, форум работает немножко не стабильно.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

повтор

Voronar
Offline
Зарегистрирован: 30.04.2012

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

Просто мне желательно охватить все те частоты, которые я указал и вывести хотя бы условные значения на этих частотах для начала. Но Фурью работает на ардуино 8 только до 500Гц (кстати, я пока так и не понял как с помощью этой библиотеки с помощью массива из 128 значений удается получить информацию о звуковом уровне в диапазоне от 0 до 500Гц, не могли бы пояснить?), ну и у купленного железного анализатора не все частоты. Может посылать данные на ПК, а там считать до... До какой частоты можно посчитать на 32/64 - битном ПК?

 

Voronar
Offline
Зарегистрирован: 30.04.2012

А можно, допустим, откалибровать микрофон на ардуино(или  на чем-нибудь помощнее) и потом посылать данные для обработки на ПК. И все остальное делать на ПК?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Voronar пишет:

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

Возможно, придется для этого для почитать про расчет усилителей на операционных усилителях. В инете инфы полно. но придется делать плату, настраивать ее

Voronar пишет:

Просто мне желательно охватить все те частоты, которые я указал и вывести хотя бы условные значения на этих частотах для начала. Но Фурью работает на ардуино 8 только до 500Гц (кстати, я пока так и не понял как с помощью этой библиотеки с помощью массива из 128 значений удается получить информацию о звуковом уровне в диапазоне от 0 до 500Гц, не могли бы пояснить?), ну и у купленного железного анализатора не все частоты. Может посылать данные на ПК, а там считать до... До какой частоты можно посчитать на 32/64 - битном ПК?

правильно Фурье

что значит на ардуино 8? ардуина на Atmega8? почему вы считаете что до 500 гц? библиотека первая что я дал работает до 9.6кГц, 64 значения с шагом 150 гц. то есть 150 300 450 и так далее. с вамими точными частотами не совпадает. с библиотекой на 256 точек я не работал, сами разбирайтесь с примером. но там шанс попасть в нужную частоту гораздо выше

на компьютере АЧХ шума вокруг легко посмотреть разными программами. это самый простой способ но комп с собой не потаскаешь

ourlive
Offline
Зарегистрирован: 26.05.2012

Зачем такие сложности? Можно сразу калиброваться, пофигу что там на промежуточных этапах происходит (если это "происходит" не меняется во времени), главное сопоставить силу звука на входе и у.е. на выходе. Вот только для этого нужно иметь сертифицированный прибор(или хотя бы откалиброванный по такому) и нечто схожее с безэховой камерой. Возможно даже удастся обойтись всего одной простой калибровочной функцией.

Voronar
Offline
Зарегистрирован: 30.04.2012

Плату бы хотелосб оставить на крайняк.

Я знаю, что Фурье. Просто у нас препод по математике его так называл и я теперь для забавы так называю этого выдающегося математика (это я про Фурье).

Я имел в виду 8-битную ардуину. Просто я смотрел другую библиотеку, тоже для ардуино, но только там ограничение было до 500Гц. Сейчас придется разбираться с теми, которые вы подкинули.

Зачем таскать комп. Берем ардуино с беспроводным модулем, ставим в помещение комп и комп все считает, отображает и пишет в бд.

Voronar
Offline
Зарегистрирован: 30.04.2012

Ourlive, а можно поподробнее про ваш вариант.

Вы сказали, что нужно сопоставить силу звука на входе и выходе. Каким образом вообще это можно сделать? На входе, я как понимаю, эл. сигнал, от 0 до 5 вольт. А на выхое- обработанные с помощью FFT данные. У меня вообще в уме не укладывается, как FFT из значений от 0 до 1023 получает сведения о частотном спектре звуковой волны, якобы полученной из электрического сигнала, да причем только с положительными амплитудами.

Сертифицированный прибор есть. И есть человек, с которым можно будет сделать калибровку.

ourlive
Offline
Зарегистрирован: 26.05.2012

А в чём проблема то? Берём пищалку, пищим на микрофон частотой 1кГц, образцовым прибором убеждаемся, что это именно 1кГц с уровнем столько то дБ. У вас как я понимаю будет 7 чисел, куча нулей и одно значимое число, его и нужно принимать за измеренные дБ. Меняя частоту и громкасть пищалки(проще всего генерить это компом) получаем таблицу значений которая должна вкладываться в какую то закономерность. Если она не линейная(закономерность), то нужно произвести интерполяцию (вывести одну или если не повезло, то 7 функций перерасчёта коэффициента перевода у.е. в дБ. Правила проведения такой калибровки (сколько нужно точек частота/уровень, как располагать тестовый и образцовый приборы, на каком расстоянии и т.п.) ищите в ГОСТах или может методичка какая нибудь нагуглится.

Voronar
Offline
Зарегистрирован: 30.04.2012

Хочу уточнить один момент. То есть, я начинаю калибровку, когда у меня на выходе(serial monitor) ардуины условные значения громкости на моих желаемых 8 частотах, подсчитанных каким-либо методом(Фурье или др.)?

Ещё не понял про кучу нулей и одно значимое число.

То есть на выходе есть вот такие числа, которые соотвествуют частотам(63 125 250 500 1000 2000 4000 8000):

0 0 0 0 234 0 0 0

Это значит на частоте 1кГц есть шум и теперь мы сравниваем с эталоном и делаем соотвествие этому значению в дБ, которые показывает эталонный шумомер. Я правильно понимаю?

ourlive
Offline
Зарегистрирован: 26.05.2012

Да, вы правильно понимаете, именно так и делается. Полученные данные сведите в таблицу, хотя бы экселевскую. Постройте графики зависимости у.е. каждого канала в зависимости от реального значения дБ (т.е. 1кГц нужно подать последовательно с уровнями от 10 до 80дБ, с шагом 10дБ - например, аналогично для остальных частот). Если зависимость будет линейная, то и пересчёт будет простой (образца x[дБ]=k*y[у.е.]) , но скорее всего буден нечто параболическое (типа x[дБ]=a*y[у.е.]*y[у.е.]+b*y[у.е.]+с), либо гиперболическое, более сложные варианты маловероятны.

Voronar
Offline
Зарегистрирован: 30.04.2012

Так... Пока не потерял ход мысли. Составляю таблицу для, например, 8 значений. Использую, например, метод МНК в качестве интерполирующего. Или что? Как я пойму просто посмотрев на график, какая зависимость? Это надо опыт в таких расчетах. Если, что поможете с уравнением? Потом нахожу к для 1КГц и теперь у меня будет формула для персчета у.е. в дБ на 1КГц. И так далее для каждой частоты. Довольно просто звучит. Но все равно у меня пока затруднение с подбором уравнения для зависимости. Надо будет экспериментировать. Еще бы частоты свои расчитать с помощью fft

ourlive
Offline
Зарегистрирован: 26.05.2012

Меня тоже как то после универа вего пару раз припёрла необходимость в интерполяции. И делал я её методом подбора, т.к. учебникк икать да вспоминать как оно делается было лень. Вы данные снимите, без них теоретизировать бессмысленно. А самое главное сделайте съём данных больше одного раза для того чтобы убедится в повторяемости. Замеры нужно делать как сказали выше в уже собранном устройстве, если микрофон у вас не выносной.

Voronar
Offline
Зарегистрирован: 30.04.2012

Спасибо за огромную помощь всем, кто помогает!

Буду тут выкладывать ход событий, чтобы устранить неясности. Может потом кому-то придется делать что-то похожее.

Voronar
Offline
Зарегистрирован: 30.04.2012

Небольшой off top.

Я тут размышлял над своим шумомером и подумал. А можно ли сделать шумомер из какого-нибудь современного смартфона на android or ios... Микрофон у смартфонов довольно таки неплохой, процессор мощный, алгоритмов fft для java, я думаю много(можно на крайняк ndk with c++ использовать). Остается сделать вычисления коэффициентов для перевода у.е. в дБ и все готово.

Так ли все просто, как кажется?

ourlive
Offline
Зарегистрирован: 26.05.2012

Гуглите маркет, есть и полно вариантов. И все они индикаторы, не более. АРУ через ОС как правило не управляется, уровень усиления регулируется аппаратно, также как и работа всяких шумодавов. Не, возможно в отдельных телах оно и имеет управление на уровне драйвера. Возможно ios(не пользовал), но в подавляющем большинстве дроидов нет. Разве что использовать какую либо блютусную гарнитуру, без предварительной обработки звука, тогда возможно откалиброваться и удастся.

Voronar
Offline
Зарегистрирован: 30.04.2012

Что такое АРУ? Аппаратные ресурсы устройства? Не понял, что вы имеете ввиду. 

Ну идикатор же работает с помощью каких-то значений, они не подойдут?

Что за гарнитура? Типа беспроводных наушников с микрофоном?

ourlive
Offline
Зарегистрирован: 26.05.2012

АРУ. Без знания теории примите на веру, "не прокатит". Для понимания процесса нужно хотя бы пару курсов радиотехники и метрологии, а для написания приложения уровня ваших мыслей ещё и нехилый багаж информатики широкого профиля отягощенную всеми математиками разом (даже без статистической и вычислительной думаю тут никак).

arte-marty
Offline
Зарегистрирован: 23.01.2014

Добрый день! У кого нить есть описание библиотеки fix_fft.cpp. Она используется в анализаторе спектра звука на ардуино. В каком частотном диапазоне она работает? Как её переделать под частотный диапазон 0 Гц до 9,6 кГц или 4,8 кГц.

 

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Вот

http://yadi.sk/d/CXjuENmaEEwun

В папке скачайте

Fast_Fourier_v1

запустите скетч из примера. библиотека до 9,6кгц как раз

arte-marty
Offline
Зарегистрирован: 23.01.2014

А вы какой дисплей использовали? У меня получилось переделать проект анализатор звука  на дисплее Nokia 5110. В примере вывод производится на комп. 

arte-marty
Offline
Зарегистрирован: 23.01.2014

Вот у меня что получилось с библиотекой fix_fft.cpp

arte-marty
Offline
Зарегистрирован: 23.01.2014

Jeka_tm, а можно сделать чтобы частота от 50 Гц была? И еще можешь про свой проект побольше рассказать? Какой дисплей ты использовал? Если что пиши на почту arte-marty@mail.ru

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

arte-marty пишет:

Jeka_tm, а можно сделать чтобы частота от 50 Гц была? И еще можешь про свой проект побольше рассказать? Какой дисплей ты использовал? Если что пиши на почту arte-marty@mail.ru

я это либу не писал. проект никакой не делал. просто баловался с ней

дисплей нокиа 1202. дисплей какой хотите

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

64 точки шаг 150гц

128 точек шаг 75гц

256 точек шаг 37,5гц

512 точек шаг 18,75гц

если при 512 взять 3 точку то получится 56,25

но это лишь мои предположения что полоса остается таже, а меняется лишь количество точек

либа написана на асме, поэтому мне лично нифига непонятно

я давал выше ссылку на библиотеку быстрого преобразования хартли

если правильно понятно то там есть код для процессинга, и на компе можно посмотреть в реальном времени спектр. не проверял, но думаю там и частоты будут прописаны. попробуйте, может вам подойдет

ну или можете сами написать код, чтобы 50гц была одной из измеряемых частот