ADS1115 – описание и подключение 16-битного АЦП



16-битный АЦП ADS1115-описание и подключение
В этой статье я рассмотрю 16-битный аналого-цифровой преобразователь ADS1115, который продается в Китае в виде модуля АЦП под платформу Arduino, хотя конечно не имеет отношения к ней. Отличительными характеристиками этого АЦП является низкое энергопотребление, всего 150 мкА в рабочем режиме, встроенный программируемый усилитель входного сигнала, программируемая частота дискретизации, режим пониженного энергопотребления, выходной компаратор.

На следующей картинке представлена схема модуля АЦП ADS1115, который был куплен здесь:
Схема модуля АЦП ADS1115
Всего в микросхеме имеется 4 входа (AIN0-AIN3), которые могут использоваться как два дифференциальных входа для измерения разности напряжения между входами, либо как 4 отдельных несимметричных входа, в этом случае напряжение измеряется между одним из входов и общим проводом. Необходимую комбинацию входов можно задавать с помощью встроенного мультиплексора, структура которого показана на картинке ниже:
ADS1115 - структурная схема мультиплексора
Как видно на вход внутреннего АЦП (AINp, AINn) в один момент времени может подключаться только одна комбинация входов. Для дифференциального входа, в случае, когда AINp>AINn, напряжение считается положительным, если AINn>AINp, то напряжение отрицательное. При использовании несимметричного входа измерение напряжения производится относительно общего провода, в этом случае измеряется только положительное напряжение. Микросхема ADS1115 не предназначена для измерения отрицательного напряжение относительно общего провода, на входы можно подавать только положительное напряжение.

Встроенный усилитель дает возможность измерения малых напряжений, не ограничивая разрешение АЦП. В следующей таблице приведены коэффициенты усиления и пределы измеряемого напряжения:

PGA FS
2/3 ±6,144 В
1 ±4,096 В
2 ±2,048 В
4 ±1,024 В
8 ±0,512 В
16 ±0,256 В

Напряжение питания АЦП должно быть больше или равно диапазону измерения, это касается коэффициентов 2/3 и 1, которые позволяют измерять значения вплоть до величины напряжения питания АЦП. Если напряжение питания меньше предела измерения, выходной код АЦП (результат преобразования) не достигнет максимального значения для выбранного предела измерения. Наибольший предел FS=6,144 В (для коэффициента 2/3) отражает полную шкалу АЦП ADS1115, но это не означает что можно подавать такое значение, напряжение подаваемое на вход АЦП не должно превышать VDD+0,3 В. В случае максимального напряжения питания (5,5 В) измеряемое напряжение не должно превышать 5,5 В+0,3 В=5,8 В.

В следующей таблице представлено соответствие выходного кода АЦП в зависимости от входного напряжения:

Входной сигнал, Vin=AINp-AINn Значение кода АЦП Десятичное значение
≥FS 7FFFh 32767
+FS/(2 в 15 степени) 0001h 1
0 0 0
-FS/(2 в 15 степени) FFFFh 65535
≤-FS 8000h 32768

При измерении напряжения на несимметричном входе используется только половина шкалы выходного кода (0-7FFFh), так как в этом случае измеряется только положительное напряжение.

Для передачи данных ADS1115 использует стандартный широко распространенный интерфейс I2C. В этом интерфейсе для связи с устройством необходимо передать его адрес, длина которого составляет 7 бит. Адрес микросхемы задается с помощью вывода ADDR, в следующей таблице приведены адреса в зависимости от того куда подключается вывод ADDR:

Подключение вывода ADDR Адрес микросхемы ADS1115
GND 1001000
VDD 1001001
SDA 1001010
SCL 1001011

На модуле этот вывод подключен к общему проводу через резистор, соответственно адрес будет равен значению 1001000.

ADS1115 поддерживает стандартную скорость передачи до 100 Кбит/сек (100 кГц), высокую скорость до 400 Кбит/сек (400 кГц), а также ультравысокую скорость до 3,4 Мбит/сек (3,4 МГц). Из даташита: для активации ультравысокой скорости необходимо после условия “Старт”, вместо адресного байта, отправить байт со значением 00001xxx, при этом АЦП не выдает подтверждение на этот байт, после чего происходит переключение на ультравысокую скорость, действие которой заканчивается после условия “Стоп”. Для работы на скоростях до 400 Кбит/сек ничего предпринимать не надо.

АЦП имеет всего 4 внутренних регистра, все регистры 16-ти битные, соответственно для каждой сессии записи/чтения по интерфейсу I2C передается 2 информационных байта (кроме байта адреса регистра). Описание регистров приведено ниже в таблице:

Название Описание Адрес
Conversion register Регистр хранения результата преобразования 00000000
Config register Конфигурационный регистр 00000001
Lo_thresh register Регистр уставки, минимальное значение 00000010
Hi_thresh register Регистр уставки, максимальное значение 00000011

С помощью конфигурационного регистра осуществляется управление АЦП, описание регистра приведено ниже в таблице:

Бит Название бита Значение бита Описание
15 OS
Бит определяет состояние устройства
Бит может быть записан только в режиме пониженного потребления
Для записи
0 Нет эффекта
1 Начать преобразование, для режима одиночного преобразования (пониженное потребление)
Для чтения
0 Выполняется преобразование
1 Преобразование закончено
14-12 MUX
Настройка мультиплексора
000 AINp=AIN0 и AINn=AIN1 (умолч)
001 AINp=AIN0 и AINn=AIN3
010 AINp=AIN1 и AINn=AIN3
011 AINp=AIN2 и AINn=AIN3
100 AINp=AIN0 и AINn=GND
101 AINp=AIN1 и AINn=GND
110 AINp=AIN2 и AINn=GND
111 AINp=AIN3 и AINn=GND
11-9 PGA
Коэффициент усиления усилителя
000 FS=±6,144 В
001 FS=±4,096 В
010 FS=±2,048 В  (умолч.)
011 FS=±1,024 В
100 FS=±0,512 В
101 FS =±0,256 В
110 FS =±0,256 В
111 FS =±0,256 В
8 MODE
Режим работы
0 Непрерывное преобразование
1 Одиночное преобразование, режим пониженного потребления (умолч)
7-5 DR
Частота дискретизации
000 8 ГЦ
001 16 ГЦ
010 32 ГЦ
011 64 ГЦ
100 128 ГЦ (умолч)
101 250 ГЦ
110 475 ГЦ
111 860 ГЦ
4 COMP_MODE
Тип компаратора
0 Компаратор с гистерезисом (умолч)
1 Компаратор без гистерезиса
3 COMP_POL
Полярность компаратора
0 Низкий активный уровень (умолч)
1 Высокий активный уровень
2 COMP_LAT
Режим компаратора
0 Компаратор без “защелки” (умолч)
1 Компаратор с “защелкой”
1-0 COMP_QUE
Управление компаратором
00 Установка сигнала на выходе после одного преобразования
01 Установка сигнала на выходе после двух преобразований
10 Установка сигнала на выходе после четырех преобразований
11 Компаратор выключен (умолч)

АЦП может работать в 2-х режимах: непрерывное преобразование и одиночное. В случае одиночного преобразования, АЦП автоматически переходит в режим пониженного энергопотребления, после окончания преобразования.

Для запуска одиночного преобразования необходимо установить бит OS в 1 (бит может быть записан только в состоянии пониженного потребления). Этот же бит определяет статус преобразования, если бит равен 0, идет преобразование, 1 – преобразование закончено. Путем чтения конфигурационного регистра можно определить готовность результата преобразования.

Режим одиночного преобразования позволяет экономить энергию, например, вместо режима непрерывного преобразования с частотой дискретизации 8 Гц, можно установить максимальную частоту дискретизации 860 Гц, а со стороны управляющего устройства (микроконтроллера) запускать одиночные преобразования с частотой 8 Гц. Время преобразования АЦП для частоты дискретизации 860 Гц составит 1,2 мс, остальные 125-1,2=123,8 мс АЦП будет находиться в режиме пониженного энергопотребления, тем самым потребляя 1/100 часть энергии, от режима непрерывного преобразования.

ADS1115 имеет встроенный компаратор (вывод ALERT/RDY), который можно использовать в качестве оповещения для управляющего устройства (микроконтроллера). Компаратор используется совместно с двумя регистрами уставки (контролируемого параметра): Hi_thresh, Lo_thresh. В конфигурационном регистре можно настраивать тип компаратора (с гистерезисом и без него), активный логический уровень выхода компаратора (вывода ALERT/RDY), режим “защелки” (сохранение уровня сигнала на выходе).

Компаратор с гистерезисом срабатывает, если измеряемое напряжение превышает значение в регистре Hi_thresh, и возвращается в исходное состояние, когда величина напряжение меньше значения в регистре Lo_thresh. Под словом “срабатывает” следует понимать установку активного логического уровня, который зависит от бита COMP_POL.

Компаратор без гистерезиса срабатывает в случае, когда измеряемое напряжение выходит за рамки, установленные в регистрах Hi_thresh, Lo_thresh.

Для правильной работы компаратора значение уставки в регистре Hi_thresh (по умолчанию 7FFFh) должно быть больше значения в регистре Lo_thresh (по умолчанию 8000h). Кроме этого вывод компаратора ALERT/RDY необходимо подтянуть через резистор к линии питания, на модуле это уже сделано.

Ниже представлена диаграмма работы компаратора:
Диаграмма компаратора ADS1115
Если включен режим “защелки” (COMP_LAT=1), то после срабатывания компаратора, уровень сигнала на выходе сохраняется и не меняется, то есть запоминается. Для снятия этого условия и дальнейшей работы компаратора необходимо прочитать результат преобразования из регистра Conversion register, или послать специальную команду предупреждения SMBus (00011001). Получив команду АЦП должен выдать ответ (ALERT) в виде своего адреса, после чего компаратор продолжает работу. Честно говоря, я не вникал в подробности этой команды, нашел только информацию, что она позволяет определить неисправный АЦП.

С помощью бита COMP_QUE можно настроить компаратор на срабатывание после одного, двух, четырех преобразований, или выключить его.

Еще одной полезной функцией компаратора является оповещение по окончании преобразования, для включения которого необходимо установить старший бит регистра Hi_thresh в 1, а старший бит регистра Lo_thresh в 0. В этом случае бит активного уровня COMP_POL, а также бит управления компаратором COMP_QUE продолжают действовать, биты COMP_MODE и COMP_LAT не влияют на выход компаратора.

Если функция оповещения включена, то в режиме непрерывного преобразования, после окончания каждого измерения на выходе компаратора появляется импульс длительностью 8 мкс. В режиме одиночного преобразования на выходе компаратора устанавливается низкий логический уровень по окончании преобразования, если бит COMP_POL установлен в 0. Тем самым эту функцию удобно использовать в качестве прерывания для управляющего устройства, чтобы не опрашивать постоянно бит OS, а сразу считывать результат преобразования.

Я подключил АЦП ADS1115 к микроконтроллеру PIC16F628A, для отображения величины измеряемого напряжения использовал цифровой индикатор на драйвере MAX7219, схема на картинке ниже:
ADS1115 схема подключения к МК
На стороне микроконтроллера интерфейс I2C реализован программно. Светодиод HL1 загорается в случае возникновения ошибки в процессе передачи данных по интерфейсу I2C, светодиод HL2 светится во время процесса преобразования АЦП. Напряжение на вход АЦП (AIN0) подается через переменный резистор R2. Используется режим одиночного преобразования с частотой дискретизации 860 Гц, с включенной функцией оповещения по окончании преобразования, измерения производятся каждые 0,6 секунд.
Код программы приведен ниже:

Сначала в регистр АЦП Hi-tresh, передается значение 0xFFFF, а в регистр Lo_thresh значение 0x0000, тем самым активируется функция компаратора об оповещении после окончания преобразования. Далее настраивается конфигурационный регистр (Config register) с одновременным запуском преобразования. После чего выполняется опрос вывода компаратора (ALERT/RDY) на факт окончания преобразования. На время выполнения преобразования включается светодиод HL2.

Можно конечно обойтись без компаратора с оповещением, но тогда придется постоянно считывать конфигурационный регистр и проверять бит OS, чтобы определить конец преобразования. Я считаю применение компаратора более удобным решением.

После срабатывания компаратора, считываем результат преобразования из регистра АЦП Conversion register. Полученный результат делим на 16, чтобы получить значение напряжения в милливольтах, данное действие равносильно уменьшению разрешения с 16 до 12 бит. Далее выводим результат деления на цифровой индикатор, после паузы в 0,6 секунд повторяем весь цикл, начиная с записи конфигурационного регистра АЦП, тем самым запуская новое преобразование.

Из-за малого энергопотребления ADS1115 можно использовать в устройствах с автономным питанием, благодаря простому управлению и гибким настройкам этот АЦП можно встраивать в различные радиоэлектронные конструкции. У рассматриваемого АЦП существуют младшие версии – ADS1113 и ADS1114, некоторые модули и функции в этих АЦП урезаны.

Модуль 16-битного АЦП ADS1115ADS1115 - макетная плата

Ниже представлен видеоролик демонстрирующий работу АЦП ADS1115:

Прошивка МК и исходник для подключения АЦП ADS1115

Последние записи:

Комментариев 8 на “ADS1115 – описание и подключение 16-битного АЦП

  1. А какое минимальное напряжение он может измерить? Подойдет ли для измерения термопары хромель-копель? Там нужны 0,06мВ на градус!

    • Для коэффициента усиления PGA=16 предел измеряемого напряжения равен ±0,256 В, при этом минимальное измеряемое напряжение составит 0,256/32768 = 0,0078 мВ, в случае вашей термопары погрешность составит примерно 1 градус, в пределах входного напряжения от 0 до 0,256 В.

  2. День добрый.
    Спасибо за статью.

    Возник вопрос, на видео у Вас шум ADC1115 составляет до 2 единиц. У меня шум на потенциометре до 50 единиц от встроенного DC ардуины. Вы пользуетесь лабораторным блоком питания или указанные на схеме конденсаторы С1, С2 решают проблему?

    • Здравствуйте, блок питания у меня регулируемый (самодельный), на основе операционного усилителя, на выходе биполярный транзистор и конденсатор большой емкости. Я не замерял пульсации напряжения, и не могу сказать насколько качественное напряжение у моего блока питания.

      Ну а вообще шум может зависеть от качества переменного резистора, а также качества соединений (проводов) и контактов. Сглаживающие конденсаторы имеют значение, но в данном примере C1, C2 влияют слабо, так как на выходе блока питания уже стоит конденсатор большой емкости.

      • Спасибо за ответ.

        Пока питаю от встроенного DC, используется китайский резистор, соединения как у Вас на видео на макетке.

        Сейчас попробую проверить на регулируемом блоке питания (у меня простой китаец) и промышленный датчик линейного перемещения, увы конденсаторов пока нет под рукой.

        В проекте планируется использование импульсного блока питания на 5V, или DC-DC 24V-5V, пайка, колодки и промышленная резистивная линейка.

  3. Помогло, хоть не идеально, но уже 10 единиц шума. Когда все будет спаяно, скручено, надеюсь достигну Вашего результата. Да и конденсаторы установлю тоже.

    Большое спасибо.

      • Длительный тест, увы не радуют. Обычно около 10 единиц, но иногда проскакивает 50.

        Получается 50 единиц, с настройками 2/3x gain +/- 6.144V что-то около 9.5mV, для меня это много. Но тут надо забирать осциллограф с работы и читать документацию, раньше выходных не доберусь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *