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

ADS1115 и MCP3008 — внешние АЦП для микроконтроллеров

ADS1115 и MCP3008 — два самых популярных внешних АЦП для Arduino, ESP32 и Raspberry Pi. Первый — медленный, но точный 16-битный с усилителем и I²C, второй — быстрый 10-битный на восемь каналов с SPI. Разбираем по даташитам TI и Microchip, когда какой брать и как не потерять точность.

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

ADS1115 — 16-битный АЦП TI с интерфейсом I²C, программируемым усилителем и внутренним опорным напряжением. MCP3008 — 10-битный АЦП Microchip последовательного приближения с SPI, восемью входами и внешним опорным. Вместе они закрывают большинство задач, где встроенного АЦП микроконтроллера не хватает.

Выводы

ADS1115, вид сверху: 1 ADDR, 2 ALERT/RDY, 3 GND, 4 AIN0, 5 AIN1, 6 AIN2, 7 AIN3, 8 VDD, 9 SDA, 10 SCLADS11151ADDR2ALRT3GND4AIN05AIN16AIN27AIN38VDD9SDA10SCLвид сверху
MCP3008, вид сверху: 1–8 входы CH0–CH7, 9 DGND, 10 CS/SHDN, 11 DIN, 12 DOUT, 13 CLK, 14 AGND, 15 VREF, 16 VDDMCP30081CH02CH13CH24CH35CH46CH57CH68CH79DGND10CS11DIN12DOUT13CLK14AGND15VREF16VDDвид сверху
ADS1115 в корпусе VSSOP-10 и MCP3008 в DIP-16, вид сверху

У ADS1115 вывод ALERT/RDY — открытый сток: компаратор или сигнал готовности преобразования, нужна подтяжка к VDD. У MCP3008 опорное напряжение подают на VREF — часто просто соединяют с питанием, и тогда код зависит от его точности.

Сравнение

ПараметрADS1115MCP3008
Разрядность16 бит10 бит
Входы4 одиночных или 2 дифференциальных8 одиночных или 4 псевдодифференциальных
Скорость8–860 выборок/сдо 200 тыс./с при 5 В, 130 тыс. при 3,3 В, 75 тыс. при 2,7 В
ИнтерфейсI²C, адреса 0x48–0x4BSPI, режимы 0,0 и 1,1
Питание2,0–5,5 В2,7–5,5 В
Опорноевнутреннее, диапазоны ±0,256…±6,144 Ввнешнее VREF от 0,25 В до VDD
Ток при работе150 мкА типичнодо 500 мкА при 5 В
Точностьсмещение ±1 LSB типично (дифф.), усиление 0,01 % типичноINL и DNL до ±1 LSB, смещение до ±1,5 LSB

Диапазоны ADS1115

Усилитель задаёт масштаб: шаг кода — диапазон, делённый на 215.

ДиапазонШаг кодаВходное сопротивление (дифф.)
±6,144 В187,5 мкВ22 МОм
±4,096 В125 мкВ15 МОм
±2,048 В62,5 мкВ4,9 МОм
±1,024 В31,25 мкВ2,4 МОм
±0,512 В15,625 мкВ710 кОм
±0,256 В7,8125 мкВ710 кОм

Диапазоны ±6,144 и ±4,096 В — только масштаб: напряжение на входах всё равно не должно выходить за пределы от GND − 0,3 до VDD + 0,3 В. При питании 3,3 В и диапазоне ±4,096 В вход 3,3 В даст 3,3 / 0,000125 = 26 400 кодов из 32 767 — часть шкалы теряется, но это лучше, чем перегрузка входа. Шум на малых скоростях по таблице TI не превышает шага кода; на 860 выборках в секунду его размах вырастает в 2–4,6 раза. Цифровые выводы, в отличие от аналоговых, выдерживают до 5,5 В при любом питании.

Код MCP3008

По даташиту Microchip шаг кода — VREF / 1024, а код — 1024 · VIN / VREF. При VREF = 5 В шаг — 4,88 мВ, при 3,3 В — 3,22 мВ. Выборка длится 1,5 такта SPI, начиная с первого фронта тактового сигнала после спада CS: за это время вход должен зарядить внутренний конденсатор 20 пФ через ключ около 1 кОм, поэтому источник с большим сопротивлением увеличивает ошибки — подробнее в статье о времени выборки АЦП. Тактовую частоту ниже 10 кГц Microchip не рекомендует: конденсатор теряет заряд, и падает линейность.

Скорость 200 тыс. выборок в секунду достигается при такте 3,6 МГц — 18 тактов на выборку. Протокол SPI и режимы — в статье «Интерфейс SPI», адреса устройств на шине I²C — в статье об адресах I²C. Другие микросхемы — в разделе «АЦП».

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

Какой адрес I²C у ADS1115?

Зависит от того, куда подключён вывод ADDR: к GND — 0x48, к VDD — 0x49, к SDA — 0x4A, к SCL — 0x4B. Так на одной шине можно поставить четыре ADS1115, то есть 16 одиночных входов.

Можно ли измерить ADS1115 напряжение 5 В при питании 3,3 В?

Нет. Диапазон ±6,144 В — это только масштаб АЦП: TI запрещает подавать на аналоговые входы больше VDD + 0,3 В. При питании 3,3 В вход ограничен 3,6 В, поэтому 5 В подают через делитель. Цифровые выводы ADS1115 при этом выдерживают до 5,5 В.

Что выбрать: ADS1115 или MCP3008?

По задаче. Для медленных точных измерений — термопары через усилитель, тензомоста, шунта, напряжения батареи — ADS1115: 16 бит, дифференциальный вход, усилитель до диапазона ±0,256 В и внутреннее опорное. Для быстрого опроса многих потенциометров, джойстиков, аналоговых датчиков — MCP3008: 8 каналов и до 200 тыс. выборок в секунду, но всего 10 бит.

Почему MCP3008 показывает неточные значения с высокоомным датчиком?

Вход заряжает выборочный конденсатор 20 пФ через ключ около 1 кОм за 1,5 такта SPI. Если сопротивление источника велико, конденсатор не успевает зарядиться, и Microchip предупреждает о росте ошибок смещения, усиления и нелинейности. Помогают буферный операционный усилитель или более медленная тактовая частота.

Источники

  1. Texas Instruments. ADS111x Ultra-Small, Low-Power, I2C-Compatible, 860SPS, 16-Bit ADCs (SBAS444E, revised December 2024) — табл. 4-1 — выводы; разд. 5.1 — вход от GND − 0,3 до VDD + 0,3 В, цифровые входы до 5,5 В; разд. 5.5 — диапазоны ±0,256…±6,144 В, входное сопротивление, ошибки, ток 150 мкА; табл. 6-1 — шум; табл. 7-2 — адреса 0x48–0x4B
  2. Microchip. MCP3004/3008: 2.7V 4-Channel/8-Channel 10-Bit A/D Converters with SPI Serial Interface (DS20001295E, 2022) — табл. 3-1 — выводы; электрические характеристики: 200, 130 и 75 тыс. выборок/с при 5, 3,3 и 2,7 В, выборка 1,5 такта, ключ 1 кОм и 20 пФ, INL и DNL ±1 LSB; ур. 4-1, 4-2 — шаг и код; разд. 6.2 — тактовая не ниже 10 кГц

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