Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.98/46: Рейтинг темы: голосов - 46, средняя оценка - 4.98
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
1

АЦП в stm32vl

06.01.2013, 18:52. Просмотров 8602. Ответов 21
Метки нет (Все метки)

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

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

это что то из элементарной электроники или я что то не так делаю? или МК просто не умеет такие частоты принимать?))
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 18:52
Ответы с готовыми решениями:

STM32VL-discovery нет АЦП на портах выше GPIO_Pin_7
Что за чертовщина? Посмотреть кодvoid GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; ...

Как связать таймер с АЦП и АЦП с DMA?
Вообщем стоит такая задача: через определенные интервалы времени периодически запускать...

Алгоритм работы с ацп АЦП STM32F103
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста алгоритм работы с ацп. Допустим мне надо...

bmp085+stm32vl discovery
Добрый вечер. Хочу прикрутить датчик давления bmp085 к stm32vl discovery. I2c использую...

STM32VL Discovery настройка таймера
Здравствуйте. Пытаюсь научиться нормально работать с учебной платкой STM32VL Dyscovery. Пока...

21
komtrottir
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 500
06.01.2013, 20:13 2
А что ты с ней (музыкой) делаешь, пустив в контроллер?
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
06.01.2013, 20:18 3
ну опыт делал просто чтобы понять ацп, поэтому хотел просто посмотреть, как он разобьет музыку... если пример какой нужен, то можно опять же на мигание многострадального светодиода посмотреть... в перспективе как то оцифровку звука хотелось бы сделать, но я пока не умею связывать МК с компом и не умею с памятью работать))
0
romomitz
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 10
06.01.2013, 20:53 4
Это из элементарной электроники: нужно средний уровень сигнала сдвинуть на половину опорного напряжения АЦП, а максимальную амплитуду (громкость) выставить равной половине опорного напряжения АЦП. Дело в том что АЦП в STM32 однополярный, а вот выход плеера - двухполярный с нулевой постоянной составляющей. Сдвиг можно сделать делителем напряжения из двух одинаковых резисторов или схемой на ОУ.
0
06.01.2013, 20:53
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
06.01.2013, 21:28 5
romometz, спасибо, это уже интереснее)) а откуда взять можно опорное напряжение? в референс мануале вот это есть
? ADC supply requirement: 2.4 V to 3.6 V
? ADC input range: VREF- ? VIN ? VREF+
это то или что то другое?))

и как мне узнать, каков средний уровень для выхода в плеере?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
07.01.2013, 18:32 6
Цитата Сообщение от z-z
...каков средний уровень для выхода в плеере?
Т. к выход двуполярный, замеряем общую амплитуду и делим на 2. Но нужно учитывать что пиковое значение сигнала будет больше измеренного тестером в корень из двух раза (1.41).
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
09.01.2013, 16:01 7
похоже мои вопросы переходят где то на уровень 10 класса, но как замерить амплитуду?))

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

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

запутался, товарищи, помогите))
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
09.01.2013, 21:22 8
1 - Измерять максимальный уровень выходного сигнала звуковой карты, при каком то установленом уровне звучания.
если нету осцилографа. Померять тестером чистый синусоидальный сигнал, и его же направить в АЦП. НО обычные тестеры нормально меряют до частоты ~ 250 - 400 Гц и то что ты померяеш будет справедливо только для одной частоты (тоесть, если в выходном сигнале будут присутствовать несколько частот - гармоник, то их сумарный уровень будет равен геометрической суме, но пока что не заморачивайся...). Для генерации синусоиды можно использовать любую из кучи доступных програмок (например "fr.ixi", скинь ядрес, я тебе вышлю).
2 - То что намерял мультиметром (напоминаю, установленая частота генерации для измеррения мультиметром не более 300 Гц) множиш на корень(2) - это и есть напряжение, которое нужно "добавить" к двухполярному синусоидальному сигналу. Если используеш АЦП discovery32vl без каких либо изменений в ее конструкции, добавочное напряжение дожно быть 1.5 В.
3 - "сооружаеш" схемку, которая выполняет функцию "добавки" напряжения:(самый простой вариант) от пина "3 V" дискавери делаеш делитель из двух резисторов по 10 кОм, среднюю точку (между двумя резисторами) подключаеш к ножке АЦП и к неполярному конденсатору (емкость конденсатора - максимальная которую найдеш, от нее зависит минимальная частота, которую может пропустить твоя схема с делителем, в противном случае нужно понижать сопротивление плечей делителя), вторую ножку конденсатора подключаеш к источнику сигнала - компютеру.
4 - От результатов измеений отнимаеш величину опорного напряжения: 4095/2 (в ненормированом виде).
САМОЕ ГЛАВНОЕ !!!!!!!!!!!! при разработке следующих схем учитывай, что входное сопротивления АЦП зависит от частоты квантирования (для твоего дивайса это 400 - 1300 Ом). Для начальных эксперементов со звуковой каартой это не столь важно.
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
10.01.2013, 19:21 9
Kooddjomp, спасибо большое, вы прям так разжевали, что и измерять видимо не надо уже... но тут дело принципа... амплитуда на выходе не хочет измеряться... ни при холостом ходе, ни с нагрузкой - брал резистор 100 Ом и 10 кОм... может мультиметром что то не так делаю... но вроде проверял и в переменном и в постоянном режиме... никак не хочет))
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
10.01.2013, 19:39 10
ан нет, смог измерить... даже при 10 кГц измерил.... правда не знаю, правильно ли он показал))
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
10.01.2013, 20:38 11
Если измерял китайским мультиметром (на примере моего DT9205A):
ДИАПАЗОН ТОЧНОСТЬ РАЗРЕШЕНИЕ
200 мВ ± 1.2%100 мкВ
2 В ± 0.8%1 мВ (странно: 2*0.008=0.016, тоесть 20 мВ)
20 В 10 мВ
200 В 100 мВ
750 В ± 1.2 %1 В
Диапазон частот: от 40 Гц до 400 Гц

Так что на 10 кГц мерять то он ЧТО ТО будет.. но очень далекое от истины.

Интереснее конечно осцилографом.. Много интересного можно увидеть.. особенно на примере генераторов частот на звуковых картах ))))))))))))))))).. Там вообще умора )))
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
10.01.2013, 20:43 12
на 50 герцах показывает 3.63 В, на 10 кГц показывает 6.92 В.
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
10.01.2013, 20:43 13
Если чтото по АЦП не понятно.. спрашивай.
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
10.01.2013, 20:56 14
спасибо большое, я только его начал дергать, поэтому поспрашиваю))) а на счет частоты... мультиметр, если правильно понимаю, М-380В у меня... на 200 Гц показывал 0.3 вольта, на 10кГц 0.4... к сожалению точность больше 200 вольт нету...((
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
10.01.2013, 21:55 15
Дамс. Раньше внимания не обращал как на китайских приборах пишут метрологические характеристики)))
Ну эт не важно. У тебя вольтметр показал 0.3 В - это действующее значение. Масимальное соответствено - +-0.42.
Для начала можеш сразу подать на вход АЦП. Максимальный результат преобразования будет (0.42*4095)/3 = 573. Загнать припустим 100 преобразований в масив о посмотретькак изменяеться ...эээ напряжение.... Будет как после диода - только положительная полуволна. Можно приблизительно посчитать частоту.. Попробуй ))
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
10.01.2013, 22:08 16
хм, вроде сделал... с компа все заработало))) но вот проблема... я не понимаю, что я сделал)))))))

взял код, который мигает диодами в зависимости от напряжения на пине... так вот, получается, что если напряжение больше или меньше, включается другой диод? или когда АЦП генерирует 1 и когда 0 ?))

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

и еще... когда штекер включен в компьютер, но музыка не играет, то есть есть только опорное напряжение, диоды быстро мигают, а если штекер совсем отключить от компа, то они медленно мигают... пока не понял, как АЦП работает, но очевидно, что там разные значения в этих двух режимов... почему? шумы, что ли?))))
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
10.01.2013, 22:12 17
Цитата Сообщение от Kooddjomp
Дамс. Раньше внимания не обращал как на китайских приборах пишут метрологические характеристики)))
Ну эт не важно. У тебя вольтметр показал 0.3 В - это действующее значение. Масимальное соответствено - +-0.42.
Для начала можеш сразу подать на вход АЦП. Максимальный результат преобразования будет (0.42*4095)/3 = 573. Загнать припустим 100 преобразований в масив о посмотретькак изменяеться ...эээ напряжение.... Будет как после диода - только положительная полуволна. Можно приблизительно посчитать частоту.. Попробуй ))
для меня это пока сверхпилотах)) я не знаю, как сохранить значения ацп)))
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
10.01.2013, 22:30 18
Когда чтото собираешся програмировать, продумай как устройство должно работать и какие процесы должны происходить, даже без привязки к МК.
Для того чтобы светодиод мерцал с разной частотой, нужно этой частотой управлять - увеличивать или уменшать период прямоугольных импульсов со скважностью 50 % "мииндр". Так вот, в даном случаи частотой управляет АЦП, точнее реультат аналого-цифрового преобразования. Увеличиваеться напряжения - результат АЦП увеличиваеться соответствено поднимаем частоту мерцания и наоборот.
Относительно музыки. Тебе полезно было бы посмотреть осцылограму звука. Правда это можно сделать и на компе. Качни програму для обработки звука, запиши свой голос, и сможеш посмотреть зависимость "электрическое напряжения твоего голоса". В теории спектр воспринимаимого а соответствено и воспроизаодимого человеком звука приблизительно 24 - 24000 Гц. Тоесть каждый "звук" это смесь частот разной амплитуды. Поэтому зависимость напряжения которое провоцирует звук на микрофоне от времени выглядит как.... двухполярная кардиограма. В каждый момент времени величина напряжения разная: от - минимум до + максимум.

Когда щтекер включен в комп, но музыка не играет, там всеравно присутствует какя-то постоянная составляющая напряжения, поэтому они и мигают относительно быстро.
0
z-z
169 / 168 / 56
Регистрация: 22.06.2011
Сообщений: 980
11.01.2013, 13:14 19
все равно не до конца понимаю...(

во кусок кода

Код
    adc_res=ADC1->JDR1;
delays(adc_res);
GPIO_WriteByt(GPIOC,GPIO_Pin_9,Byt_RESIT);
GPIO_WriteByt(GPIOC,GPIO_Pin_8,Byt_SIT);
если я правильно понимаю, в adc_res будет либо 1, либо 0... или там будет набор еденичек и ноликов, которые являются двоичным значением напряжения на входе?

и как то можно с частотой сигнала работать? или я только амплитудой смогу работать?))
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
11.01.2013, 17:59 20
Это, то шо ты прислал.
Считываэться результаты АЦП в переменную adc_res (измеряное напряжение);
Перерыв (ожидение) на время adc_res "delays(adc_res);", соответствено чем больше adc_res (выше напряжение), тем дольше ждем, тем менше частота;
Тушиться светодиод на нажке 9 порта С;
Зажигаеться светодиод на нажке 8 порта С;
И так по кругу - бесконечному циклу.

Тоесть, частоту мы изменяем путем изменения время простоя програмы "delays(adc_res);" (функция delays() - это функция простоя).
Величину напряжения просто так менять не можем.

Понятно ??
0
11.01.2013, 17:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 17:59

ST-Link не шьет stm32vl discovery
Хочу прошить микроконтроллер на stm32vl discovery через ST-Link v2. Я знаю, что можно шить по USB,...

Начало работы stm32vl-discovery
Добрый день! Помогите разобраться в программировании контроллера! Чужая программа, все работает,...

TFT 320x240 + STM32VL Discovery
Доброго времени суток. Пытаюсь запустить вот такой дисплей: <Изображение удалено>...


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

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

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