Перейти к содержанию
    

Нелинейности внутреннего АЦП в STM32

Занизил частоту ADCCLK поделил на 16, все стало ок... Век живи век учись ;-)

Семён Семёныч! :-) Видимо, было превышение ADC clock 14 MHz max...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Семён Семёныч! :-) Видимо, было превышение ADC clock 14 MHz max...

очевидно именно это и произошло по собственному моему недосмотру и забывчивости, зато вот как интересно это проявилось :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И так на ножке PC5 через резистор в 10к подключен лабораторный источник

 

Большие резисторы на входе АЦП нужно использовать с осторожностью, особенно в сочетании с конденсаторами. Про это много написано в AN2834, свои соображения по этому поводу высказал тут: http://leoniv.livejournal.com/194681.html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большие резисторы на входе АЦП нужно использовать с осторожностью, особенно в сочетании с конденсаторами. Про это много написано в AN2834, свои соображения по этому поводу высказал тут: http://leoniv.livejournal.com/194681.html

Полностью согласен. Это очень важная особенность, не учитавая которую, АЦП начинает измерять фазы Луны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Найдите у STMicroelectronics AN3137, там показано устройство АЦП. И, вообще, поиском слова ADC советую пройтись по их сайту. Например, AN1636 интересный документ. AN2719.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документ AN3137 во многом повторяет AN2834. Там содержится такое же описание структуры АЦП, и даже та же ошибка в формуле для вычисления периода выборок с большой входной емкостью.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документ AN3137 во многом повторяет AN2834. Там содержится такое же описание структуры АЦП, и даже та же ошибка в формуле для вычисления периода выборок с большой входной емкостью.

У меня в разных местах лежали разные версии этого документа. В первой картинок с конденсаторами не было.

Посмотрел вашу статью. Похоже, вы не поняли их совета подключать большой внешний конденсатор. Такой, чтобы напряжение на нем не сильно изменялось при заряде внутреннего конденсатора УВХ, не более, чем половина младшего разряда. Этот совет "вреден" только тем, что сильно уменьшается полоса измеряемого сигнала.

Что творится в цепи сигнала до УВХ, значения не имеет (кроме помех соседям, и импульсной нагрузки ОУ). Важно, что мы имеем после УВХ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот совет "вреден" только тем, что сильно уменьшается полоса измеряемого сигнала.

 

Нет. Этот совет может быть вреден еще и тем, что способен привести к ошибке измерения по постоянному току. Большая емкость на входе АЦП обеспечит среднее значение напряжения, которое будет отличаться от измеряемого на величину Verr = Rin * Iin_avg, где Rin - сопротивление на входе АЦП (вместе с внутренним сопротивлением источника сигнала), Iin_avg - средний входной ток АЦП. Для худшего случая Iin_avg = Vref * Csh * Fs, где Vref - опорное напряжение, Csh - емкость УВХ, Fs - частота выборок АЦП.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Входной ток у АЦП - это ток заряда внутреннего конденсатора, во время выборки. Если бы напряжения на внешнем и внутреннем конденсаторах были равными, вообще никакого тока не было бы.

Это не постоянная величина. Здесь ошибка.

 

Если источник сигнала (с его внутренним сопротивлением, или дополнительным последовательным резистором) способен зарядить внешнюю большую емкость за время от выборки к выборке, то почему он не справится с суммой внешней и маленькой внутренней? Если не справляется и с внешней - это и есть ограничение полосы.

 

В AN2834 пишут про то, что заряд с внутренней емкости может подзаряжать внешнюю, если слишком часто делать выборки. Это уже для случая большого сопротивления источника. Но не настолько большого, чтобы не успевать заряжать внешнюю емкость.

 

Если же говорить о постоянном входном токе АЦП (утечки, и т.п.), то он создает на сопротивлении источника постоянную ошибку. Это уже не зависит от емкостей вообще никак.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы напряжения на внешнем и внутреннем конденсаторах были равными, вообще никакого тока не было бы.

 

Верно. Но после процесса преобразования заряд внутреннего конденсатора в общем случае не равен начальному, который был в конце выборки. Более того, при мультиплексировании каналов этот заряд зависит от входного напряжения предыдущего канала. Т.е. входной ток есть, и он зависит как от входного напряжения данного канала, так и от входного напряжения предыдущего канала.

 

Это не постоянная величина. Здесь ошибка.

 

Понятное дело, что не постоянная, я же написал: "для худшего случая".

 

Если источник сигнала (с его внутренним сопротивлением, или дополнительным последовательным резистором) способен зарядить внешнюю большую емкость за время от выборки к выборке

 

Если способен зарядить с точностью до 1/2 LSB, то ошибки нет. Но с повышением частоты выборок появляется ошибка. Я предложил простую формулу, основанную на расчете среднего входного тока АЦП, которая дает оценку максимальной допустимой частоты выборок для конкретного Rin при условии Cext >> Csh.

 

Если не справляется и с внешней - это и есть ограничение полосы.

 

Ограничение полосы - это совсем другое. Можно взять две разных RC-цепочки с одинаковым тау, но с разным соотношением R и C. Они будут иметь одинаковую частоту среза. Но одна будет давать погрешность по DC, другая - нет. Это зависит от R.

 

Если же говорить о постоянном входном токе АЦП (утечки, и т.п.)

 

Ток утечек я вообще не рассматриваю из-за его малости.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я предложил простую формулу, основанную на расчете среднего входного тока АЦП, которая дает оценку максимальной допустимой частоты выборок для конкретного Rin при условии Cext >> Csh.

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

Q = Uh * Csh

В режиме выборки внешний конденсатор Cext подключается к внутреннему, и внутренний заряд распределяется между обоими конденсаторами. Напряжение (без учета того, что уже есть на Cext, посчитаем выброс при выборке) будет рассчитываться так:

Uh * Csh = Us * (Csh + Cext)

Us = Uh * (Csh / Csh + Cext)

Чем больше внешний конденсатор, тем меньший выброс на входе АЦП будет при переключении в режим выборки.

Резистор Rin в расчете выброса не участвует. Он определяет наклон, с которым выброс спадает. Чем меньше резистор, тем короче выброс, согласно постоянной времени Rin * (Csh + Cext).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем больше внешний конденсатор, тем меньший выброс на входе АЦП будет при переключении в режим выборки.

 

Я говорил про случай, когда Cext >> Csh и выброс не превышает 1/2 LSB. Т.е. по причине выброса ошибки нет вообще. Но, тем не менее, ошибка появляется, если Rin > Vlsb / (2 * Vref * Csh * Fs). И эта ошибка не зависит от Cext, а только от Rin и Fs. Скажем, при частоте выборок 1 кГц ошибка начнет появляться при увеличении Rin выше 15 кОм. И никаким увеличением емкости на входе АЦП ее не устранить.

Изменено пользователем Леонид Иванович

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если от Cext не зависит, то почему вы назвали совет повесить дополнительный конденсатор "вредным"?

 

Если нет выброса, откуда возьмется ошибка?

 

В ваших формулах фигурирует Fs. Напоминаю еще раз, что ток идет только во время выборки. Во время преобразования тока нет. А источник заряжает внешний конденсатор постоянно.

 

Ваша формула годится для постоянного тока, заряжающего (разряжающего) внутренний конденсатор. В данном случае это не так.

 

Скажем, при частоте выборок 1 кГц ошибка начнет появляться при увеличении Rin выше 8 кОм.

Можете показать на спайс-модели?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если от Cext не зависит, то почему вы назвали совет повесить дополнительный конденсатор "вредным"?

 

Потому что Вы невнимательно читали то, что я написал. Возможны два случая, когда ошибка будет отсутсвовать: это или маленькая емкость Cext (в пределе - только емкость УВХ), которая успевает заряжаться с точностью лучше 1/2 LSB за время выборки, или большая емкость Cext, которая за время выборки разряжается менее чем на 1/2 LSB. В первом случае на величину ошибки влияет значение RC и время выборки, период выборок значения не имеет. Во втором случае имеет значение период выборок и величина R, время выборки значения не имеет. "Вредным" Cext может оказаться в первом случае, его добавление может привести к появлению заметной ошибки.

 

Если нет выброса, откуда возьмется ошибка?

 

Уф, который раз уже... Ошибка возмется из-за среднего входного тока АЦП. Во время каждой выборки через входной пин АЦП проходит некий заряд. Если этот заряд умножить на частоту выборок, получим средний входной ток.

 

В ваших формулах фигурирует Fs. Напоминаю еще раз, что ток идет только во время выборки. Во время преобразования тока нет. А источник заряжает внешний конденсатор постоянно.

 

Так и есть. Между Cext и Csh течет импульсный ток, а между источником сигнала и Cext - практически постоянный. Вот этот ток и создает падение на Rin, что приводит к ошибке.

 

Ваша формула годится для постоянного тока, заряжающего (разряжающего) внутренний конденсатор. В данном случае это не так.

 

Моя формула для среднего входного тока, который по переносу заряда в единицу времени соответствует импульсному входному току АЦП.

 

Можете показать на спайс-модели?

 

Легко. И на модели, и вживую на плате с STM32. Вот скриншот результатов моделирования, схему модели приводил у себя в LJ.

post-18986-1393923756_thumb.png

Изменено пользователем Леонид Иванович

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не трудно, покажите, что будет при Cext = 200 uF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...