Микроконтроллеры Atmega, используемые в Arduino, содержат шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 бит, что позволяет на выходе получать значения от 0 до 1023. Что делать, если данного разрешения недостаточно и нужна большая точность? В этом случае необходимо использовать внешние АЦП.
Один из вариантов – АЦП-модуль ADS1115.
Характеристики ADS1115:
•разрешение: 16 бит
•программируемая частота дискретизации;
•напряжение питания: 2.0V – 5.5V;
•низкое потребление тока: 150 мкА в рабочем режиме;
•внутренний источник опорного напряжения;
•4 входа (AIN0-AIN3), которые могут использоваться как два дифференциальных входа для измерения разности напряжения между входами, либо как 4 отдельных несимметричных входа, в этом случае напряжение измеряется между одним из входов и общим проводом;
•программируемый выходной компаратор;
•встроенный программируемый усилитель входного сигнала PGA: до х16;
•интерфейс : I2C: 4-контактный по выбору адреса.
Выводы модуля ADS1115.
Еще одно уточнение насчет разрешения. ADS1115 выдает 16-разрядное знаковое значение напряжения на входе. Один бит используется для определения знака входного напряжения, а 15 бит используются для определения значения напряжения. Бит знака используется для дифференциальных входов, При использовании несимметричного входа измерение напряжения производится относительно общего провода, в этом случае измеряется только положительное напряжение. Микросхема ADS1115 не предназначена для измерения отрицательного напряжение относительно общего провода, на входы можно подавать только положительное напряжение.
Этот модуль очень боится перенапряжения как по входам, так и по питанию. Превышение напряжения более чем на 5% от напряжения питания выведет его из строя.
Для передачи данных ADS1115 использует интерфейс I2C. Адрес микросхемы задается с помощью вывода ADDR, на картинке показаны адреса в зависимости от того куда подключается вывод ADDR.
Рассмотрим подключение модуля к плате Arduino. Вот схема для измерения напряжения заряда батарейки 18650.
Для работы с модулем ADS1115 есть Arduino-библиотека Adafruit_ADS1X15, которую можно скачать с github https://github.com/adafruit/Adafruit_ADS1X15.
И скетч
// подключение библиотек
#include
#include
// I2C адрес устройства
Adafruit_ADS1115 ads(0x48);
float Voltage = 0.0;
void setup(void)
{
// подключение последовательного порта
Serial.begin(9600);
// подключение АЦП
ads.begin();
}
void loop(void)
{
// на выходе АЦП - 16-разрядное знаковое целое
int16_t adc0;
// получаем данные измерения с A0 ADS1115
adc0 = ads.readADC_SingleEnded(0);
// пересчет в вольты
Voltage = (adc0 0.1875)/1000;
// вывод в монитор последовательного порта
Serial.print("AIN0: ");
Serial.print(adc0);
Serial.print(" Voltage: ");
Serial.println(Voltage, 7);
Serial.println();
delay(1000);
}
И результат работы скетча
Аналого-Цифровой Преобразователь ADS1115. Модуль RI038. Описание в формате PDF