Embedded HandbookПриложения
Все разделы › XXI. Аналоговые узлы
STM32F103, STM32F407, STM32G431, STM32L431 · уровень средний · 7 мин чтения
Открыть в интерактивном справочнике

180. Аналоговый тракт вокруг АЦП: ёмкость выборки, буфер, мультиплексор, драйвер

Раздел 50.6 объяснил, зачем конденсатор у входа АЦП, раздел 14 — как устроен сам преобразователь. Здесь — что происходит в первые сотни наносекунд после того, как АЦП замыкает ключ выборки, и почему высокоомный датчик нельзя подключать к входу напрямую.

Числа ниже — модель ngspice: ёмкость выборки 5 пФ, сопротивление ключа 1 кОм, время выборки 200 нс, источник 2,0 В с сопротивлением 10 кОм; ёмкость выборки перед замыканием заряжена до 1,0 В от прошлого измерения.

Как это называется в документации

Оригинал Перевод
sample and hold (S&H) устройство выборки и хранения
sampling capacitor (CADC) ёмкость выборки
sampling time / acquisition time время выборки
input impedance / source impedance входное сопротивление / сопротивление источника
ADC driver драйвер АЦП
charge injection / kickback бросок заряда на входе
multiplexer channel crosstalk перекрёстная помеха каналов
settling to N bits установление до N разрядов
reconstruction filter восстанавливающий фильтр

180.1 Что происходит при выборке

Внутри АЦП ключ подключает ко входу конденсатор выборки. Он заряжен от прошлого измерения, и за время выборки должен зарядиться до нового напряжения через сопротивление источника и ключа. Постоянная времени — (Rист + Rключа) · Cвыб = (10 кОм + 1 кОм) · 5 пФ = 55 нс; чтобы установиться до 12 разрядов, нужно ln 2¹³ ≈ 9 постоянных, то есть 496 нс. Выборка длится 200 нс:

Что стоит перед АЦП Через 200 нс Ошибка В кодах
источник 10 кОм напрямую 1,973 В −26,6 мВ 33
источник и 100 нФ у входа 1,99995 В −0,05 мВ 0,06
буфер на ОУ 2,00001 В +0,01 мВ 0
буфер, 100 Ом и 1 нФ 1,99921 В −0,79 мВ 1

Эквивалент входа АЦП при выборке: источник 10 кОм, ключ 1 кОм и ёмкость выборки 5 пФ — постоянная времени 55 нс

Через 50 нс разница ещё нагляднее: напрямую от источника на ёмкости 1,594 В вместо 2,0 — измерять нечего, а с буфером уже 2,000 В.

Напряжение на ёмкости выборки после замыкания ключа


180.2 Конденсатор у входа или буфер

Конденсатор 100 нФ у входа работает как местный источник заряда: ёмкость выборки в 20 000 раз меньше, и при перезаряде конденсатор проседает всего на 0,05 мВ. Это дёшево и не требует усилителя — но есть цена:

Буфер решает обе задачи: держит низкое выходное сопротивление и на постоянном, и на быстром сигнале. Типовой драйвер АЦП — буфер, затем развязывающий резистор 100 Ом и конденсатор 1 нФ у самого входа: резистор развязывает ёмкость от выхода усилителя (раздел 163.3), а конденсатор отдаёт заряд ёмкости выборки. В модели такой драйвер даёт ошибку 0,79 мВ — один код.

Драйвер АЦП: буфер, развязывающий резистор и конденсатор у входа


180.3 Мультиплексор: соседний канал догоняет

У микроконтроллера один АЦП на много каналов: внутренний мультиплексор переключает вход. От прошлого канала заряженной остаётся ёмкость за мультиплексором. У встроенного это ёмкость выборки и сам ключ — единицы пикофарад, а дорожка и защита у каждого вывода свои и заряжены своим сигналом. Если же несколько датчиков заведены на один вывод АЦП через внешний мультиплексор, к общему узлу добавляются дорожка, защита и ёмкость самой микросхемы — в модели 20 пФ. Переключаем такой мультиплексор с канала 3,0 В на канал 0,5 В при источниках 10 кОм:

Время после переключения Напряжение на входе АЦП Ошибка в кодах
200 нс 1,431 В 1155
400 нс 0,846 В 429
1 мкс 0,518 В 22
2 мкс 0,500 В 0,1

Внешний мультиплексор: общий узел 20 пФ у вывода АЦП перезаряжается через источник 10 кОм и ключ 100 Ом

Постоянная времени здесь (10 кОм + 100 Ом) · 20 пФ = 202 нс, и после переключения нужно выждать те же девять постоянных. Если этого не сделать, соседний канал «просвечивает» в измерение — на большом перепаде это сотни кодов. Лечится тремя способами: увеличить время выборки в настройках АЦП, понизить сопротивление источника (буфер), либо измерять каждый канал дважды и брать второе значение.

Вход АЦП после переключения канала: соседний канал уходит не сразу


180.4 Сопротивление источника: что говорит документация

В документации на микроконтроллер есть таблица «максимальное сопротивление источника» для каждого времени выборки. Смысл её тот же, что в 180.1, только запас строже: в документации берут ln 2^(N+2) — для 12 разрядов 9,7 постоянной (установление до четверти кода), а не 9: 9,7 · (Rист + Rключа) · Cвыб должно уложиться во время выборки. Отсюда практические выводы:


180.5 На выходе ЦАП — то же самое наоборот

У ЦАП внутри тоже резисторы. Свой выходной буфер у ЦАП STM32 есть (раздел 15.3): с ним выход держит нагрузку от 5 кОм, но не доходит до шин примерно на 0,2 В; без него выходное сопротивление до 15 кОм, и для точности 1 % нагрузка нужна от 1,5 МОм. Внешний буфер ставят для нагрузки тяжелее или для сигнала от самой земли, а за ним, если сигнал ступенчатый, — восстанавливающий фильтр (раздел 178), который сглаживает ступеньки до частоты обновления. ШИМ с RC из раздела 50.5 — тот же приём в более дешёвом исполнении.


180.6 Грабли

Показания АЦП занижены и зависят от предыдущего канала. Не хватает времени выборки: в модели с внешним мультиплексором через 200 нс после переключения на входе 1,431 В вместо 0,5.

Высокоомный датчик даёт заниженные коды. Сопротивление источника больше допустимого для выбранного времени выборки — буфер.

После добавления конденсатора 100 нФ сигнал «затупился». Постоянная времени с источником 10 кОм — 1 мс; для быстрого сигнала нужен буфер.

Драйвер на ОУ возбудился на ёмкость у входа. Нет развязывающего резистора (раздел 163.3).

ЦАП врёт под нагрузкой. Выход ЦАП имеет своё сопротивление — нужен буфер.


180.7 Итоги

Дальше: раздел 181 «Аналоговая разводка и земля».

Открыть в интерактивном справочнике