ADS1115

Adafruit (плата), Texas Instruments (ADS1115) · Adafruit ADS1115 PID 1085, версия STEMMA QT

Измерение медленно меняющихся аналоговых сигналов внешним 16-битным АЦП по I²C.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает Adafruit ADS1115 PID 1085, версия STEMMA QT

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

Здесь рассматривается Adafruit PID 1085 в исполнении STEMMA QT. У него есть VIN, A+/A− и разъёмы JST-SH; A+/A− являются отфильтрованными выходами питания, а не дифференциальной парой АЦП. У старого исполнения и совместимых плат отличаются разъёмы и дополнительные цепи. Надпись ADS1015 на похожей плате означает другую разрядность и скорость.

Настройка ±6,144 В задаёт масштаб преобразования, а не разрешает подавать 6 В при питании 3,3 В. Аналоговые контакты должны оставаться в пределах шин питания; даже при дифференциальном измерении отрицательная разность не означает допустимость отрицательного напряжения относительно GND. Рабочий диапазон также ограничивается выбранным PGA. В примере GAIN_ONE даёт масштаб ±4,096 В, поэтому сигнал 0–3,3 В укладывается и в питание, и в диапазон.

Шестнадцать бит формата не гарантируют шестнадцать точных бит измерения. Учитывайте шум, сопротивление источника, скорость преобразования и калибровку; сетевое и высокое напряжение напрямую не подключают.

Adafruit ADS1115, изделие 1085, версия STEMMA QT; лицевая сторона платы.

ADS1115. Фото: Liz Clark / Adafruit. Оригинал: https://learn.adafruit.com/assets/112696 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Из исходной фотокомпозиции выделен лицевой вид платы; обратный вид и исходный фон исключены. Очищены видимые сквозные отверстия. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, маркировка и видимые детали не перерисовывались. Цветокоррекция и повышение детализации не применялись. Адаптация фотографии распространяется по той же лицензии. Adafruit ADS1115, изделие 1085, версия STEMMA QT; лицевая сторона платы.

Схема распиновки

Авторская распиновка SLDV LAB: Adafruit 1085, ADS1115 STEMMA QT. Сторона компонентов; VIN снизу слева; верхний и нижний ряды слева направо. Для других ревизий и плат требуется отдельная проверка.

A+/A− на этой ревизии являются отфильтрованными выходами питания, а не дифференциальной парой АЦП.

Источники: 1, 2. Авторская схема SLDV LAB по фактам документации.

Характеристики

Разрядность АЦП
16 бит
Входы относительно GND
4
Скорость преобразований чипа
8–860 SPS
Адрес примера
0x48, ADDR=GND
Интерфейс
I²C, Аналоговый
Питание модуля
В примере VDD платы 5 В и I²C 5 В от Uno R3; A0 измеряет 0–3,3 В. Каждый аналоговый вход должен оставаться между GND и VDD независимо от выбранного PGA.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VIN5VAdafruit ADS1115 PID 1085 STEMMA QT; его I²C-подтяжки следуют VIN.
GNDGNDОбщая земля.
SDAA4 / SDAОдин и тот же сигнал Uno R3; подтяжки к питанию модуля.
SCLA5 / SCLПорядок контактов на модуле определять по маркировке, не по положению.
ADDRGNDАдрес 0x48; проверьте штатное соединение платы.
A0Движок потенциометра 10 кОмКрайние выводы потенциометра к 3.3V и GND Uno R3; это A0 АЦП, не A0 Uno.
A1 / A2 / A3 / ALRTНе подключатьПример читает только A0; неподключённые аналоговые входы не измеряются.
A+ / A− / STEMMA QTНе подключатьA+/A− — выходы питания, не входы измерения; пример использует отдельные провода.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать ADS1115 Adafruit PID 1085. Сначала уточни точную плату модуля, контроллер, среду, питание и задачу. Проверь схему, логические уровни и маркировку контактов; затем дай согласованные подключение, зависимости и полный минимальный пример с обработкой ошибок. Объясни безопасную первичную проверку и ожидаемый результат. Отдельно проверь абсолютные уровни каждого входа, PGA и сопротивление источника. Не называй четыре входа одновременными каналами измерения.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Плата и ядро
Arduino Uno R3; Arduino AVR Boards 1.8.6

Распиновка относится к ATmega328P Uno R3; не Uno R4 и не ESP32.

Библиотека
Adafruit ADS1X15 2.6.2

Установить с зависимостью Adafruit BusIO.

Адрес и объект
Adafruit_ADS1115 ads; ads.begin(0x48, &Wire)

ADDR=GND; не использовать класс ADS1015.

Усиление
GAIN_ONE

Масштаб ±4,096 В; входы физически не должны выходить за GND/VDD.

Скорость
RATE_ADS1115_128SPS

128 преобразований в секунду; каналы читаются последовательно.

Arduino: полное чтение A0 с ограничением времени ожидания

cpp
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
bool ready = false;
void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setWireTimeout(25000, true);
  if (!ads.begin(0x48, &Wire)) { Serial.println("ADS1115 not found"); return; }
  ads.setGain(GAIN_ONE);
  ads.setDataRate(RATE_ADS1115_128SPS);
  ready = true;
}
void loop() {
  if (!ready) { delay(1000); return; }
  Wire.beginTransmission(0x48);
  if (Wire.endTransmission() != 0) { Serial.println("I2C error"); delay(1000); return; }
  ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, false);
  const uint32_t started = millis();
  while (!ads.conversionComplete()) {
    if (millis() - started > 100) {
      Serial.println("Conversion timeout");
      delay(1000);
      return;
    }
    delay(1);
  }
  int16_t raw = ads.getLastConversionResults();
  if (Wire.getWireTimeoutFlag()) {
    Wire.clearWireTimeoutFlag();
    Serial.println("Wire timeout");
  } else if (raw == 32767 || raw == -32768) {
    Serial.println("ADC at full scale: check input and gain");
  } else {
    Serial.print("A0: "); Serial.print(ads.computeVolts(raw), 4); Serial.println(" V");
  }
  delay(500);
}

Полный скетч для Uno R3, Arduino AVR Boards 1.8.6 и Adafruit ADS1X15 2.6.2. Методы сверены с заголовком указанной версии; не компилировалось и не испытывалось аппаратно. Драйвер не сообщает все ошибки отдельных чтений, поэтому для ответственного измерения нужна дополнительная проверка связи и правдоподобия.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты