Принцип работы и возможности калькулятора
«ADC Resolution Calculator» — это бесплатный онлайн-инструмент, предназначенный для расчета шага квантования (LSB), максимальной ошибки квантования и теоретического предела отношения сигнал/шум (SNR) аналого-цифрового преобразователя (АЦП) на основе его разрядности и опорного напряжения.
Интерфейс позволяет работать как с однополярными, так и с биполярными входными диапазонами, выполнять прямое и обратное преобразование между входным напряжением и цифровым кодом, а также определять минимальную разрядность, необходимую для регистрации заданного изменения напряжения. Для каждого расчета калькулятор выводит подробные математические формулы с подставленными значениями, что упрощает проверку расчетов и помогает глубже понять теоретические ограничения преобразования.
Входные параметры
Для проведения расчетов в калькулятор вводятся следующие параметры:
- Разрешение N (бит): целое число от 1 до 32 — номинальная разрядность преобразователя.
- Опорное напряжение: положительное число, задающее опорный уровень.
- Единица опорного напряжения: физическая единица измерения опорного напряжения.
- Входной диапазон: выбор между вариантами «Однополярный · от 0 до Vref» и «Биполярный · от −Vref до +Vref».
- Десятичные знаки: количество знаков после запятой для отображения результатов.
- Преобразовать (опционально): переключатель режима измерения между «Напряжение → код» и «Код → напряжение».
- Входное напряжение (опционально): значение напряжения для перевода в цифровой код (можно оставить пустым).
- Код (отсчеты) (опционально): целое число от 0 до максимального кода АЦП для перевода в напряжение (можно оставить пустым).
- Единица напряжения: единица измерения для входного напряжения или напряжения кода.
- Минимальное разрешаемое изменение (опционально): целевой шаг напряжения для расчета требуемой разрядности.
- Единица шага: единица измерения для минимального разрешаемого изменения.
Кнопка «Пример параметров» позволяет быстро заполнить поля демонстрационными данными, а кнопка «Очистить» сбрасывает все введенные значения.
Выходные результаты и структура интерфейса
Результаты вычислений группируются по функциональным блокам под соответствующими заголовками:
Шаг квантования и шум
- Шаг квантования LSB: вычисленный шаг младшего значащего разряда. Дополнительно выводится его процентное отношение к полной шкале и значение в миллионных долях (ppm).
- Уровни квантования: общее число дискретных состояний (2^N).
- Максимальный код: предельное значение выходного цифрового кода (2^N - 1).
- Диапазон полной шкалы: полный размах входного напряжения АЦП.
- Макс. ошибка квантования (±½ LSB): предельная теоретическая погрешность округления.
- Шум квантования (rms): среднеквадратичное значение напряжения шума квантования.
- Идеальное SNR (полношкальный синус): теоретический предел отношения сигнал/шум в децибелах.
- Динамический диапазон: теоретический динамический диапазон в децибелах.
В точке измерения
- Выходной код: цифровой код, полученный при преобразовании входного напряжения.
- Двоичный код: представление выходного кода в двоичной системе.
- Шестнадцатеричный код: представление выходного кода в шестнадцатеричной системе.
- Напряжение кода: точное аналоговое напряжение, соответствующее данному цифровому коду.
- Ошибка квантования: разность между фактическим входным напряжением и напряжением полученного кода.
- Входной интервал для этого кода: диапазон аналоговых напряжений, которые преобразуются в данный цифровой код.
Сколько бит вам нужно?
При вводе целевого шага напряжения калькулятор выводит статус подбора разрядности. Если текущий АЦП справляется с задачей, выводится сообщение о том, что для разрешения шага требуется не менее определенного количества бит, и текущий преобразователь подходит. Если разрядности недостаточно, калькулятор указывает требуемое число бит и сообщает, какой шаг фактически способен разрешить текущий прибор.
Математические формулы и пример расчета
В блоке «Формулы и подстановка» калькулятор демонстрирует математический аппарат, подставляя в уравнения пользовательские данные:
- Диапазон полной шкалы (FSR):
- Однополярный: FSR = Vref
- Биполярный: FSR = 2 × Vref
- Шаг квантования: LSB = FSR ÷ 2^N
- Максимальная ошибка квантования: ±LSB ÷ 2
- Шум квантования (rms): LSB ÷ √12
- Идеальное SNR (полношкальный синус): SNR = 6.02 × N + 1.76 dB
- Динамический диапазон: 6.02 × N dB
- Код (однополярный): код = round(Vin ÷ LSB)
- Код (биполярный): код = round((Vin + Vref) ÷ LSB)
- Напряжение (однополярный): V = код × LSB
- Напряжение (биполярный): V = код × LSB − Vref
- Ошибка квантования в точке измерения: Напряжение кода − Входное напряжение
- Расчет разрядности: N ≥ log₂(FSR ÷ step) (с округлением до ближайшего большего целого числа).
Пример расчета (демонстрационные значения)
При выборе 12-битного разрешения, опорного напряжения 3.3 V и однополярного диапазона калькулятор выполняет следующие вычисления:
- Количество уровней: 2¹² = 4096.
- Максимальный код: 4095.
- LSB: 3.3 V ÷ 4096 ≈ 805.6641 µV.
- Максимальная ошибка квантования: ± 402.832 µV.
- Шум квантования: ≈ 232.5752 µV rms.
- Идеальное SNR: ≈ 74.01 dB.
- Динамический диапазон: ≈ 72.25 dB.
- При входном напряжении 1.65 V (ровно середина шкалы) выходной код равен 2048 (двоичный: 1000 0000 0000, шестнадцатеричный: 0x800), а ошибка квантования составляет 0 V.
Правила обработки граничных режимов и ошибок
- Модель квантования: Инструмент моделирует идеальный квантователь, где первый переход кода происходит при достижении половины шага (1 / 2 LSB), а шаг LSB строго равен FSR ÷ 2^N.
- Ограничение применимости: Все расчеты описывают идеальный АЦП. Реальные микросхемы вносят погрешности нелинейности (INL/DNL), смещения, усиления и температурного дрейфа, а шум источника опорного напряжения масштабирует шаг. Поэтому идеальное SNR, динамический диапазон и предел ±1 / 2 LSB являются теоретическим максимумом. Разрядность АЦП не тождественна его реальной точности.
- Выход за верхнюю границу: Если входное напряжение превышает верхний предел диапазона, код ограничивается максимальным значением (2^N - 1). Калькулятор выводит предупреждение: «Входное значение выше верхнего предела: выход насыщается на максимальном коде, а показанная ошибка является истинным остатком — ограничение ±½ LSB больше не применяется.».
- Выход за нижнюю границу: Если входное напряжение ниже минимального предела диапазона, код ограничивается значением 0. Выводится предупреждение: «Входное значение ниже нижнего предела: выход насыщается на коде 0, а показанная ошибка является истинным остатком — ограничение ±½ LSB больше не применяется.».
- Точная середина шкалы: При подаче напряжения, равного ровно половине диапазона, калькулятор отмечает, что половина диапазона преобразуется в средний код с нулевой ошибкой квантования.
Сообщения об ошибках ввода
- Некорректный формат числа:
"‹field›: “‹token›” не является числом.". - Выход разрядности за границы:
"Разрешение должно быть целым числом бит от 1 до 32.". - Недопустимое опорное напряжение:
"Опорное напряжение должно быть больше нуля.". - Дробный код:
"Код должен быть целым числом отсчетов.". - Выход кода за границы:
"Код должен быть в диапазоне от 0 до ‹max› для ‹bits›-битного преобразователя.". - Недопустимый шаг разрешения:
"Минимальное разрешаемое изменение должно быть больше нуля.". - Переполнение:
"Значение или промежуточный результат превышает поддерживаемый диапазон чисел.".
Конфиденциальность данных
Все вводимые вами числа остаются в этом браузере — ничего не отправляется на сервер. Все математические операции выполняются локально на вашем устройстве.
Области применения инструмента
- Выбор АЦП под задачу: Определение минимальной разрядности, необходимой для регистрации заданных изменений напряжения датчика.
- Отладка тракта обработки сигналов: Быстрый перевод сырых кодов из регистров микроконтроллера обратно в физические вольты для проверки правильности работы АЦП.
- Расчет бюджета шумов: Оценка теоретического предела SNR и среднеквадратичного шума квантования для сопоставления с шумами аналогового тракта.
- Разработка встроенного ПО: Верификация алгоритмов масштабирования и калибровки сигналов в коде микроконтроллера.
Часто задаваемые вопросы
Означает ли 12-битное разрешение 12-битную точность?
Нет. Разрешение — это лишь разрядность кода, определяющая, насколько мелко делится диапазон. Точность же ограничена интегральной (INL) и дифференциальной (DNL) нелинейностью преобразователя, ошибками смещения и усиления, погрешностью и шумом источника опорного напряжения, а также обвязкой схемы. Именно поэтому в спецификациях указывают ENOB (эффективное число бит): 12-битный SAR обычно выдает 10–11 эффективных бит. Показанное здесь идеальное SNR в 74 dB — это теоретический предел, которого не достигает ни один реальный 12-битный преобразователь.
Как входной сигнал ±Vref меняет расчеты?
Диапазон удваивается до 2 × Vref, поэтому тот же преобразователь разрешает шаги вдвое большей ширины: LSB = 2 × Vref ÷ 2^N. Коды идут от отрицательного плеча питания к положительному: код 0 соответствует −Vref, средний код 2^(N−1) равен 0 V, а максимальный код находится на один шаг ниже +Vref. Выберите биполярный диапазон выше, и ноль вольт попадет точно на средний код.
Почему в одних источниках делят на 2^N, а в других — на 2^N − 1?
Это две разные модели одного и того же преобразователя. В спецификациях и классической теории квантования принято определять LSB = FSR ÷ 2^N, где первый переход кода происходит на уровне половины шага — именно эту модель использует данная страница. Формула Vref ÷ (2^N − 1) возникает при жесткой привязке максимального кода к значению Vref, что часто встречается в руководствах по микроконтроллерам. При 12 битах разница между ними составляет около 0.02%, что намного меньше погрешности любого реального опорного источника; главное — не смешивать эти подходы при сверке данных из разных источников.
Что делать, если шаг квантования слишком велик?
Передискретизация и усреднение позволяют повысить разрешение, если в сигнале присутствует небольшой шум: усреднение в 4× раза большего числа отсчетов дает примерно один дополнительный эффективный бит, а в 16× раз — два бита, при условии, что шум является белым и некоррелированным. Идеально чистый и неподвижный сигнал будет просто выдавать один и тот же код. В противном случае следует перейти на преобразователь с большей разрядностью или добавить каскад с программируемым усилением, чтобы сигнал занимал большую часть диапазона.