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

Нелинейность АЦП: INL и DNL

Идеальный АЦП переходит от кода к коду через равные шаги по одной прямой. Реальный отклоняется: неравные ступени описывает дифференциальная нелинейность DNL, кривизну всей характеристики — интегральная INL. Обе указывают в младших разрядах.

Обновлено Редакция GAW

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

Определения по даташиту Microchip ATmega328P:

ПараметрЧто означаетИдеал
DNL, дифференциальная нелинейностьнаибольшее отклонение реальной ширины ступени от идеальной в 1 LSB0 LSB
INL, интегральная нелинейностьпосле поправки на смещение и усиление наибольшее отклонение реального перехода между кодами от идеального0 LSB
Погрешность квантованиядиапазон напряжений шириной 1 LSB даёт один кодвсегда ±0,5 LSB

DNL отвечает за ступени: если одна ступень вдвое шире, а соседняя — нулевой ширины, код пропадает. Поэтому DNL лучше −1 LSB означает отсутствие пропущенных кодов. INL отвечает за форму всей характеристики: даже при ровных ступенях лестница может изгибаться.

Примеры из даташитов:

АЦПINLDNL
ATmega328P, 10 бит0,5 LSB—
MCP3008, 10 бит±0,5 LSB типично, до ±1 LSB±0,25 LSB типично, до ±1 LSB, без пропущенных кодов
ADS1115, 16 бит1 LSB по наилучшей прямой на 99 % шкалы16 бит без пропущенных кодов

INL и DNL не включают смещение нуля и ошибку усиления — их калибруют отдельно двумя точками, а нелинейность остаётся. Полную погрешность Microchip называет абсолютной точностью: это совместный эффект смещения, усиления, нелинейности и квантования. Как эти параметры выглядят в реальных микросхемах — в карточке ADS1115 и MCP3008, расчёт АЦП AVR — в калькуляторе АЦП.

Частые вопросы

Что такое пропущенный код АЦП?

Код, который АЦП не выдаёт ни при каком входном напряжении: соседние ступени смыкаются, и одна из них имеет нулевую ширину. Это случай DNL = −1 LSB. Поэтому производители пишут «без пропущенных кодов» — например, Microchip для MCP3008 гарантирует DNL не хуже ±1 LSB без пропущенных кодов во всём диапазоне температур.

Можно ли исправить INL калибровкой?

Смещение и ошибку усиления — да, двумя точками калибровки: они сдвигают и поворачивают прямую. INL — это то, что остаётся после такой поправки: изгиб характеристики. Убрать его можно только многоточечной калибровкой с таблицей поправок.

Что важнее для датчиков — INL или DNL?

Для измерения абсолютной величины — INL: она показывает, насколько код может отличаться от правильного в середине шкалы. Для регулирования и малых изменений важна DNL: неравные ступени искажают разность соседних отсчётов, а пропущенный код даёт скачок.

Источники

  1. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — разд. 24.7: DNL — наибольшее отклонение реальной ширины кода от идеальной в 1 LSB; INL — после поправки на смещение и усиление наибольшее отклонение реального перехода от идеального; погрешность квантования ±0,5 LSB; у АЦП ATmega328P INL 0,5 LSB
  2. Microchip. MCP3004/3008: 2.7V 4-Channel/8-Channel 10-Bit A/D Converters with SPI Serial Interface (DS20001295E, 2022) — INL ±0,5 LSB типично и до ±1 LSB, DNL ±0,25 LSB типично и до ±1 LSB без пропущенных кодов во всём диапазоне температур
  3. Texas Instruments. ADS111x Ultra-Small, Low-Power, I2C-Compatible, 860SPS, 16-Bit ADCs (SBAS444E, revised December 2024) — INL 1 LSB на 8 выборках/с и диапазоне ±2,048 В — по наилучшей прямой на 99 % шкалы; 16 бит без пропущенных кодов

Нашли ошибку?