Модуль АЦП ADS1115 – это высокоточный 16-битный аналого-цифровой преобразователь, предоставляющий возможность измерения аналоговых сигналов с высокой точностью. Он обладает следующими характеристиками:
- Разрешение: 16 бит.
- Частота дискретизации: до 860 спс (сэмплов в секунду).
- Входы: 4 аналоговых входа с возможностью однополюсного или дифференциального измерения.
- Встроенный программируемый усилитель с коэффициентами усиления 1, 2, 4, 8.
- Интерфейсы связи: I2C.
- Встроенный режим сравнения для создания прерываний при определенных условиях сигнала.
Преимущества модуля ADS1115 включают высокую точность измерений, малое потребление энергии, удобный интерфейс связи и возможность использования различных коэффициентов усиления.



3 комментария. Оставить новый
Здравствуйте. Что и куда нужно добавить в скетч чтобы устройство выдавало сигнал при превышении или понижении входного сигнала?
Чтобы устройство на базе ADS1115 с Arduino выдавалось сигнал (например, на цифровой пин при превышении/понижении порогового значения входного сигнала), нужно использовать встроенный компаратор ADS1115. Он генерирует сигнал на пине ALERT/RDY модуля при срабатывании условий.
Необходимые изменения в подключении
Подключите пин ALERT/RDY (обычно обозначен на модуле) к цифровому пину Arduino, например D2. Это позволит считывать готовность преобразования или срабатывание компаратора.
Добавьте в скетч из статьи библиотеки Adafruit_ADS1X15 (если не установлена: Sketch → Include Library → Manage Libraries → Adafruit ADS1X15).
Основные изменения:1. В setup() — настройка компаратора
#include
#include
Adafruit_ADS1115 ads; // 16-битный ADS1115
const int alertPin = 2; // Пин для сигнала ALERT
void setup() {
Serial.begin(9600);
pinMode(alertPin, INPUT_PULLUP); // Вход с подтяжкой
ads.begin();
// Настройка компаратора: превышение верхнего порога
// lo_thresh = 0 (нижний порог), hi_thresh = 2000 (верхний порог, ~1V)
// COMP_QUE_1CONV — прерывание после 1 преобразования
ads.setComparatorThresholds(0, 2000, COMP_QUE_1CONV);
// Режим: активный LOW при превышении hi_thresh (TRAD)
ads.setComparatorMode(ADS1X15_COMP_TRAD);
ads.setComparatorPolarity(ADS1X15_COMP_POL); // Неинвертированный
}
В loop() — проверка сигнала и чтение
void loop() {
int16_t adc0 = ads.readADC_SingleEnded(0); // Чтение канала A0
float volts = ads.computeVolts(adc0);
Serial.print(“Напряжение A0: “);
Serial.print(volts, 4);
Serial.print(“V, ADC: “);
Serial.println(adc0);
// Проверка сигнала от компаратора
if (digitalRead(alertPin) == LOW) {
Serial.println(“!!! ПРЕВЫШЕНИЕ ПОРОГА !!!”);
// Здесь включайте сирену, реле, LED и т.д.
digitalWrite(LED_BUILTIN, HIGH); // Пример: зажечь встроенный LED
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
// Сброс флага компаратора новым чтением
ads.readADC_SingleEnded(0);
}
delay(500);
}
Пороги задаются в единицах АЦП (0–32767 для 16 бит):
Нижний порог (lo_thresh): ads.setComparatorThresholds(lo, hi, queue)
Верхний порог (hi_thresh): для превышен
Пример: 2000 ≈ 1V (при GAIN_1), 8000 ≈ 4V
Не могу понять, где в скетче прописаны пины SDA и SCL. Если их не надо прописывать то как Ардуина определяет что это именно они?