Адреса I²C модуля ADS1115

Микросхема ADS1115 — это 4‑канальный 16‑битный аналого‑цифровой преобразователь (АЦП) с интерфейсом I²C. У неё есть возможность выбора одного из четырёх адресов — это нужно, чтобы подключать несколько модулей к одной шине без конфликтов.

Как устанавливается адрес

Адрес задаётся подключением вывода ADDR микросхемы к одному из четырёх доступных потенциалов:

  • GND (земля);
  • VDD (питание);
  • SDA (шина данных I²C);
  • SCL (шина тактирования I²C).

Таблица адресов ADS1115

Подключение вывода ADDR Шестнадцатеричный адрес Двоичный адрес
GND 0x48 1001000
VDD 0x49 1001001
SDA 0x4A 1001010
SCL 0x4B 1001011

Примечания:

  • В двоичном представлении адреса 7‑битный формат (без учёта бита чтения/записи).
  • По умолчанию (если ADDR подключён к GND) адрес — 0x48.

Практические нюансы подключения

  1. Подтягивающие резисторы. Для стабильной работы шины I²C на линиях SDA и SCL должны стоять подтягивающие резисторы номиналом от 1 до 10 кОм (часто используют 4,7 кОм).
  2. Проверка адреса. Перед началом работы убедитесь, что микроконтроллер «видит» модуль по заданному адресу. Это можно сделать с помощью сканера I²C (например, стандартного скетча в Arduino IDE).
  3. Подключение нескольких модулей. Если нужно подключить несколько ADS1115 к одной шине, задайте им разные адреса через вывод ADDR.
  4. Защита от перенапряжения. Модуль чувствителен к перенапряжению на входах: превышение напряжения более чем на 5 % от напряжения питания недопустимо.

Пример кода для проверки адреса в Arduino

Используйте стандартный скетч сканера I²C, чтобы найти подключённые устройства:

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}

void loop() {
  byte error, address;
  int nDevices = 0;

  Serial.println("Scanning...");

  for (address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
      nDevices++;
    } else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
    }
  }

  if (nDevices == 0) Serial.println("No I2C devices found\n");
  else Serial.println("Done\n");

  delay(5000); // Пауза 5 секунд
}

После загрузки кода откройте Монитор порта (скорость 9600 бод) — в нём отобразится список найденных устройств. Если ADS1115 подключён правильно, вы увидите один из адресов: 0x48, 0x49, 0x4A или 0x4B.


Типичные ошибки и решения

  1. Модуль не найден сканером.
    • проверьте подключение проводов (SDA, SCL, питание, земля);
    • убедитесь, что подтягивающие резисторы установлены;
    • проверьте, что адрес задан корректно (вывод ADDR подключён к нужному потенциалу).
  2. Конфликт адресов при подключении нескольких модулей.
    • задайте каждому модулю уникальный адрес через вывод ADDR;
    • используйте сканер I²C, чтобы убедиться, что все модули видны на шине.
  3. Нестабильная работа или потеря связи.
    • проверьте качество соединений и экранировку проводов (особенно при длинных линиях);
    • убедитесь, что напряжение питания модуля в допустимом диапазоне (2,0–5,5 В).
  4. Ошибки при чтении данных.
    • проверьте настройки библиотеки (усиление, скорость оцифровки);
    • убедитесь, что в коде указан правильный адрес модуля.

Краткий итог

  • ADS1115 поддерживает 4 адреса I²C: 0x48, 0x49, 0x4A, 0x4B.
  • Адрес задаётся подключением вывода ADDR к GND, VDD, SDA или SCL.
  • По умолчанию используется адрес 0x48 (ADDR → GND).
  • Для работы шины I²C обязательны подтягивающие резисторы на SDA и SCL.
  • Перед использованием проверяйте адрес модуля сканером I²C.

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

Войти с помощью: