roboforum.ru

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

STM32F103 ADC

ARM7, ARM9, ARM11 etc.

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 инжектированная группа.

Собственно вопрос, что делать? может кондёр куда нибудь прилепить?
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: STM32F103 ADC

Сообщение dccharacter » 27 сен 2013, 00:19

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

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

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

Добавлено спустя 42 секунды:
А самое первое, что сделай - убери нагрузку с ног и заземли 10, 11 и 12 каналы и посмори что получается.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32F103 ADC

Сообщение boez » 27 сен 2013, 01:13

Уменьшить выходное сопротивление источников сигнала для АЦП - видимо, сейчас слишком высокоомные, не успевают перезарядить конденсатор Sample&Hold АЦП и остается чуток с пред. канала. Видел такое на других МК.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: STM32F103 ADC

Сообщение Duhas » 27 сен 2013, 04:51

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

такую проблему в АВРках вроде бы встречали люди.. на сколько я помню не разряжается до конца емкость выборки хранения или что то вроде этого
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: STM32F103 ADC

Сообщение linvinus » 27 сен 2013, 09:58

Всем спасибо за отклик!
В холостую прогонять возможности нет,т.к. ток могу мерить только в конкретные , очень ограниченные, промежутки времени.
Попробую поиграться выходным сопротивлением/
Сигнал снимаю при помощи шунта и усилителя http://www.adafruit.com/datasheets/ina169.pdf
Напряжение получаю с резистора RL - 51k далее через 1k на АЦП.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: STM32F103 ADC

Сообщение Duhas » 27 сен 2013, 13:35

дык а запустить вхолостую АЦП сразу после оцифровки 3 канала, не дожидаясь очереди 4? или не впишитесь по таймингам?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: STM32F103 ADC

Сообщение linvinus » 27 сен 2013, 15:14

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


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

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

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

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

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


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

Наверное, правильный подход именно понижать выходное сопротивление, возможно поставить повторяющий каскад на операционнике.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: STM32F103 ADC

Сообщение Duhas » 27 сен 2013, 15:48

ну в целом - да, надо бы согласовывать вход АЦП с выходами источников сигнала, но никто не мешает разрядить емкость и подругому..в частности сразу после измерения 3 канала прогнать измерение чего нить другого, что не задерет сильно заряд емкости..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: STM32F103 ADC

Сообщение linvinus » 27 сен 2013, 16:22

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


Так есть и обратный эффект, если разрядить в 0 то следующее измерение получается заниженное.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

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)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32F103 ADC

Сообщение linvinus » 27 сен 2013, 18:03

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

Код тебе вряд ли чем то поможет, у меня chibios, регулярную группу считываю через драйвер этой ос для работы с ADC.
Инжекторную напрямую с регистров.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: STM32F103 ADC

Сообщение dccharacter » 27 сен 2013, 18:43

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

Напиши безо всяких чибисов прошивку, которая только АДЦ читает - код можно скопипастить из любого интернета, там все элементарное (как ты и без меня знаешь), убедись что все работает также в голом железе и регистрах (ну на крайняк в библиотечных функциях) и тогда уже подключай свою тяжелую артиллерию.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32F103 ADC

Сообщение linvinus » 28 сен 2013, 23:35

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


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

dccharacter, спасибо за помощь, с регистрами и прочим у меня нет проблем.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: STM32F103 ADC

Сообщение dccharacter » 29 сен 2013, 00:52

да я вижу
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32F103 ADC

Сообщение linvinus » 19 ноя 2013, 23:46

Поставил повторитель на ОУ AD8534A проблема исчезла.
За одно защита АЦП - на выходе ОУ напряжение не превысит 3.6в.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

След.

Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron