STM32T
|
|
1 | |
Измерение уровней звука. Вопросы. Первый опыт.07.06.2014, 20:20. Показов 4857. Ответов 6
Метки нет (Все метки)
Всем доброго времени суток!
Тема моего проекта "Модернизация многоканального устройства контроля уровней звуковых сигналов на основе микроконтроллера 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 минуты потраченного времени:) |
07.06.2014, 20:20 | |
Ответы с готовыми решениями:
6
STemWin на STM32F4. Первый опыт. Вопросы. Сжатие динамического диапазона сигнала,измерение rms,mean,max уровней-как осуществить? Скрипт автоматической настройки уровней звука Первый опыт |
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 |
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 и приходится как-то "прореживать" их... и тут начинается самое веселье -- надо обеспечивать чтобы обработка-прореживание блоков укладывалась в ту самую цифру.... Увы и ах работа далеко не соответствует утверждению https://www.google.com.ua/seorsh?num=10 ... QaZEEac8Bs https://www.google.com.ua/seorsh?num=10 ... ouh-TkQhOc |
21.06.2014, 19:57 | |
21.06.2014, 19:57 | |
Помогаю со студенческими работами здесь
7
Первый опыт Моддинг - первый опыт Первый опыт с FPGA Первый опыт с OpenGL Первый опыт знакомства с Qt На суд. первый опыт Первый опыт с USART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |