АЦП превращает напряжение в число. Разрешение говорит, на сколько ступеней делится диапазон: 10 бит — 1024, 12 бит — 4096, 16 бит — 65536.
Считаем: 12 бит, опора 3.3 В → шаг 3.3 / 4096 = 0.8 мВ. Значит, напряжение 1.234 В превратится в код 1531, и обратно уже точно не восстановится: погрешность ±0.4 мВ в идеале.
Что портит реальный АЦП:
— Опорное напряжение. Если оно гуляет (питание проседает), гуляет и результат. Внешняя опора (например, 2.5 В от TL431) даёт точность.
— Шум и наводки. Провод к датчику — антенна. Нужен конденсатор 100 нФ на входе и короткий провод.
— Входное сопротивление. У ESP32 АЦП нелинейный и имеет заметную погрешность; у AVR лучше линейность, но 10 бит.
— Диапазон. У ESP32 без аттенюации вход 0–1 В, с аттенюацией 0–3.3 В, но верхняя часть нелинейна.
Практика:
— Делитель напряжения перед АЦП, чтобы вписаться в диапазон.
— Усреднение: 10–100 отсчётов снижают шум в sqrt(N) раз.
— Медиана вместо среднего, если есть редкие выбросы.
— Калибровка: измерить известное напряжение и посчитать поправку.
Для точных измерений (милливольты, термопары, тензодатчики) нужен внешний АЦП с усилителем: ADS1115 (16 бит, I2C), HX711 (для тензодатчиков), MCP3421. Встроенный АЦП микроконтроллера — для «примерно», а не для лаборатории.
АЦП стоит в любом проекте с датчиком, и его погрешности объясняют «датчик врёт».
Подай на АЦП известное напряжение с делителя (например, 1.65 В) и выведи 20 отсчётов. Посчитай разброс — это шум твоей схемы.
Проверь себя
Почему показания АЦП прыгают на ±5 единиц?
Шум: наводки на проводе, пульсации питания, нестабильная опора, входное сопротивление источника. Лечится конденсатором на входе, коротким проводом, усреднением и стабильным питанием.
-
Wikipedia: Analog-to-digital converter
разрешение и опора
-
ESP-IDF: ADC
АЦП ESP32: ограничения