Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
 
С чаем беда...
Эксперт CЭксперт С++
7199 / 3536 / 960
Регистрация: 18.10.2014
Сообщений: 7,205
1

Анализ спектра двух сигналов через один ADC

26.05.2020, 04:45. Просмотров 146. Ответов 3
Метки нет (Все метки)

Два вопроса, слегка связанных друг с другом.

Предположим у нас есть анализатор спектра звукового сигнала на базе микроконтроллера (Arduino UNO и т.п.). Микроконтроллер обладает одним АЦП, который можно мультиплексировать на несколько входных каналов. Изначально используется только один канал (монофонический сигнал). Для построения спектра входного сигнала снимаются 128 сэмплов с частотой дискретизации примерно 38.5 кГц (которая впрочем может быть увеличена вдвое с некоторой потерей точности). Далее снятые сэмплы идут в FFT (или FHT), на выходе которой получается спектр. Все прекрасно работает.

---

Вопрос 1:

А вот теперь я хочу выполнять ADC для двух стерео каналов независимо. Каком образом лучше/правильнее выполнить мультиплексирование единственного ADC в таком случае?

Вариант 1: Выполнять мультплексирование после каждого сэмпла. То есть снимать один сэмпл с левого канала, затем переключать ADC на правый и снимать один сэмпл с правого канала, затем перключать ADC на левый... И т.д. до получения 128 сэмплов с обоих каналов. Понятно, что частота дискретизации каждого канала при таком подходе упадет вдвое и это следует компенсировать подъемом общей частоты дискретизации вдвое.

Вариант 2: Принять все 128 сэмплов с левого канала, после чего принять все 128 сэмплов с правого канала. Здесь есть свои очевидные недостатки.

---

Вопрос 2:

Сэмплирование и FFT для очередной порции из 128 сэмплов работают так быстро, что обновлять выводимый на устройство отображения спектр можно/приходится с чрезмерно высокой частотой. Такая высокая частота обновления устройства отображения совершенно не нужна. Ее запросто можно уменьшить в 10-20 раз и "никто ничего не заметит".

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

Вариант 0: Вместо 128 сэмплов брать и обрабатывать больше (512 например). Спектр будет один и качественный. Хорошая идея, но она упирается в ограничения по памяти в использованном микроконтроллере.
Вариант 1: Брать только последний спектр. Тогда получается, что остальные 9 генерировались впустую. Могут теряться характерные моментальные элементы спектра.
Вариант 2: Усреднить спектры. Неплохая идея, но она "скрадывает" моментальные пики и провалы спектрограммы.
Вариант 3: Взять максимум. Пики сохраняются, провалы теряются.

Еще варианты?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2020, 04:45
Ответы с готовыми решениями:

Сравнение спектра двух сигналов
Здравствуйте! Мне дали задание сравнить спектры двух сигналов. Фурье преобразование сделал, спектры...

Коммутирование двух входящих аудио сигналов на один усилитель
Описываю ситуацию: есть два ноутбука на некотором расстоянии друг от друга. Сейчас от каждого из...

Синтез сигналов из спектра
Здравствуйте, дали задание создать программу синтеза непериодических сигналов из их спектра частот,...

Построение спектра сигналов
Сигнал состоит из нижней половины синусоиды и единичного прямоугольного импульса. ...

3
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.05.2020, 06:39 2
TheCalligrapher, добро пожаловать в нашу вотчину

посмотри на stm32
достаточно крутые камни имеют на борту все твои хотелки,и ADC с семплированием до 16 каналов, 2-3 штуки
так что вопрос
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
я хочу выполнять ADC для двух стерео каналов независимо.
сразу отпадет, внутренний DMA который сам будет оцифровывать в нужном порядке, твое дело только забирать и обрабатывать данные
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
орошая идея, но она упирается в ограничения по памяти в использованном микроконтроллере.
памяти там достаточно много
чтобы не возится с изготовлением рекомендую отладочные платы,Nucleo https://www.chipdip.ru/catalog... ?gq=nucleo
discovery https://www.chipdip.ru/catalog... =discovery
discovery подороже но на борту всякая периферия
я бы порекомендовал для экспериментов https://www.chipdip.ru/product0/9000588112
памяти ОЗУ 1 мегабайт, хоть заоцифровывайся
0
С чаем беда...
Эксперт CЭксперт С++
7199 / 3536 / 960
Регистрация: 18.10.2014
Сообщений: 7,205
26.05.2020, 09:35  [ТС] 3
Цитата Сообщение от ValeryS Посмотреть сообщение
и ADC с семплированием до 16 каналов, 2-3 штуки
Ну это-то понятно. Я могу просто взять два микроконтроллера и из моно получится стерео.

Но мне в данном случае более интересны чисто математические соображения в пользу того или иного варианта: почему так правильно, а вот так - не правильно.
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.05.2020, 12:00 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Я могу просто взять два микроконтроллера и из моно получится стерео.
ан не просто синхронизировать то как?
если смотрел формат wav файла , то увидел бы что там лежат поочередно отсчеты левый-правый канал, соответственно
ничего страшного в семплировании нет
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
почему так правильно, а вот так - не правильно.
А как правильно? для каждой задачи свои решения
раз тебе нужен спектр, то скорее всего будешь работать с преобразованиями Фурье
они есть дискретные преобразования Фурье(ДПФ DFT) и быстрое преобразование Фурье(БПФ, FFT)
быстрое работает с отсчетами кратными степени двойки, чем меньше степень тем меньше окно,быстрее реакция, более грубое представление
чем больше степень тем больше окно тем выше точность меньшее быстродействие
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Сэмплирование и FFT для очередной порции из 128 сэмплов работают так быстро,
а теперь представь звук 20000 Гц, частота отсчетов 44100 Гц(стандартная такая) какую минимальную частоту сможешь выделить?
20000/128=156 Гц, так себе спектрограмка
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2020, 12:00

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

Нормировка спектра разных сигналов
Здравствуйте. Вопрос связан с нормировкой сигнала, полученного на выходе функции fft. Для...

Анализ спектра измененного сигнала
Всем доброго времени суток! Пишу диплом, направление Выч. Техника. Ну а тема: Стеганография в...

Анализ спектра мощности временного ряда
Доброго времени суток, форумчане! Я не профи матлаба, но у меня курсовая связанная с анализом...

Определение спектра сигнала, сравнительный анализ
Здравствуйте, дамы и господа! Необходима Ваша помощь и наставление :) Дано1: Потенциальное...

Суперпозиционный анализ сигналов
Всем привет. Предмет ТЭЦ. В методичке данный пункт называется "Суперпозиционный анализ сигнала". К...

Гармонический анализ непериодических сигналов
Начали учить новую дисциплину на первом курсе, а ее раньше вообще начинали учить на втором курсе,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.