roboforum.ru

Технический форум по робототехнике.

STM32F103 ADC

STM32F103 ADC

linvinus » 26 сен 2013, 23:24

Всем привет!
Кто нибудь обращал внимание что на оцифровку каналов влияют значения предыдущего канала?
Например
Оцифровываем в такой последовательности
1 - 10канал
2 - 11канал
3 - 12канал

4 - 1канал
5 - 2канал
6 - 3канал

Данные в 10-12 канале имеют амплитуду 3 вольта
Данные в 1-3 имеют амплитуду 1в
Так вот, в зачении 4го (по очереди) оцифрованного канала всегда присутствует частичное значение от 3го (по очереди) канала, т.е. в данном примере значение 1канала = истинное значение + часть значения от 12канала.
Я перепроверил проникновение точно не через плату/дорожки.
И на осциллографе не видно этой зависимости, т.е. проблема видна только в оцифрованных данных.
Я вроде раньше такое поведение не встречал.
Оцифровываю на максимальной скорости с минимальным временем (1,2,3 каналы - измерение тока в моменты когда ШИМ не влияет на показания)
Зависимость остаётся если разделить по группам, например 10-12 - регулярная группа, 1-3 инжектированная группа.

Собственно вопрос, что делать? может кондёр куда нибудь прилепить?

Re: STM32F103 ADC

dccharacter » 27 сен 2013, 00:19

Сейчас уже точно не вспомню - надо вечером смотреть подробнее, но:

Кондер у тебя уже влеплен. Когда ты делаешь оцифровку - кондер в АДЦ модуле заряжается в течение времени оцифровки, а потом уже МК цифрует значение на кондере на внутреннем. После оцифровки этот кондер нужно разрядить.

Чтобы точно смотреть, что у тебя там - давай код свой.
И убедись, что точно шим не влияет. Флипай какую нибудь ногу перед началом оцифровки и окончанием оцифровки и смотри эту ногу и шим свой - не пересекаются ли.

Добавлено спустя 42 секунды:
А самое первое, что сделай - убери нагрузку с ног и заземли 10, 11 и 12 каналы и посмори что получается.

Re: STM32F103 ADC

boez » 27 сен 2013, 01:13

Уменьшить выходное сопротивление источников сигнала для АЦП - видимо, сейчас слишком высокоомные, не успевают перезарядить конденсатор Sample&Hold АЦП и остается чуток с пред. канала. Видел такое на других МК.

Re: STM32F103 ADC

Duhas » 27 сен 2013, 04:51

или в холостую прогнать 4 по очереди канал разок..

такую проблему в АВРках вроде бы встречали люди.. на сколько я помню не разряжается до конца емкость выборки хранения или что то вроде этого

Re: STM32F103 ADC

linvinus » 27 сен 2013, 09:58

Всем спасибо за отклик!
В холостую прогонять возможности нет,т.к. ток могу мерить только в конкретные , очень ограниченные, промежутки времени.
Попробую поиграться выходным сопротивлением/
Сигнал снимаю при помощи шунта и усилителя http://www.adafruit.com/datasheets/ina169.pdf
Напряжение получаю с резистора RL - 51k далее через 1k на АЦП.

Re: STM32F103 ADC

Duhas » 27 сен 2013, 13:35

дык а запустить вхолостую АЦП сразу после оцифровки 3 канала, не дожидаясь очереди 4? или не впишитесь по таймингам?

Re: STM32F103 ADC

linvinus » 27 сен 2013, 15:14

Duhas писал(а):дык а запустить вхолостую АЦП сразу после оцифровки 3 канала, не дожидаясь очереди 4? или не впишитесь по таймингам?


Я сначала не так понял. А какие данные должны оцифровываться на холостом ходу?

Моё изначальное предположение что проблема связана с питанием АЦП (думал может дополнительный конденсатор подвесить к питанию АЦП, сейчас питание STM и питание ADC в STM объединены)
Косвенно подтверждается таким опытом:
подвешиваем ножки

1, 2, 3 канала в воздухе, оцифровываем. получаем что то типа 2000 +- 100 во всех трёх

сажаем 1 канал на землю, получаем на выходе
0 , 1700, 2000 ,

хотя, вот сейчас подумал, это получается аналогичный случай высокому выходному сопротивлению


В вашем варианте всё равно останется след от холостого прохода.

Наверное, правильный подход именно понижать выходное сопротивление, возможно поставить повторяющий каскад на операционнике.

Re: STM32F103 ADC

Duhas » 27 сен 2013, 15:48

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

Re: STM32F103 ADC

linvinus » 27 сен 2013, 16:22

Duhas писал(а):ну в целом - да, надо бы согласовывать вход АЦП с выходами источников сигнала, но никто не мешает разрядить емкость и подругому..в частности сразу после измерения 3 канала прогнать измерение чего нить другого, что не задерет сильно заряд емкости..


Так есть и обратный эффект, если разрядить в 0 то следующее измерение получается заниженное.

Re: STM32F103 ADC

dccharacter » 27 сен 2013, 16:47

Меня все игнорируют. Ну попробую еще: ты ждешь окончания конверсии?

Код: Выделить всёРазвернуть
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  // Wait until conversion completion
  while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
  // Get the conversion value
  return ADC_GetConversionValue(ADC1)

Re: STM32F103 ADC

linvinus » 27 сен 2013, 18:03

ADC3, Обычную группу получаю по dma, инжектированную считываю без проверки.

Код тебе вряд ли чем то поможет, у меня chibios, регулярную группу считываю через драйвер этой ос для работы с ADC.
Инжекторную напрямую с регистров.

Re: STM32F103 ADC

dccharacter » 27 сен 2013, 18:43

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

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

Re: STM32F103 ADC

linvinus » 28 сен 2013, 23:35

Duhas писал(а):ну в целом - да, надо бы согласовывать вход АЦП с выходами источников сигнала, но никто не мешает разрядить емкость и подругому..в частности сразу после измерения 3 канала прогнать измерение чего нить другого, что не задерет сильно заряд емкости..


Не помогло, поставил одно промежуточное измерение канала с землёй, получается следующее измерение (1 канал) принижено , а ещё следующие два уплывают вверх, и я не уверен в точности измерений, т.к. на первом канале в отсутствии тока постоянное значение в районе 300 а на остальных плавающий сигнал в районе 400. Убрал промежуточные резисторы по 1к но и это не помогло. Короче нужен повторяющий ОУ.

dccharacter, спасибо за помощь, с регистрами и прочим у меня нет проблем.

Re: STM32F103 ADC

dccharacter » 29 сен 2013, 00:52

да я вижу

Re: STM32F103 ADC

linvinus » 19 ноя 2013, 23:46

Поставил повторитель на ОУ AD8534A проблема исчезла.
За одно защита АЦП - на выходе ОУ напряжение не превысит 3.6в.


Rambler\'s Top100 Mail.ru counter