Бюджет ошибок АЦП — это перечень всех причин, по которым код АЦП отличается от измеряемого напряжения, с оценкой каждой в одних единицах и с итогом двумя способами: простой суммой (наихудший случай) и корнем из суммы квадратов (RSS). Калькулятор считает цепь «источник → делитель → вход АЦП → АЦП с опорным напряжением» и показывает, какая составляющая главная. Пресеты берут числа из даташитов STM32F103, ATmega328P, ESP32 и RP2040 и помечают, где значение гарантировано, а где только типовое.
Как пользоваться
- Выберите АЦП. Для STM32F103 есть две таблицы даташита: при VDDA 3–3,6 В и 25 °C и во всём диапазоне питания. Переключатель «Предельные / Типовые» берёт из пресета нужный столбец. Для своего АЦП введите смещение, ошибку усиления, INL и DNL в LSB или в процентах шкалы.
- Проверьте опорное напряжение. Пресет АЦП подставляет подходящее: у STM32F103 и RP2040 это питание 3,3 В, у ATmega328P — 5 В от стабилизатора LM1117, у ESP32 — его собственное 1,1 В, ошибка которого уже входит в разброс АЦП. Можно выбрать источник опорного из калькулятора ошибки опорного или «Своё значение» и ввести допуск своего стабилизатора.
- Задайте изменение температуры ΔT от точки калибровки (или от 25 °C), измеряемое напряжение и делитель, если он есть.
- Включите проверку времени выборки, если источник высокоомный, и задайте шум АЦП и число усредняемых отсчётов, если они известны.
- Справа — итог в милливольтах на входе цепи, в LSB, в процентах шкалы и показания и в битах; ниже — таблица составляющих с долей каждой.
Как считается
Все ошибки приводятся к LSB на входе АЦП. Один LSB — это Vоп/2N. Ошибки, заданные в процентах шкалы, пересчитываются как %/100 · 2N.
Две группы ошибок
Постоянные по шкале: квантование ±½ LSB, смещение нуля, INL и DNL, шум, недозаряд конденсатора выборки. Они одинаковы у нуля и у края шкалы.
Ошибки усиления растут вместе с сигналом: ошибка усиления АЦП, ошибка опорного напряжения и ошибка коэффициента делителя. Относительная ошибка δ сдвигает код на
Поэтому калькулятор считает ошибку именно для вашего напряжения, а не для полной шкалы: у середины шкалы ошибка усиления вдвое меньше, чем у края. TI называет такую зависимость ошибки от входа «бантиком».
Опорное напряжение
Начальная точность в процентах, дрейф ТКН · ΔT (как в примере Analog Devices: 5 ppm/°C на 50 °C — это 0,025 %) и шум 0,1–10 Гц. Шум вводится размахом, а в сумму идёт половина размаха: отсчёт отклоняется от среднего на ±½ размаха.
Дрейф ТКН · ΔT — оценка, и калькулятор так его и помечает. Коэффициент, заданный методом «коробки», гарантирует уход только на всём диапазоне даташита; на части диапазона наклон бывает круче (TI SSZTAX8), поэтому рядом калькулятор показывает гарантированную границу — ТКН × весь диапазон. Только коэффициент, заданный от 25 °C (как у LM4040), гарантирован для любого ΔT внутри диапазона. Подробный бюджет источника с гистерезисом, долговременным дрейфом и нестабильностью по нагрузке считает отдельный калькулятор.
У STM32F103 в корпусах LQFP и VFQFPN — а это STM32F103C8T6 и почти все платы — вывод VREF+ соединён с VDDA внутри микросхемы (DS5319, табл. 47, сноска 3). Полная шкала там — питание аналоговой части, и точность измерения задаёт стабилизатор. Отдельный вход VREF+ есть только в корпусе TFBGA64. Внутренний источник VREFINT полной шкалой быть не может: его измеряют каналом 17, чтобы пересчитать VDDA, поэтому в списке опорных калькулятора АЦП его нет.
Делитель
Программа делит результат на номинальный коэффициент k = R2/(R1 + R2). Сопротивление источника Rист стоит последовательно с R1, и на самом деле
поэтому показание занижено на Rист/(Rист + R1 + R2): 1 кОм перед делителем 30 + 10 кОм — это −2,4 %, больше всех ошибок АЦП вместе. Калькулятор показывает это отдельной строкой; калибровка по двум точкам её убирает. Если резистор уходит на относительную величину ε, коэффициент меняется в первом приближении на
(наш вывод, в тестах сверен с точным расчётом; без Rист оба множителя равны 1 − k). В наихудшем случае резисторы уходят в разные стороны, и вклады складываются; в RSS это две независимые ошибки. То же для ТКС, умноженного на ΔT. Если оба резистора из одной партии и одного типа, их дрейф во многом совпадает, и реальная ошибка от ТКС меньше. Делитель удобно подбирать в калькуляторе делителя.
Выборка
Конденсатор выборки CАЦП заряжается через выходное сопротивление делителя вместе с источником, (Rист + R1) ∥ R2, и внутреннее RАЦП (без делителя — через Rист). После скачка на всю шкалу за время выборки ts остаётся
При это ровно ¼ LSB — то же условие, из которого ST выводит наибольшее сопротивление источника в уравнении 1 даташита STM32F103. Предельные RАЦП = 1 кОм и CАЦП = 8 пФ берутся из таблицы 47 DS5319, а время выборки удобно получить в калькуляторе АЦП STM32. Оценка пессимистична: она считает, что перед выборкой конденсатор стоял на другом краю шкалы.
Шум и усреднение
Шум АЦП задаётся среднеквадратичным значением σ в LSB, а в сумму идёт ±3,3σ — половина практического размаха 6,6σ, которым ADI в MT-087 и TI переводят среднеквадратичный шум в размах (за его пределы шум выходит меньше чем в 0,1 % времени). Analog Devices в «The ABCs of ADCs» и Microchip берут размах 6σ: у них 2/3 LSB ср. кв. — «около 4 LSB размаха», у калькулятора — 4,4 LSB размаха, то есть ±2,2 LSB. Усреднение n отсчётов уменьшает шум в √n раз (передискретизация): по 16 отсчётам ABCs получает 1 LSB размаха, калькулятор — ±0,55 LSB. Шум опорного 0,1–10 Гц усреднение не уменьшает.
Итог
Точность в битах — : ступенька такой разрядности равна найденной ошибке. Это не ENOB, который измеряют по SINAD.
Пресеты: что дают даташиты
| АЦП | Смещение | Усиление | INL | DNL | Полная ошибка | Что важно |
|---|---|---|---|---|---|---|
| STM32F103, табл. 49 | ±1 / ±1,5 | ±0,5 / ±1,5 | ±0,8 / ±1,5 | ±0,7 / ±1 | ET ±1,3 / ±2 | тип. / макс., только 25 °C и VDDA 3–3,6 В |
| STM32F103, табл. 50 | ±1,5 / ±2,5 | ±1,5 / ±3 | ±1,5 / ±3 | ±1 / ±2 | ET ±2 / ±5 | тип. / макс., VDDA 2,4–3,6 В |
| ATmega328P, табл. 29-15 | 2 | 2 | 0,5 | 0,25 | 2 (абсолютная) | только типовые, при VREF = 4 В и 200 кГц |
| ESP32, табл. 4-3 | — | ±6 % между чипами (оценка) | ±12 | ±7 | после калибровки ±23 мВ | при 25 °C, ослабление 0 дБ |
| RP2040, 4.9.3 | — | — | — | пики на 4 кодах | ENOB 8,7 | числами дан только ENOB |
Все значения — в LSB, кроме отмеченных. Предельные значения STM32F103 ST определяет характеризацией, а не проверкой каждой микросхемы. У ATmega328P в таблице нет столбцов Min и Max: эти числа описывают типичный экземпляр и ничего не гарантируют. Подробнее о смещении и усилении — в термине «Ошибка смещения и усиления АЦП», о нелинейности — в термине «INL и DNL».
Для ESP32 Espressif не делит ошибку на смещение и усиление. Фраза «без калибровки результаты разных чипов различаются на ±6 %» стоит в тексте даташита, без условий и не в таблице Min/Max, поэтому калькулятор считает её ошибкой усиления с меткой «оценка»; в неё уже входит разброс внутреннего опорного. Само опорное по документации ESP-IDF — от 1000 до 1200 мВ при номинале 1100 мВ, то есть до ±9 %, так что разброс бывает и больше. Кроме того, при ослаблении 0 нормирован только диапазон от 100 до 950 мВ: ниже 100 мВ ESP32 не измеряет — это не смещение нуля, а нижняя граница шкалы. Пресет ESP32 поэтому ставит делитель 100 + 10 кОм: 10 В превращаются в 0,91 В. После калибровки по eFuse Vref даташит даёт итоговую ошибку ±23…±60 мВ в зависимости от ослабления; выбор ослабления и делителя — в калькуляторе АЦП ESP32. Для RP2040 калькулятор переводит ENOB 8,7 в шум: идеальный АЦП с такой ENOB имеет среднеквадратичную ошибку LSB, и без доли квантования это около 2,8 LSB. Это наша оценка, и в неё попадают искажения от пиков DNL (ошибка RP2040-E11), а смещение и усиление RP2040 остаются неизвестными.
Пример: 10 В через делитель на STM32F103
Значения по умолчанию: STM32F103 по таблице 50 с предельными значениями в корпусе LQFP, поэтому полная шкала — VDDA 3,3 В от стабилизатора LM1117-3.3. Его выход при 25 °C — от 3,267 до 3,333 В (±1 %), а дрейф с температурой TI даёт только типовым значением 0,5 %; калькулятор пересчитывает его в 40 ppm/°C с меткой «оценка». Делитель 30 + 10 кОм из резисторов ±1 % и 100 ppm/°C, температура меняется на 30 °C, время выборки 0,625 мкс (7,5 такта при 12 МГц). На входе АЦП 2,5 В — 76 % шкалы, 1 LSB = 0,806 мВ.
| Составляющая | LSB |
|---|---|
| Квантование | 0,5 |
| Смещение, усиление (при 76 % шкалы), INL | 2,5 + 2,27 + 3 |
| Начальная точность VDDA: 1 % | 31 |
| Дрейф VDDA: 40 ppm/°C · 30 °C (оценка) | 3,72 |
| Допуск делителя: 2 · 0,75 · 1 % | 46,5 |
| ТКС делителя: 2 · 0,75 · 100 ppm/°C · 30 °C | 14 |
| Выборка: τ = 8,5 кОм · 8 пФ = 68 нс, 9,2τ | 0,42 |
| Наихудший случай / RSS | 104 / 46,7 |
На входе делителя это ±335 мВ в наихудшем случае и ±150 мВ по RSS — 3,4 % показания, от 5,3 (сумма) до 6,5 (RSS) честных разрядов из 12. Почти половину ошибки дают резисторы с допуском 1 %, ещё треть — стабилизатор питания. Калибровка по двум точкам убирает их допуск, смещение, усиление и начальную ошибку питания: остаётся ±70 мВ (сумма) и ±35 мВ (RSS), и главным становится ТКС делителя. Резисторы 0,1 % с ТКС 25 ppm/°C, калибровка или отдельный источник опорного дают больше, чем любая замена АЦП. Чтобы подать на STM32F103 внешнее опорное вроде REF3030E, нужен корпус TFBGA64 — или питание VDDA от самого источника опорного с учётом тока, который потребляет аналоговая часть.
Пример Analog Devices: MAX1241
В статье «The ABCs of ADCs» Analog Devices (бывшая Maxim) считает 12-разрядный MAX1241 класса B с опорным 2,5 В: INL 1 LSB, смещение 3 LSB, усиление 4 LSB. Сумма — 8 LSB, то есть 0,1953 % шкалы. DNL в эту сумму не входит: интегральная нелинейность уже накапливает дифференциальную. После калибровки смещения и усиления остаётся INL — 0,0244 %. Опорное с дрейфом 5 ppm/°C добавляет на 50 °C ещё 0,025 %, а его шум 30 мкВ ср. кв. — 180 мкВ размах (×6), около трети LSB; в сумме калькулятора это ±½ размаха. Чтобы повторить пример, выберите «Свой АЦП», введите эти числа, опорное «Своё значение» 2,5 В с ТКН 5 ppm/°C и шумом 180 мкВ и ΔT = 50 °C.
Почему сумма составляющих больше TUE
ST гарантирует для STM32F103 полную нескорректированную ошибку ET не больше ±5 LSB (табл. 50), а сумма смещения, усиления и INL из той же таблицы — 8,5 LSB. Противоречия нет: смещение действует у нуля, ошибка усиления — у края шкалы, пик INL — где-то посередине, и одновременно максимальными они не бывают. TI поэтому советует складывать составляющие через RSS: для таблицы 50 вместе с квантованием это 4,95 LSB, почти ровно ET. Если даташит даёт полную ошибку, калькулятор показывает её рядом с суммой составляющих. Простая сумма остаётся верхней границей, которую нельзя превысить.
Ограничения
- Модель статическая: она не учитывает искажения на высоких частотах, перекрёстное влияние каналов и ток утечки входа через выходное сопротивление делителя.
- Ошибка выборки считается для скачка на всю шкалу; при медленном сигнале и одном канале она меньше. Конденсатор на входе АЦП меняет картину: он сам заряжает конденсатор выборки, но вместе с делителем образует фильтр.
- Опорное здесь описано тремя числами. Гистерезис, долговременный дрейф, нестабильность по питанию и нагрузке добавляет калькулятор ошибки опорного; его итог в процентах можно ввести как начальную точность.
- Типовые значения — не гарантия. У ATmega328P иных нет, поэтому оценка для него описывает типичный экземпляр, а не худший.
- Общая картина работы АЦП и его ошибок — в статье «Аналого-цифровой преобразователь».
Частые вопросы
Почему 12-разрядный АЦП микроконтроллера не даёт точности 1/4096?
Разрядность — это только размер ступеньки. К ошибке квантования в ±½ LSB добавляются смещение нуля, ошибка усиления и нелинейность самого АЦП, ошибка опорного напряжения, допуск резисторов делителя и шум. У STM32F103 по таблице 50 даташита только смещение, усиление и INL дают в сумме до 8,5 LSB, а резисторы делителя с допуском 1 % добавляют ещё десятки LSB. В примере на этой странице из 12 разрядов честными остаются от 5,3 до 6,5.
Что выбрать: наихудший случай или RSS?
Наихудший случай — простая сумма — гарантирует, что ошибка не выйдет за предел, пока каждый параметр в своём допуске. Корень из суммы квадратов (RSS) честнее для независимых ошибок: маловероятно, что все они одновременно максимальны и одного знака. Analog Devices и TI пишут, что реальная ошибка обычно лежит между двумя оценками и ближе к RSS. Для приборов с гарантированной точностью считают по наихудшему случаю, для оценки типичного экземпляра — по RSS.
Какие ошибки убирает калибровка по двум точкам?
Всё, что сдвигает или поворачивает прямую: смещение и ошибку усиления АЦП, начальную ошибку опорного напряжения и допуск резисторов делителя. Остаются нелинейность INL, квантование, шум и всё, что меняется после калибровки: дрейф опорного и резисторов с температурой, недозаряд конденсатора выборки. Поэтому после калибровки главным часто становится ТКС делителя или ТКН опорного.
Помогает ли усреднение?
Против случайного шума — да: среднее из n отсчётов уменьшает его в √n раз, 16 отсчётов — в 4 раза. Систематические ошибки — смещение, усиление, нелинейность, дрейф — усреднение не трогает, а низкочастотный шум опорного 0,1–10 Гц за время усреднения почти не меняется. Ошибку квантования без шума на входе усреднение тоже не уменьшает.
Что такое точность в битах и чем она отличается от ENOB?
Точность в битах здесь — разрядность, ступенька которой равна найденной ошибке: N − log2(ошибка в LSB). 4 LSB у 12-разрядного АЦП оставляют 10 бит, как в примере Analog Devices. ENOB — другое число: его измеряют по синусоиде через SINAD, и оно описывает шум и искажения, но не смещение и не ошибку опорного.
Источники
- Analog Devices (Maxim Integrated). The ABCs of Analog to Digital Converters: How ADC Errors Affect System Performance, 2002 — методы наихудшего случая и RSS; точность в битах: 4 LSB INL у 12-разрядного АЦП оставляют 10 бит, 0,5 LSB — 13 бит; MAX1241: INL 1, смещение 3, усиление 4 LSB — 0,1953 %, после калибровки 0,0244 %; 5 ppm/°C на 50 °C — 0,025 %; шум 2/3 LSB ср. кв., 16 отсчётов — в 4 раза меньше (эталоны тестов)
- Analog Devices. MT-010 Tutorial: The Importance of Data Converter Static Specifications (Rev.A, 10/08) — с. 2, рис. 1: LSB 12 бит — 244 ppm шкалы; с. 3: ошибка квантования до ½ LSB; с. 4: четыре статические ошибки — смещение, усиление, INL, DNL; с. 5: INL по наилучшей прямой примерно вдвое меньше, чем по конечным точкам
- Analog Devices. MT-001 Tutorial: Taking the Mystery out of the Infamous Formula «SNR = 6.02N + 1.76dB» (Rev.A, 10/08) — с. 1–3: шум квантования q/√12 (ур. 4), SNR идеального АЦП 6,02N + 1,76 дБ (ур. 9), выигрыш от передискретизации (ур. 10) — основа оценки шума по ENOB
- Texas Instruments. ADC accuracy part 2: total unadjusted error explained (Precision Hub, 2014) — TUE — наибольшее отклонение от идеальной характеристики без калибровки; смещение, усиление и INL не достигают максимума при одном напряжении, поэтому простая сумма завышает ошибку; ошибка усиления растёт к краю шкалы — характеристика «бантиком»
- Texas Instruments. SNAA320B: Voltage Reference Selection and Design Tips For Data Converters (2019, ред. январь 2024) — разд. 4: ошибка опорного — это ошибка усиления АЦП; ур. 1 и 2 — наихудший случай и RSS; ур. 3 — пересчёт ppm в LSB; разд. 6.1: шум 0,1–10 Гц практически не отфильтровать
- STMicroelectronics. DS5319 Rev 20: STM32F103x8, STM32F103xB datasheet — табл. 49 (VDDA 3–3,6 В, 25 °C): ET ±1,3/±2, EO ±1/±1,5, EG ±0,5/±1,5, ED ±0,7/±1, EL ±0,8/±1,5 LSB; табл. 50 (VDDA 2,4–3,6 В): ET ±2/±5, EO ±1,5/±2,5, EG ±1,5/±3, ED ±1/±2, EL ±1,5/±3 LSB — тип./макс., после калибровки, макс. по характеризации; табл. 47 и ур. 1: RADC до 1 кОм, CADC до 8 пФ, RAIN для ошибки ¼ LSB; табл. 47, сноска 3: в корпусах LQFP и VFQFPN VREF+ внутри соединён с VDDA, отдельный вывод VREF+ — только в TFBGA64
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet Complete (DS40002061B, 2020) — 24.6.3: определения смещения, усиления, INL, DNL, квантования ±0,5 LSB и абсолютной точности; 24.6.1, рис. 24-8: CS/H 14 пФ, 1–100 кОм, источник до 10 кОм; табл. 29-15 (VREF = VCC = 4 В, 200 кГц): абсолютная точность 2, INL 0,5, DNL 0,25, усиление 2, смещение 2 LSB — только Typ
- Espressif. ESP32 Series Datasheet v5.3 — 4.9.1, табл. 4-3: DNL ±7, INL ±12 LSB при 25 °C; в тексте — без калибровки разброс между чипами ±6 % (без условий, не строка Min/Max); табл. 4-4: после калибровки по eFuse Vref ±23 мВ в диапазоне 100–950 мВ (ослабление 0) … ±60 мВ (ослабление 3)
- Espressif. ESP-IDF Programming Guide (stable), ESP32: ADC — опорное АЦП ESP32 — 1100 мВ по проекту, у разных чипов от 1000 до 1200 мВ (те же числа в калькуляторе АЦП ESP32)
- Raspberry Pi Ltd. RP2040 Datasheet (build-date 2025-02-20) — 4.9.3, табл. 566: ENOB 8,7 (8,6–8,8), SINAD 54 дБ; 4.9.4 и ошибка RP2040-E11: пики DNL на кодах 512, 1536, 2560, 3584, ENOB снижен с 9 до 8,7 бит; смещение, усиление и INL числами не даны
- Texas Instruments. LM1117 800-mA Low-Dropout Linear Regulator (SNOS412Q, ред. январь 2023) — 6.5: LM1117-3.3 — 3,267/3,3/3,333 В при 25 °C и 10 мА, 3,235–3,365 В во всём диапазоне 0–125 °C, входного напряжения и тока; LM1117-5.0 — 4,95–5,05 и 4,90–5,10 В; стабильность по температуре 0,5 % (тип.) — питание VDDA в примере по умолчанию
- Vishay. D/CRCW e3 Standard Thick Film Chip Resistors (документ 20035) — допуск ±1 % и ТКС ±100 ppm/K — значения делителя по умолчанию
Где пригодится
Встроить калькулятор на свой сайт
Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах
<iframe src="https://gaw.ru/embed/adc-error-budget/" title="Бюджет ошибок АЦП: полная погрешность измерения" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/adc-error-budget/">Бюджет ошибок АЦП: полная погрешность измерения</a> — GAW.ru</p>Автоподстройка высоты рамки
Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.
<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>Обновлено .
Нашли ошибку в расчёте?