ADS1110 это прецизионный аналого-цифровой (A/D) преобразователь с дифференциальным входом и разрешением до 16 бит. Встроенный ИОН 2,048 В обеспечивает входной диапазон ±2,048 В. ADS1110 использует I2C интерфейс для связи с микроконтроллером. ADS1110 выполняет измерения со скоростью 15, 30, 60 или 240 выборок в секунду, содержит встроенный усилитель напряжения с коэффициентом 1, 2, 4, 8.
Основные характеристики АЦП ADS1110:
- АЦП выполнен в корпусе SOT23-6
- Точность изменения постоянного напряжения 2,048 В ±0,05%
- Общая нелинейность: 0,01 % от полного входного диапазона
- Тепловой дрейф: 5 ppm/°C
- Разрешение 16 бит
- Непрерывная самокалибровка
- Для интерфейса I2C доступно 8 адресов
- Усилитель входного сигнала с коэффициентом усиления 1, 2, 4, 8
- Частота выборки от 15 до 240
- Напряжение питания от 2,7 В до 5,5 В
- Ток потребления 240 мкА
Частота выборки (кол-во измерений в секунду) определяет разрядность результата изменения:
При измерении напряжения АЦП передает в микроконтроллер цифровое значение измеренного напряжения, в таблице указаны диапазоны значений с учетом разрядности:
Диапазон измерения зависит от коэффициента усиления усилителя, при коэффициенте 1 диапазон изменения будет в пределах ±2048 мВ, при коэффициенте 2 ±1024 мВ, при 4 ±512 мВ и ±256 мВ при коэффициенте 8.
Как ранее отмечалось АЦП выпускается в восьми вариантах, каждый вариант содержит свой I2C адрес:
Корпус АЦП который я использую содержит маркировку ED0, это означает, что I2C адрес микросхемы 0b1001000.
Микросхема содержит 8-и битный регистр конфигурации:
В режиме одиночного преобразования запись 1 в бит ST/DRDY приводит к старту преобразования, бит ST/DRDY во время непрерывного преобразования игнорируется.
Бит SC определяет, находится ли ADS1110 в режиме непрерывного преобразования (0) или в режиме однократного преобразования (1).
Биты DR0 и DR1 определяют частоту выборки:
Биты PGA1 и PGA0 устанавливают множитель усилителя:
(1) — значение по умолчанию
После записи значений конфигурационного регистра в АЦП, измеренное значение считывается при помощи 16-и битного регистра:
Считывание происходит в два этапа, сначала считывается старшие 8 бит, потом младшие 8 бит.
Показанный ниже скетч позволяет настроить АЦП (16 бит — 15 измерений в секунду, непрерывное преобразование) и получить измеренное значение напряжения в вольтах:
#include <Wire.h> #define ADDR 0x48 void setup() { Wire.begin(); Serial.begin(9600); } void loop() { Wire.beginTransmission(ADDR); Wire.write (0b10001100); Wire.endTransmission(); Wire.requestFrom(ADDR,2); while(Wire.available()<2); int value = (Wire.read()<<8) + (Wire.read()); if(value<0){Serial.println(value*2.048/0x8000,5);} if(value>=0){Serial.println(value*2.048/0x7FFF,5);} delay(1000); }
Измерение отрицательного напряжения
Измерение положительного напряжения
Это же напряжение (аккумулятор 1,2 В) измеренное вольтметром В7-78/1 равно 1,25952 В
Если цеплять 2 датчики, то 2 шт. с маркировкой ED0 нельзя, нужно ED0 и ED1,2,… и т.д.?
Да.