STM32T
1

Измерение уровней звука. Вопросы. Первый опыт.

07.06.2014, 20:20. Показов 4857. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
Тема моего проекта "Модернизация многоканального устройства контроля уровней звуковых сигналов на основе микроконтроллера STM32"
основная идея устройства заключается в последовательном коммутировании 32 двух каналов низкой частоты, тобишь звуковых сигналов с выходов передатчиков непосредственно перед передачей в эфир с целью их оперативного, одновременного мониторинга на ПЭВМ.
В качестве контроллера был выбран STM32T100RC а точнее отладка на Dyscovery, программный отладчик Keil uVision использую библиотеки StdPeriph, тк на более низком уровне с данным железом общаться пока что не научился, да и вообще можно сказать это мои почти первые шаги в освоении микроконтроллеров.
Коммутатором является микросхема КР590КН6.
1) первый вопрос. как правильно рассчитать время на которое я буду открывать коммутатор на определённый канал?
мой черновой вариант я реализую с помощью:
SysTick_Config(SystemCoreClock/1000);
void SysTick_Homdler(void)
{
if(delay_count>0)
{
delay_count--;
}

}
void delay_ms(uint16_t delay_temp)
{
delay_count = delay_temp;

while(delay_count)
{

}
}
и в main прописываю delay_ms(500);
ножки выхода с отладки для управления коммутатором настраиваю как для светодиода.

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

3) далее с выхода коммутатора сигнал подаётся на внутренний АЦП контроллера, здесь возникает вопрос из разряда тактирования, в мануале
ADC conversion time: 1 ?s at full speed (ADC clocked at 16 MHz) down to 4 ?s at low
speed (ADC clocked at 4 MHz), independent of the APB clock
помогите определиться с точностью на какое минимальное время мне необходимо держать сигнал на АЦП для точного измерения.

Но плюс к этому на старой схеме этого устройства присутствовал выпрямитель и пиковый детектор, присутствует ли необходимость в выпрямлении сигнала или достаточно будет программной реализации пика путём сранения определённой пачки измеренных значений АЦП с выбором наибольшего.

4) четвёртый вопрос. в задачах поставленно использовать 12 битное АЦП, но загвоздка получается в следующем: передачу 12 битного числа я реализую с помощью протокола RS232 тоесть беру USORT подключаю TX и RX через микросхемку CP2102 ,освоил кое что через приложение терминал сом портов он у меня получает от контроллера. Но по ком порту передаётся 8 ми битная пачка, а мне необходимо передавать 12 бит и вот сдесь я не особо представляю как разбить это число, а потом соеденить его уже в программе на ПК.???
на ПК программу реализую на С#. обязательно прошу любые подсказки и решения это вопроса!!!

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

P.S. я уверен что для многих из вас эта задачка на 2 минуты потраченного времени:)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2014, 20:20
Ответы с готовыми решениями:

STemWin на STM32F4. Первый опыт. Вопросы.
Вот, задумавшись о GUI, решил попробовать эту либу. Моё железо - STM32F4 (Dyscovery) и дисплей с...

Сжатие динамического диапазона сигнала,измерение rms,mean,max уровней-как осуществить?
1.В общем,такая цель,уменьшить динамический диапазон сигнала,то есть разницу между максимальным и...

Скрипт автоматической настройки уровней звука
Добрый день господа! Может кто знает, есть ли возможность сделать скрипт по автоматическому...

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная...

6
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 21:10 2
Че-то мутно как-то. Если нужен контроль- возьмите внешнюю многоканальную звуковую карту и контролируйте.
Вопросы и ответы, если приперло делать самому:
1. Зачем одновременно мониторить 32 канала? В эфир сразу сколько идет?
2. Читайте ДШ на контроллер. Если USORT контроллера без кварца работает неустойчиво, значит кварц нужен.
3. Насколько я понимаю, источники нужно мониторить с целью выявления превышения уровня (перегруза). Следовательно, нужен пиковый детектор.
4. 12 бит помещается в 2 байта. Передавайте их по RS232, компьютер разберется.
5. Если вы собрались мерять амплитуду с помощью АЦП, то должны прочитать про уровень напряжения входного сигнала. Он, ЕМНИП, должен быть в пределах 0,7 Вольта. Ограничьте макс отсчет в 1В. Отсюда и считаем.
И это. Коммутатор смените.
0
STM32T
07.06.2014, 21:50 3
1.да в эфир идёт 32 канала и их необходимо мониторить
2.вопрос именно в том как подсчитать время на которое я буду открывать канал исходя из тактирования
3.возможно ли пиковый детектор реализовать условно с помощью ацп нахождением максимального значения из нескольких измеренных сигналов?
4.с 12 битами я разобрался более менее
5.до коммутатора у меня присутствует схема ограничивающая сигнал до 0,7 вольт. тоесть опорное напряжение на ацп мне следовало бы сделать 1 вольт для большей точности?
на этом коммутаторе необходимо сделать)
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 22:40 4
Вы бы задачу поподробней описали. Что значит мониторить? Аларм включить при превышении? Или АРУ сделать?
Про время. Представьте, идет у вас фильм. Двое встретились. Молчат. Икс минут молчат. Внезапно: гром и молния, дождь пошел.
0
STM32T
07.06.2014, 23:06 5
:) я стараюсь как можно подробнее описать)
мониторить тоесть измерять уровень сигнала поочерёдно по каждому каналу и отображать в прогрес баре моего приложения на ПК в децибелах уровень сигнала.
подскажите как мне подсчитать используя SysTick_Homdler что бы у меня ну скажем диод загорался (открывался канал на коммутаторе) на 1 мс, а там уже я буду сравнивать значения измерений и выбирать максимальное и считать его пиком за этот интервал, и отправлять на ПК.
Тоесть я не могу понять как установить правильно эту задержку как посчитать именно для этого контроллера с его собственным генератором какая у него частота. В общем каким образом мне точно узнать что я на 1 мс открываю свой канал.
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 23:15 6
http://iosyitistromyss.ru/arm-uchebnyj- ... ajmer.html
0
Kooooood
21.06.2014, 19:57 7
обожаю безумные задания отставшие от жизни на пару 10 летий....

занудствования старпера о вещаниичем опасно превышение уровня сигнала в ЧМ вещании? Кросс-модуляционными помехами.
По этому даже в далекие времена аналогового вещания, в каждом передатчике стоял жесткий лимитер ограничивающий сигнал в допустимых значениях (аналоговый, непрерываного действия)...

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

На сегодняшний день аналоговой доставки сигнала к передатчикам практически нет. Везде цифровое уплотнение, а значит фильтрацию, и ограничение сигнала дешевле всего проводить сразу в цифре задолго до ЦАП передатчика.

Сейчас гораздо интереснее обеспечение вещания согласно современным нормам ITU 1770 -- чего стоит один рекомендуемый индикатор-развертка и учет громкости многоканального звука...

Но если решать "древнюю задачу на новой элементной базе"

в ТЗ должно быть указано --
1) уровень допустимый в попугаях...
2) уровень не допустимый в попугаях+минимальная длительность...

разделив длительность минимум на 2 ты получишь частоту дискретизации для Каждого канала... Ну и время на основной цикл работы контроллера.

это основная цифра которая будет тебе постоянно мешать жить :) ибо в это время надо будет укладывать ВСЕ остальное... Это по программированию...

Если тебе надо будет спаять то тебя ждет еще прикольнее... На каждый канал ты будешь вынужден поставить выпрямитель с "аналоговой памятью" в котором будет накапливаться пиковое значение и хранится до тех пор пока ты его не считаешь. Та еще схема :) особенно если ее место работы, находится в реальных условиях рядом с 32 реальными передатчиками и всеми помехами между собой.... а да кабели для соединения тоже надо учитывать...

В глубокой теории у STM32T100RC --- 21 канал ADC так что в теории ты можешь настроит ADC через DMA и получать блоки данных и так же через DMA UART почти не теряя времени отправлять их в комп... только переключать блоки между собой -- загрузка-отправка..

21 канал и 31 не совпадают напрямую.. надо будет думать... как туда запендорить деление но явно не двумя КР590КН6 :)
Может взять кого-то из этих http://c2n.me/imGqHV ?

чуть чуть занимательной прикладной арифметики -- частота дискретизации компакт диска 44100 = 0.000022676 разделить на 21 канал = 0.000001080
ADC conversion time: 1 ?s at full speed (ADC clocked at 16 MHz)
все совпадения число случайны!!!!

Как правило на этом этапе выясняется что оцифрованные данные превышают скоростные возможности UART и приходится как-то "прореживать" их... и тут начинается самое веселье -- надо обеспечивать чтобы обработка-прореживание блоков укладывалась в ту самую цифру....

Увы и ах работа далеко не соответствует утверждению
эта задачка на 2 минуты потраченного времени:)
все необходимые фрагменты кода легко гуглятся по русски:

https://www.google.com.ua/seorsh?num=10 ... QaZEEac8Bs

https://www.google.com.ua/seorsh?num=10 ... ouh-TkQhOc
21.06.2014, 19:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2014, 19:57
Помогаю со студенческими работами здесь

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть...

Моддинг - первый опыт
Здравствуйте, форумчане ! Хотел бы выложить свою первую работу по моддингу и услышать ваше мнение?...

Первый опыт с FPGA
Хочу продолжить тему начатую когда-то dmtr. Кратко напишу, что он когда-то сделал - кое-что...

Первый опыт с OpenGL
Всем привет! Я долго искал ответ на свой вопрос,пробовал и так,и эдак,но никак не получилось у...

Первый опыт знакомства с Qt
Ребята, подскажите пожалуйста по поводу сборки Qt под Visual Studio 2005. Я вчера раз 5 пытался...

На суд. первый опыт
Первый опыт с микроконтроллером. Хотелось сделать что то не обычное ) .. В итоге взял картину...

Первый опыт с USART
Всем привет, Пытаюсь подключить ATtiny2313 к som-порту. Присоединил к max232 по даташиту....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru