Нелинейность АЦП: INL и DNL
Идеальный АЦП переходит от кода к коду через равные шаги по одной прямой. Реальный отклоняется: неравные ступени описывает дифференциальная нелинейность DNL, кривизну всей характеристики — интегральная INL. Обе указывают в младших разрядах.
Обновлено Редакция GAW
Нелинейность АЦП описывает, насколько его передаточная характеристика — зависимость кода от входного напряжения — отличается от идеальной лестницы с равными ступенями на прямой линии. Её задают двумя параметрами, обычно в младших разрядах (LSB).
Определения по даташиту Microchip ATmega328P:
| Параметр | Что означает | Идеал |
|---|---|---|
| DNL, дифференциальная нелинейность | наибольшее отклонение реальной ширины ступени от идеальной в 1 LSB | 0 LSB |
| INL, интегральная нелинейность | после поправки на смещение и усиление наибольшее отклонение реального перехода между кодами от идеального | 0 LSB |
| Погрешность квантования | диапазон напряжений шириной 1 LSB даёт один код | всегда ±0,5 LSB |
DNL отвечает за ступени: если одна ступень вдвое шире, а соседняя — нулевой ширины, код пропадает. Поэтому DNL лучше −1 LSB означает отсутствие пропущенных кодов. INL отвечает за форму всей характеристики: даже при ровных ступенях лестница может изгибаться.
Примеры из даташитов:
| АЦП | INL | DNL |
|---|---|---|
| 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: неравные ступени искажают разность соседних отсчётов, а пропущенный код даёт скачок.
Источники
- 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
- 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 без пропущенных кодов во всём диапазоне температур
- 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 бит без пропущенных кодов
Нашли ошибку?
Смотрите также
- Младший разряд (LSB)Шаг квантования АЦП VREF / 2^N и ошибка ±½ LSB
- ADS1115 и MCP300816 бит I²C с усилителем против 10 бит SPI на 8 каналов: выводы, диапазоны, точность
- АЦП AVR: ADPS и кодЧастота АЦП, время преобразования, код по напряжению, ADMUX и ADCSRA
- Напряжение смещения нуляVos: постоянная ошибка ОУ, усиленная шумовым усилением