Микросхема 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.
Практические нюансы подключения
- Подтягивающие резисторы. Для стабильной работы шины I²C на линиях SDA и SCL должны стоять подтягивающие резисторы номиналом от 1 до 10 кОм (часто используют 4,7 кОм).
- Проверка адреса. Перед началом работы убедитесь, что микроконтроллер «видит» модуль по заданному адресу. Это можно сделать с помощью сканера I²C (например, стандартного скетча в Arduino IDE).
- Подключение нескольких модулей. Если нужно подключить несколько ADS1115 к одной шине, задайте им разные адреса через вывод ADDR.
- Защита от перенапряжения. Модуль чувствителен к перенапряжению на входах: превышение напряжения более чем на 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.
Типичные ошибки и решения
- Модуль не найден сканером.
- проверьте подключение проводов (SDA, SCL, питание, земля);
- убедитесь, что подтягивающие резисторы установлены;
- проверьте, что адрес задан корректно (вывод ADDR подключён к нужному потенциалу).
- Конфликт адресов при подключении нескольких модулей.
- задайте каждому модулю уникальный адрес через вывод ADDR;
- используйте сканер I²C, чтобы убедиться, что все модули видны на шине.
- Нестабильная работа или потеря связи.
- проверьте качество соединений и экранировку проводов (особенно при длинных линиях);
- убедитесь, что напряжение питания модуля в допустимом диапазоне (2,0–5,5 В).
- Ошибки при чтении данных.
- проверьте настройки библиотеки (усиление, скорость оцифровки);
- убедитесь, что в коде указан правильный адрес модуля.
Краткий итог
- ADS1115 поддерживает 4 адреса I²C:
0x48,0x49,0x4A,0x4B. - Адрес задаётся подключением вывода ADDR к GND, VDD, SDA или SCL.
- По умолчанию используется адрес
0x48(ADDR → GND). - Для работы шины I²C обязательны подтягивающие резисторы на SDA и SCL.
- Перед использованием проверяйте адрес модуля сканером I²C.
