Делитель напряжения на входе АЦП
Напряжение выше опорного подают на АЦП через резисторный делитель. Кроме коэффициента деления нужно проверить три вещи: успевает ли делитель зарядить конденсатор выборки АЦП, какой ток потечёт через защитные диоды вывода при перенапряжении и насколько точно опорное напряжение. Для батарей делитель отключают MOSFET-ключом, чтобы он не разряжал её.
Обновлено Редакция GAW
Делитель напряжения на входе АЦП уменьшает измеряемое напряжение до диапазона от нуля до опорного. Схема простая — два резистора, — но у неё четыре источника ошибок: допуск резисторов, сопротивление источника, которое должен «прокачать» конденсатор выборки АЦП, точность опорного напряжения и ток утечки всего, что подключено к выводу.
Коротко
- Коэффициент
- k = R2 / (R1 + R2) ≤ Uоп / Umax
- Сопротивление источника
- R1 ∥ R2 = R1·R2 / (R1 + R2)
- ATmega328P
- источник ≤ 10 кОм, CS/H 14 пФ
- STM32F103
- RAIN ≤ 50 кОм, CADC ≤ 8 пФ
- Ток через защитные диоды
- STM32F103 ±5 мА, AVR ≤ 1 мА
- Ключ для батареи
- AO3401A + AO3400A, утечка ≤ 1 мкА
Схема и коэффициент деления
Резисторы R1 и R2 делят входное напряжение в отношении k = R2/(R1 + R2), конденсатор C1 стоит прямо у вывода. Внутри микроконтроллера вход через сопротивление аналогового ключа RADC подключается к конденсатору выборки CADC — на время выборки он должен зарядиться до напряжения на выводе с точностью лучше младшего разряда.
Пример 1: STM32F103, 0–15 В, опора 3,3 В. В корпусах LQFP опорный вход VREF+ соединён с VDDA внутри (DS5319, табл. 47, примечание 3), и аналоговые входы PA0–PA7, PB0, PB1, PC0–PC5 не допускают 5 В — для них предел 4,0 В (табл. 5 и 6).
- Коэффициент с запасом: k ≤ 3,3/15 = 0,22. Берём R1 = 39 кОм, R2 = 10 кОм: k = 10/49 = 0,204.
- 15 В дают на входе 15 · 0,204 = 3,06 В. Полная шкала — 3,3/0,204 = 16,2 В, младший разряд 12-битного АЦП — 16,2/4096 ≈ 3,95 мВ входного напряжения.
- Ток делителя при 15 В — 15/49 кОм = 0,31 мА, мощность R1 — около 4 мВт.
- Сопротивление источника для АЦП: R1 ∥ R2 = 39 · 10/49 = 7,96 кОм.
Пример 2: ATmega328P, 0–15 В, встроенная опора 1,1 В. Встроенное опорное у ATmega328P — от 1,0 до 1,2 В (DS40002061B, табл. 29-15), поэтому коэффициент считают по минимуму: k ≤ 1,0/15 = 0,067. R1 = 150 кОм, R2 = 10 кОм: k = 0,0625, 15 В → 0,94 В, сопротивление источника 150 · 10/160 = 9,4 кОм — в пределах рекомендованных 10 кОм. Ток делителя — 94 мкА.
Пересчитать делитель под свои значения — калькулятор ниже. В поле нагрузки можно ввести входное сопротивление АЦП: у ATmega328P это 100 МОм, и на статическую точность оно почти не влияет; главное ограничение — динамическое, о нём следующий раздел.
Исходные данные
Сопротивление того, что подключено к выходу: вход АЦП, базы транзистора и т. п.
Результат
- Выходное напряжение
- 3,837 В
- Коэффициент деления
- 0,3197
- Ток делителя
- 816 мкА
- Мощность R1
- 6,66 мВт
- Мощность R2
- 3,13 мВт
- Выходное сопротивление
- 3,197 кОмR1 ∥ R2: чем меньше, тем слабее влияет нагрузка
Сопротивление источника и время выборки
На время выборки конденсатор CADC подключается к выводу через RADC и сопротивление делителя. Если он не успевает зарядиться, результат занижен и зависит от того, какой канал измерялся перед этим.
ATmega328P. Microchip пишет, что АЦП рассчитан на источники с выходным сопротивлением около 10 кОм или меньше: тогда время выборки можно не учитывать. С большим сопротивлением время заряда конденсатора выборки (14 пФ на рис. 24-8) «может сильно меняться», и рекомендуется использовать такие источники только для медленных сигналов (DS40002061B, разд. 24.6.1). Выборка происходит через 1,5 такта АЦП после старта, а для полной 10-битной точности такт АЦП — 50–200 кГц (разд. 24.4). Время выборки у AVR не настраивается, поэтому ограничение на источник жёсткое. Подобрать частоту и время преобразования поможет калькулятор АЦП AVR.
STM32F103. Здесь время выборки задаётся от 1,5 до 239,5 такта, и даташит даёт формулу максимального сопротивления источника для ошибки меньше 1/4 младшего разряда (уравнение 1):
где TS — время выборки в тактах, N = 12, CADC = 8 пФ, RADC = 1 кОм (табл. 47). При fADC = 14 МГц это даёт табл. 48:
| Выборка, тактов | Время, мкс | RAIN max, кОм |
|---|---|---|
| 1,5 | 0,11 | 0,4 |
| 7,5 | 0,54 | 5,9 |
| 13,5 | 0,96 | 11,4 |
| 28,5 | 2,04 | 25,2 |
| 41,5 | 2,96 | 37,2 |
| 55,5 | 3,96 | 50 |
Больше 50 кОм не допускается ни при каком времени выборки (табл. 47). Для делителя из примера 1 (7,96 кОм) достаточно 13,5 такта, 7,5 такта уже мало. Подбор по своей частоте АЦП — в калькуляторе АЦП STM32, подробно про сам АЦП — на странице АЦП STM32.
ESP32 устроен иначе: диапазон его входа зависит от ослабления встроенного аттенюатора, поэтому коэффициент делителя выбирают под выбранное ослабление — диапазоны и пересчёт кода в вольты есть в калькуляторе АЦП ESP32.
Конденсатор у вывода
Конденсатор C1 на 100 нФ решает две задачи. Во-первых, он отдаёт заряд конденсатору выборки: CADC в 8 пФ, подключённый к C1, сдвигает напряжение не больше чем на CADC/(C1 + CADC) ≈ 8 · 10−5 — это 0,33 младшего разряда 12-битного АЦП даже в худшем случае, когда до выборки на CADC было 0 В. Поэтому с таким конденсатором делитель можно взять и больше 50 кОм — но это уже инженерная оценка за пределами режима, который нормирует даташит: предел табл. 47 относится к источнику без конденсатора у вывода, и точность здесь обеспечивает C1, а не время выборки. Во-вторых, вместе с делителем он образует фильтр нижних частот, который Microchip советует ставить перед АЦП, чтобы на вход не попадали частоты выше половины частоты выборки (разд. 24.6.1).
Цена — медленная реакция. Постоянная времени τ = (R1 ∥ R2) · C1 = 7,96 кОм · 100 нФ ≈ 0,8 мс, частота среза фильтра — около 200 Гц. И между выборками C1 должен успевать подзаряжаться: в худшем случае АЦП забирает в среднем ток CADC · U · fS, то есть ведёт себя как сопротивление 1/(CADC · fS). При 1 тыс. выборок в секунду это 125 МОм, и ошибка от делителя 7,96 кОм — около 0,26 разряда; при 10 тыс. — уже около 2,6 разряда. С конденсатором на входе этот канал измеряют редко или ставят буфер на операционном усилителе.
Защита входа
Делитель сам ограничивает ток, если на вход попадёт больше расчётного. Когда напряжение в средней точке выше питания, открывается внутренний защитный диод к VDD, и ток через него задают сопротивления делителя и Rs.
- STM32F103: ток инжекции — не больше ±5 мА на вывод и ±25 мА в сумме по всем выводам (DS5319, табл. 7). Положительная инжекция в этих пределах на точность АЦП не влияет, а отрицательная (вход ниже земли) искажает преобразование на соседних каналах; ST рекомендует ставить на такие входы диод Шоттки от вывода к земле (примечания к табл. 49 и 50).
- AVR: Microchip в AVR182 не рекомендует пропускать через защитные диоды больше 1 мА. Предельное напряжение на выводе ATmega328P — VCC + 0,5 В (DS40002061B, разд. 29.1).
Проверка для примера 1 с Rs = 1 кОм. При 40 В на входе эквивалентный источник — 40 · 0,204 = 8,16 В с сопротивлением 7,96 + 1 = 8,96 кОм. Ток в диод — не больше (8,16 − 3,3)/8,96 кОм = 0,54 мА (падение на диоде не учтено, реальный ток ещё меньше), почти в десять раз меньше предела STM32F103. Rs добавляется к сопротивлению источника: 8,96 кОм всё ещё укладываются в 11,4 кОм для 13,5 такта.
Ток, втекающий через защитный диод в шину питания, должен кто-то потреблять. Если микроконтроллер в спящем режиме берёт меньше, чем втекает через диоды, напряжение питания поднимается — у стабилизатора с выходом 78xx или LM1117 нет цепи, которая бы этот ток поглотила (подробнее — в разделе про линейный стабилизатор).
Стабилитрон или TVS-диод на входе АЦП ставят только когда без них нельзя: их ток утечки складывается с током делителя. У BZX84C3V3 при токе 1 мА напряжение стабилизации — 2,3–2,9 В, то есть он заметно проводит уже ниже 3 В, а при обратном напряжении 1 В его ток достигает 5 мкА (BZX84C2V4LT1/D). Через 7,96 кОм это 40 мВ — около 50 младших разрядов при опоре 3,3 В. Ёмкость 450 пФ при этом не мешает. Если защита от мощных импульсов нужна, TVS ставят на входе, до R1, а не у вывода.
Точность опорного напряжения
Ошибка опорного напряжения переходит в результат один к одному.
- AVCC или VDDA как опора. Опорой становится выход стабилизатора питания. У MC7805C гарантировано 4,75–5,25 В, то есть ±5 %; у LM1117-3.3 — 3,235–3,365 В, около ±2 % (подробнее — линейный стабилизатор 78xx).
- Встроенная опора ATmega328P — 1,0–1,2 В, разброс ±9 % между экземплярами. Её калибруют: измеряют известное напряжение мультиметром и записывают поправку в EEPROM.
- VREFINT у STM32F103 — 1,16–1,24 В в диапазоне −40…+85 °C (DS5319, табл. 12). Измерение VREFINT позволяет вычислить реальное VDDA, но разброс самого VREFINT — около ±3 %, то есть не лучше стабилизатора на ±2 %. Точнее — калибровка по эталону или внешний источник опорного напряжения.
Резисторы делителя добавляют свою ошибку: при допуске ±1 % коэффициент k = 0,2 в худшем случае уходит на ±2 · (1 − k) · 1 % = ±1,6 %. Для точных измерений берут резисторы ±0,1 % или калибруют коэффициент программно.
Измерение батареи с отключением делителя
Делитель на батарее разряжает её постоянно. Чтобы ток тёк только во время измерения, верх делителя подключают через P-канальный MOSFET VT1.
Почему нужен второй транзистор. Литиевый аккумулятор даёт до 4,2 В, а вывод микроконтроллера на 3,3 В не может поднять затвор VT1 до напряжения истока. При единице на выводе VGS = 3,3 − 4,2 = −0,9 В, а пороговое напряжение AO3401A — от −0,5 до −1,3 В: часть экземпляров будет приоткрыта. Поэтому затвор подтягивают к истоку резистором R3, а к земле тянет N-канальный AO3400A (порог 0,65–1,45 В — открывается от вывода 3,3 В).
Расчёт. Делитель R1 = 100 кОм, R2 = 220 кОм: k = 0,6875, 4,2 В → 2,89 В. Сопротивление источника — 100 · 220/320 = 68,75 кОм, больше предела 50 кОм STM32F103 из табл. 47. Работать такой делитель будет только с C1 = 100 нФ у вывода, и это та же инженерная оценка, что выше, а не режим из даташита; если нужна гарантированная точность — буфер на ОУ или резисторы в 1,5 раза меньше. После включения ключа C1 заряжается с постоянной времени 68,75 кОм · 100 нФ ≈ 6,9 мс; до точности 1/2 разряда 12-битного АЦП нужно постоянных времени — около 62 мс. Измерять можно не раньше.
Токи. Включённый делитель берёт 4,2/320 кОм = 13 мкА, R3 при открытом VT2 — ещё 42 мкА. Без ключа 13 мкА текли бы всегда: около 0,3 мА·ч в сутки и 115 мА·ч в год — заметно для батареи на 1000 мА·ч. Закрытые AO3401A и AO3400A пропускают не больше 1 мкА каждый. При 3,0 В на батарее VGS VT1 равно −3,0 В — больше по модулю, чем −2,5 В, при которых нормировано RDS(on) до 85 мОм, так что ключ открыт полностью.
Схема рассчитана на одну литиевую ячейку. У AO3401A предельное VGS — ±12 В, поэтому для батарей 12 В и выше между затвором и стоком VT2 ставят ещё один резистор, чтобы на затворе было не больше половины напряжения батареи.
Детали
| Позиция | Деталь | Примечание |
|---|---|---|
| R1, R2 (пример 1) | 39 кОм, 10 кОм, ±1 % | 0–15 В на STM32F103, k = 0,204 |
| R1, R2 (пример 2) | 150 кОм, 10 кОм, ±1 % | 0–15 В на ATmega328P с опорой 1,1 В |
| Rs | 1 кОм | ограничивает ток защитных диодов |
| C1 | 100 нФ, керамический X7R | у самого вывода |
| VD1 | маломощный диод Шоттки | только где возможна отрицательная инжекция; проверьте обратный ток по даташиту |
| VT1 | AO3401A, P-канал, SOT-23 | ключ батареи, VGS до ±12 В |
| VT2 | AO3400A, N-канал, SOT-23 | управляет затвором VT1 |
| R3, R4 | 100 кОм | подтяжка затворов |
| R1, R2 (батарея) | 100 кОм, 220 кОм | 4,2 В → 2,89 В |
Варианты
- Ключ в нижнем плече делителя проще — один N-канальный MOSFET между R2 и землёй. Но когда он закрыт, средняя точка через R1 подтянута к полному напряжению батареи, и вывод АЦП получает 4,2 В вместо нуля. Для STM32F103 это больше 4,0 В предельных для аналоговых входов. Ключ ставят в верхнее плечо, как на схеме.
- Буфер на ОУ после делителя убирает ограничения по сопротивлению источника и по частоте выборки. Нужен ОУ с входами и выходом до шин питания.
- Дифференциальное измерение тока или напряжения относительно не земли — через усилитель тока шунта, а не через делитель: см. калькулятор шунта.
Почему не работает
- Показания занижены и зависят от соседнего канала. Конденсатор выборки не успевает зарядиться: сопротивление делителя больше допустимого для выбранного времени выборки. Уменьшите резисторы, увеличьте время выборки или поставьте C1 у вывода.
- С конденсатором показания отстают или плывут при частых измерениях. C1 не успевает подзарядиться между выборками — снизьте частоту выборки этого канала.
- Значение «шумит» на несколько разрядов. Нет C1 или он далеко от вывода; рядом с аналоговым входом переключаются цифровые линии. Microchip советует не переключать выводы порта АЦП во время преобразования (DS40002061B, разд. 24.6.2).
- Результат отличается от мультиметра на несколько процентов. Опорой служит напряжение питания или встроенный источник с разбросом ±3…9 % — нужна калибровка.
- При отключённом питании микроконтроллер всё равно работает или сбрасывается странно. Измеряемое напряжение через делитель и защитный диод питает шину VDD. Уменьшите ток через диоды (больше R1 или Rs) или отключайте делитель ключом.
- Делитель батареи разряжает её за месяцы хранения. Постоянный делитель на сотни килоом — это десятки микроампер. Поставьте ключ на P-канальном MOSFET.
- Ключ батареи не закрывается. Затвор P-канального MOSFET управляется напрямую выводом с меньшим напряжением, чем на истоке. Нужен второй транзистор, как VT2 на схеме.
Частые вопросы
Как рассчитать делитель напряжения для Arduino?
Выберите коэффициент так, чтобы максимум измеряемого напряжения давал на входе чуть меньше опорного: k = R2 / (R1 + R2) ≤ Uоп / Umax. Затем проверьте сопротивление источника R1 ∥ R2: для ATmega328P Microchip рекомендует не больше 10 кОм. Например, для 0–15 В и встроенного опорного 1,1 В подходят R1 = 150 кОм и R2 = 10 кОм: k = 0,0625, R1 ∥ R2 = 9,4 кОм.
Почему показания АЦП с делителем на больших резисторах занижены и плавают?
Конденсатор выборки АЦП не успевает зарядиться через большое сопротивление делителя. У STM32F103 при частоте АЦП 14 МГц и выборке 13,5 такта источник может иметь не больше 11,4 кОм, а предел для любого времени выборки — 50 кОм (DS5319, табл. 48). Помогают конденсатор 100 нФ прямо у вывода, более длинная выборка или меньшие резисторы.
Можно ли защитить вход АЦП стабилитроном на 3,3 В?
Плохая идея для точного измерения. У BZX84C3V3 напряжение стабилизации при токе 1 мА — от 2,3 В, а обратный ток при 1 В достигает 5 мкА. Через сопротивление делителя 8 кОм такой ток даёт ошибку 40 мВ — около 50 младших разрядов 12-битного АЦП с опорой 3,3 В. Обычно хватает последовательного резистора и внутренних защитных диодов.
Как измерять напряжение батареи, чтобы делитель её не разряжал?
Верх делителя подключают к батарее через P-канальный MOSFET, а его затвор — через N-канальный MOSFET к выводу микроконтроллера. Делитель включается только на время измерения. Делитель 100 + 220 кОм постоянно потреблял бы 13 мкА от 4,2 В — около 115 мА·ч в год, а закрытые AO3401A и AO3400A пропускают не больше 1 мкА.
Источники
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — разд. 24.4 (тактовая частота АЦП 50–200 кГц, выборка через 1,5 такта), разд. 24.6.1 и рис. 24-8 (источник не больше 10 кОм, конденсатор выборки 14 пФ, фильтр перед входом), табл. 29-15 (опорное 1,0 В…AVCC, встроенное 1,0–1,2 В, входное сопротивление 100 МОм), разд. 29.1 (напряжение на выводе до VCC + 0,5 В)
- STMicroelectronics. STM32F103x8, STM32F103xB datasheet (DS5319 Rev 20) — табл. 5 (аналоговые входы без допуска 5 В), табл. 6 и 7 (входное напряжение до 4,0 В, ток инжекции ±5 мА на вывод и ±25 мА суммарно), табл. 12 (VREFINT 1,16–1,24 В), табл. 47 (RAIN до 50 кОм, RADC до 1 кОм, CADC до 8 пФ), уравнение 1 и табл. 48 (RAIN max от времени выборки), примечания к табл. 49 и 50 (отрицательная инжекция, диод Шоттки), рис. 38
- Microchip (Atmel). AVR182: Zero Cross Detector (Atmel-2508C, 09/2016) — ток через защитные диоды входа AVR — не больше 1 мА
- Alpha & Omega Semiconductor. AO3401A 30V P-Channel MOSFET (Rev 3.1, December 2023) — VDS −30 В, VGS ±12 В, VGS(th) от −0,5 до −1,3 В, ток утечки до 1 мкА, RDS(on) до 85 мОм при −2,5 В
- Alpha & Omega Semiconductor. AO3400A 30V N-Channel MOSFET (Rev 3.1, July 2023) — VGS(th) 0,65–1,45 В, VGS ±12 В, ток утечки до 1 мкА
- onsemi. BZX84C2V4LT1 Series: Zener Voltage Regulators (BZX84C2V4LT1/D, Rev. 23, August 2021) — BZX84C3V3: напряжение стабилизации 3,1–3,5 В при 5 мА и 2,3–2,9 В при 1 мА, обратный ток до 5 мкА при 1 В, ёмкость 450 пФ
Нашли ошибку?
Смотрите также
- Делитель напряженияВыход, ток, нагрузка, подбор пары резисторов
- АЦП AVR: ADPS и кодЧастота АЦП, время преобразования, код по напряжению, ADMUX и ADCSRA
- АЦП STM32: время и выборкаВремя преобразования, частота выборок, RAIN и самая короткая выборка
- АЦП ESP32: ослабление и делительОслабление по напряжению, делитель, погрешность на входе, код Arduino и ESP-IDF
- АЦПКвантование, формула кода, SAR, время выборки, погрешности, передискретизация
- АЦП STM32Группы каналов, режимы, триггеры, DMA, калибровка, датчик температуры, точность
- ATmega328PРаспиновка, фьюзы, Optiboot, периферия, питание, схема и код на C
- Стабилизатор 78xx и LM11177805, 7905, LM1117: конденсаторы, падение, радиатор, защитные диоды