;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <P16F628A.INC>
LIST p=16F628A
__CONFIG H’3F10′ ;конфигурация микроконтроллера
Sec equ 20h ;регистры для подпрограмм паузы
Sec1 equ 21h ;
Sec2 equ 22h ;
perem equ 23h ;регистры для подпрограмм передачи данных SPI, I2C
scetbit equ 24h ;
adr_i2c equ 25h ;
byte_H equ 26h ;
byte_L equ 27h ;
slave_adr equ 28h ;
adr_ind equ 29h ;
dat_ind equ 2Ah ;
shet equ 2Bh ;регистры подпрограммы преобразования двоичного числа
bcd1 equ 2Ch ;в десятичное
bcd2 equ 2Dh ;
bcd3 equ 2Eh ;
rezLH equ 2Fh ;
rezLL equ 30h ;
flag equ 7Dh ;дополнительный регистр флагов
#DEFINE scl PORTB,0 ;линия тактирования SCL ADS1115
#DEFINE sda PORTB,1 ;линия данных SDA ADS1115
#DEFINE scl_io TRISB,0 ;линия направления SCL
#DEFINE sda_io TRISB,1 ;линия направления SDA
#DEFINE led_err PORTB,2 ;светиодиод Ошибки интерфейса I2C
#DEFINE comp PORTB,3 ;линия компаратора ALERT/RDY ADS1115
#DEFINE led PORTB,4 ;светиодиод процесса преобразования
#DEFINE din PORTB,5 ;линия входа данных драйвера MAX7219
#DEFINE cs PORTB,6 ;линия выбора драйвера MAX7219
#DEFINE clk PORTB,7 ;линия тактирования драйвера MAX7219
;flag,4 — флаг записи\чтения по i2c
;flag,5 — флаг ошибки ожидания ответа потвержедния по i2c (1-нет потверж. 0-есть потвержд)
;flag,6 — флаг ошибки двух неудачных попыток записи\чтения по i2c (нет потверждения)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0000h ;начать выполнение программы с адреса 0000h
goto Start ;переход на метку Start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа
Start movlw b’00000111′ ;выключение компараторов
movwf CMCON ;
movlw b’01000000′ ;Настройка линий ввода/вывода
movwf PORTB ;
movlw b’00000000′ ;
movwf PORTA ;
bsf STATUS,RP0 ;
movlw b’00001011′ ;
movwf TRISB ;
movlw b’11111111′ ;
movwf TRISA ;
bcf STATUS,RP0 ;
call init_lcd ;вызов подпрограммы инициализации драйвера MAX7219
movlw b’10010000′ ;адрес устройства ADS1115
movwf slave_adr
movlw b’11111111′ ;запись двух байт для передачи по протоколу I2C
movwf byte_H ;передаем значение 0xFFFF в регистр Hi-tresh
movlw b’11111111′ ;
movwf byte_L ;
movlw b’00000011′ ;адрес регистра Hi-tresh
movwf adr_i2c ;
call write_i2c ;вызов подпрограммы записи данных по I2C
btfss flag,6 ;проверка флага ошибки
goto met_0 ;нет ошибки: переход на метку met_0
met_err1 bsf led_err ;ошибка: включаем светодиод ошибки
goto met_err1 ;переход на метку met_err1
met_0 movlw b’00000000′ ;запись двух байт для передачи по протоколу I2C
movwf byte_H ;передаем значение 0x0000 в регистр Lo-tresh
movlw b’00000000′ ;
movwf byte_L ;
movlw b’00000010′ ;адрес регистра Lo-tresh
movwf adr_i2c
call write_i2c ;вызов подпрограммы записи данных по I2C
btfss flag,6 ;проверка флага ошибки
goto met_3 ;нет ошибки: переход на метку met_3
met_err2 bsf led_err ;ошибка: включаем светодиод ошибки
goto met_err2 ;переход на метку met_err2
;запись двух байт для передачи по протоколу I2C
met_3 movlw b’11000101′ ;выполнить одиночное проебразование, мультиплексор вход AIN0 и GND,
movwf byte_H ;Коэфф. усиления FS=±2,048В, Одиночное преобразование (пониж. потребление)
movlw b’11100000′ ;Частота дискретизации 860 ГЦ, Компаратор с гистерезисом,
movwf byte_L ;Низкий активный уровень компаратора, без защелки, установка сигнала на
;выходе после одного преобразования
movlw b’00000001′ ;адрес конфигурационного регистра Config register
movwf adr_i2c ;
call write_i2c ;вызов подпрограммы записи данных по I2C
btfss flag,6 ;проверка флага ошибки
goto met_1 ;нет ошибки: переход на метку met_1
met_err bsf led_err ;ошибка: включаем светодиод ошибки
goto met_err ;переход на метку met_err
met_1 btfss comp ;опрос выхода компаратора, ожидаем конец преобразования
goto met_4 ;преобразование закончено:переход на метку met_4
bsf led ;преобразование не закончено: включаем светодиод «преобразование»
goto met_1 ;переход на метку met_1
met_4 bcf led ;выключаем светодиод «преобразование»
movlw b’00000000′ ;адрес регистра c результатом преобразования Conversion register
movwf adr_i2c ;
call read_i2c ;вызов подпрограммы чтения по протоколу I2C
movlw .4 ;Делим результат преобразования на 4
movwf shet ;для получения значения напряжения в милливольтах
met_2 bcf STATUS,C ;
rrf byte_H,F ;
rrf byte_L,F ;
decfsz shet,F ;
goto met_2 ;
movf byte_H,W ;копируем результат деления в промежуточные регистры
movwf rezLH ;
movf byte_L,W ;
movwf rezLL ;
call bin2bcd ;вызов подпрограммы преобразования двоичного числа в десятичное
movf bcd3,W ;копирование значения единиц милливольт в регистр
andlw b’00001111′ ;1-го индикатора
movwf dat_ind ;
movlw 0x01 ;
movwf adr_ind ;
call send ;вызов подпрограммы отправки данных на дрйвер MAX7219
swapf bcd3,W ;копирование значения десятков милливольт в регистр
andlw b’00001111′ ;2-го индикатора
movwf dat_ind ;
movlw 0x02 ;
movwf adr_ind ;
call send ;вызов подпрограммы отправки данных на дрйвер MAX7219
movf bcd2,W ;копирование значения сотен милливольт в регистр
andlw b’00001111′ ;3-го индикатора
movwf dat_ind ;
movlw 0x03 ;
movwf adr_ind ;
call send ;вызов подпрограммы отправки данных на дрйвер MAX7219
swapf bcd2,W ;копирование значения тысяч милливольт в регистр
andlw b’00001111′ ;4-го индикатора
movwf dat_ind ;
bsf dat_ind,7 ;установка точки, для отображения в Вольтах
movlw 0x04 ;
movwf adr_ind ;
call send ;вызов подпрограммы отправки данных на дрйвер MAX7219
call paus_pr ;вызов подпрограммы паузы между измерениями 0,58 сек
goto met_3 ;переход на метку met_3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bin2bcd movlw .16 ;Подпрограмма преобразования двоичного числа
movwf shet ;в десятичное
clrf bcd1 ;Двухбайтное число предварительно загружается
clrf bcd2 ;в регисты rezLH, rezLL
clrf bcd3 ;Результат преобразования:
goto bin2bcd_1 ;единицы в младшем полубайте bcd3
;десятки в старшем полубайте bcd3
adjdec movlw 0x33 ;сотни в младшем полубайте bcd2
addwf bcd1,F ;тысячи в старшем полубайте bcd2
addwf bcd2,F ;десятки тысяч в младшем полубайте bcd1
addwf bcd3,F ;
;
movlw 0x03 ;
btfss bcd1,3 ;
subwf bcd1,F ;
btfss bcd2,3 ;
subwf bcd2,F ;
btfss bcd3,3 ;
subwf bcd3,F ;
;
movlw 0x30 ;
btfss bcd1,7 ;
subwf bcd1,F ;
btfss bcd2,7 ;
subwf bcd2,F ;
btfss bcd3,7 ;
subwf bcd3,F ;
;
bin2bcd_1 rlf rezLL,F ;
rlf rezLH,F ;
rlf bcd3,F ;
rlf bcd2,F ;
rlf bcd1,F ;
decfsz shet,F ;
goto adjdec ;
return ;выход из подпрограммы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма инициализации драйвера(MAX7219)
init_lcd call pauslcd ;вызов подпрограммы паузы 2 мс
movlw 0x0F ;выключить тестовый режим
movwf adr_ind ;
movlw 0x00 ;
movwf dat_ind ;
call send ;
movlw 0x0C ;включить драйвер в рабочий режим
movwf adr_ind ;
movlw 0x01 ;
movwf dat_ind ;
call send ;
movlw 0x0A ;установить интенсивность свечения 15/32
movwf adr_ind ;
movlw 0x07 ;
movwf dat_ind ;
call send ;
movlw 0x09 ;включить декодирование для всех индикаторов
movwf adr_ind ;
movlw 0xFF ;
movwf dat_ind ;
call send ;
movlw 0x0B ;использовать 4 индикатора
movwf adr_ind ;
movlw 0x03 ;
movwf dat_ind ;
call send ;
return ;выход из подпрограммы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма отправки 2-х байт (пакета данных) на драйвер (MAX7219) по протоколу SPI
send bcf cs ;Сбросить линию выбора драйвера CS
movlw .8 ;Отправка содержимого адресного байта adr_ind
movwf scetbit ;
povtor bcf clk ;
btfsc adr_ind,7 ;
bsf din ;
btfss adr_ind,7 ;
bcf din ;
bsf clk ;
rlf adr_ind,F ;
decfsz scetbit,F ;
goto povtor ;
movlw .8 ;Отправка содержимого байта данных dat_ind
movwf scetbit ;
povtr1 bcf clk ;
btfsc dat_ind,7 ;
bsf din ;
btfss dat_ind,7 ;
bcf din ;
bsf clk ;
rlf dat_ind,F ;
decfsz scetbit,F ;
goto povtr1 ;
bcf clk ;
bsf cs ;установить в 1 линию выбора драйвера CS
return ;выход из подпрограммы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;подпрограмма чтения/записи по интерфейсу I2C
write_i2c bsf flag,4 ;установка флага записи
goto i2c_1 ;переход на метку i2c_1
read_i2c bcf flag,4 ;сброс флага (для чтения)
bcf flag,5 ;сброс окончания приема данных
i2c_1 bcf flag,6 ;сброс флага ошибки I2C
call starti2c ;вызов подпрограммы «Старт» для I2C
bcf slave_adr,0 ;бит на запись
movf slave_adr,W ;копируем адрес ведомого
call peredi2c ;передача байта
btfsc flag,6 ;проверка флага ошибки
goto err_i2c ;ошибка:переход на метку err_i2c
movf adr_i2c,W ;передача адреса необходимого регистра i2c
call peredi2c ;передача байта
btfsc flag,6 ;проверка флага ошибки
goto err_i2c ;ошибка:переход на метку err_i2c
btfss flag,4 ;проверка флага запись/чтение I2C
goto rd_i2c ;переход на метку rd_i2c (чтение)
i2c_2 movf byte_H,W ;передача старшего байта данных
call peredi2c ;передача байта по I2C
btfsc flag,6 ;проверка флага ошибки
goto err_i2c ;ошибка:переход на метку err_i2c
movf byte_L,W ;передача младшего байта данных
call peredi2c ;передача байта по I2C
btfsc flag,6 ;проверка флага ошибки
goto err_i2c ;ошибка:переход на метку err_i2c
call stopi2c
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rd_i2c call starti2c ;вызов подпрограммы (повторный Старт)
bsf slave_adr,0 ;бит на чтение
movf slave_adr,W ;копируем адрес ведомого
call peredi2c ;передача байта
btfsc flag,6 ;проверка флага ошибки
goto err_i2c ;ошибка:переход на метку err_i2c
call priemi2c ;прием байта
movwf byte_H ;
bsf flag,5 ;установка флага для приема последнего байта
call priemi2c ;прием байта
movwf byte_L ;
call stopi2c ;передача стоп
return
err_i2c call stopi2c ;вызов подпрограммы «Стоп» для I2C
return ;выход после двух неудачных попыток передачи данных по I2C
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
starti2c call scl_1 ;отпустить линию scl
call pausi2c ;пауза I2C (5 мкс)
call sda_0 ;притянуть к 0 линию sda
call pausi2c ;пауза I2C (5 мкс)
call scl_0 ;притянуть к 0 линию scl
call pausi2c ;пауза I2C (5 мкс)
return ;возврат из подпрограммы
stopi2c call sda_0 ;притянуть к 0 линию sda
call pausi2c ;пауза I2C (5 мкс)
call scl_1 ;отпустить линию scl
stpi2c_1 call pausi2c ;пауза I2C (5 мкс)
btfss scl ;
goto stpi2c_1 ;
call sda_1 ;отпустить линию sda
call pausi2c ;пауза I2C (5 мкс)
return ;возврат из подпрограммы
sda_1 bsf STATUS,RP0 ;перенастройка линии sda на вход
bsf sda_io ;
bcf STATUS,RP0 ;
return ;возврат из подпрограммы
sda_0 bcf sda ;перенастройка линии sda на выход
bsf STATUS,RP0 ;
bcf sda_io ;
bcf STATUS,RP0 ;
return ;возврат из подпрограммы
scl_1 bsf STATUS,RP0 ;перенастройка линии scl на вход
bsf scl_io ;
bcf STATUS,RP0 ;
return ;возврат из подпрограммы
scl_0 bcf scl ;перенастройка линии scl на выход
bsf STATUS,RP0 ;
bcf scl_io ;
bcf STATUS,RP0 ;
return ;возврат из подпрограммы
peredi2c movwf perem ;подпрограмма передачи байта по i2c
movlw .8 ;
movwf scetbit ;
prd_i2c_1 btfsc perem,7 ;
call sda_1 ;отпустить линию sda
btfss perem,7 ;
call sda_0 ;притянуть к 0 линию sda
call scl_1 ;отпустить линию scl
prd_i2c_2 call pausi2c ;пауза I2C (5 мкс)
btfss scl ;
goto prd_i2c_2 ;
call scl_0 ;притянуть к 0 линию scl
call pausi2c ;пауза I2C (5 мкс)
rlf perem,F ;
decfsz scetbit,F ;
goto prd_i2c_1 ;
call sda_1 ;отпустить линию sda
call scl_1 ;отпустить линию scl
prd_i2c_3 call pausi2c ;пауза I2C (5 мкс)
btfss scl ;
goto prd_i2c_3 ;
movlw .20 ;прием потверждения 100 мкс
movwf scetbit ;
prd_i2c_4 btfss sda ;
goto prd_i2c_5 ;
decfsz scetbit,F ;
goto prd_i2c_4 ;
bsf flag,6 ;нет потверждения, устанавливаем флаг ошибки
prd_i2c_5 call scl_0 ;притянуть к 0 линию scl
call pausi2c ;пауза I2C (5 мкс)
return ;возврат из подпрограммы
priemi2c movlw .8 ;подпрограмма приема байта по i2c
movwf scetbit ;
call sda_1 ;отпустить линию sda
prm_i2c_1 rlf perem,F ;
call scl_1 ;отпустить линию scl
prm_i2c_2 call pausi2c ;пауза I2C (5 мкс)
btfss scl ;
goto prm_i2c_2 ;
btfsc sda ;
bsf perem,0 ;
btfss sda ;
bcf perem,0 ;
call scl_0 ;притянуть к 0 линию scl
call pausi2c ;пауза I2C (5 мкс)
decfsz scetbit,F ;
goto prm_i2c_1 ;
radiolaba.ru
Микросхема ADS1115 — это 4-х канальный 16-битный аналого-цифровой преобразователь (АЦП). ADS1115 разработано для обеспечения точности, энергоэффективности, простоты в реализации, выполняет преобразование с программируемыми скоростями обработки данных до 860 выб./с, потребляемый ток питания составляет всего 150 мкА (ном.), а рабочее напряжение снижено до 2 В.
Встроенный усилитель с программируемым коэффициентом усиления (PGA) предлагает диапазоны входных сигналов от ±256 мВ до ±6.144 В, что позволяет проводить точные измерения больших и малых напряжений. ADS1115 имеет входной мультиплексор (MUX), который позволяет выполнять два дифференциальных или четыре несимметричных входных измерения.
ADS1115 имеет встроенный компаратор (вывод ALERT/RDY), который можно использовать в качестве оповещения для управляющего устройства (микроконтроллера или микропроцессора).
Этот модуль очень боится перенапряжения по входам. Превышение напряжения более чем на 5% от напряжения питания не допустимо.
Подключается АЦП ADS1115 к микропроцессору или микроконтроллеру по шине I2C/TWI, а на каждую линию необходим внешний верхний подтягивающий резистор номиналом от 1 до 10 кОм. Выход ALERT/RDY от компаратора подключается к цифровому входу МК/МП, на эту линию тоже нужно подключить верхний подтягивающий резистор того-же номинала.
Всего в микросхеме имеется 4 входа (AIN0-AIN3), которые могут использоваться как два дифференциальных входа для измерения разности напряжения между входами, либо как 4 отдельных несимметричных входа, в этом случае напряжение измеряется между одним из входов и общим проводом (GND). Необходимую комбинацию входов можно задавать с помощью встроенного мультиплексора, структура которого показана на картинке ниже:
Как видно на вход внутреннего АЦП (AINp, AINn) в один момент времени может подключаться только одна комбинация входов. Для дифференциального входа, в случае, когда AINp>AINn, напряжение считается положительным, если AINn>AINp, то напряжение отрицательное. При использовании несимметричного входа измерение напряжения производится относительно общего провода, в этом случае измеряется только положительное напряжение. Микросхема ADS1115 не предназначена для измерения отрицательного напряжение относительно общего провода, на входы можно подавать только положительное напряжение.
Встроенный усилитель дает возможность измерения малых напряжений, не ограничивая разрешение АЦП. В следующей таблице приведены коэффициенты усиления и пределы измеряемого напряжения:
PGA | FS |
---|---|
2/3 | ±6,144 В |
1 | ±4,096 В |
2 | ±2,048 В |
4 | ±1,024 В |
8 | ±0,512 В |
16 | ±0,256 В |
Напряжение питания АЦП должно быть больше или равно диапазону измерения, это касается коэффициентов 2/3 и 1, которые позволяют измерять значения вплоть до величины напряжения питания АЦП. Если напряжение питания меньше предела измерения, выходной код АЦП (результат преобразования) не достигнет максимального значения для выбранного предела измерения. Наибольший предел FS=6,144 В (для коэффициента 2/3) отражает полную шкалу АЦП ADS1115, но это не означает что можно подавать такое значение, напряжение подаваемое на вход АЦП не должно превышать VDD+0,3 В. В случае максимального напряжения питания (5,5 В) измеряемое напряжение не должно превышать 5.5 В+0.3 В=5.8 В.
В следующей таблице представлено соответствие выходного кода АЦП в зависимости от входного напряжения:
Входной сигнал, Vin=AINp-AINn | Значение кода АЦП | Десятичное значение |
---|---|---|
≥FS | 7FFFh | 32767 |
+FS/(2 в 15 степени) | 0001h | 1 |
0 | 0 | 0 |
-FS/(2 в 15 степени) | FFFFh | 65535 |
≤-FS | 8000h | 32768 |
При измерении напряжения на несимметричном входе используется только половина шкалы выходного кода (0-7FFFh), так как в этом случае измеряется только положительное напряжение.
Вывод | Описание |
---|---|
VDD | Питание |
GND | Общий (земля) |
SCL | Линия тактирования (Serial CLock) |
SDA | Линия данных (Serial Data) |
ADDR | Выбор адреса подчиненного устройства I2C |
ALRT | Выход компаратора или преобразование готово |
A0 | Аналоговый вход 0 |
A1 | Аналоговый вход 1 |
A2 | Аналоговый вход 2 |
A3 | Аналоговый вход 3 |
Данное устройство предполагает установку адреса для I2C шины при помощи замыкания вывода ADDR на цифровые сигнальные выводы или выводы шины питания. Установка различных адресов I2C предназначена для того, чтоб при подключении двух и более различных устройств не происходило конфликта между ними, т. к. в лучшем случае модули у которых адреса совпадут просто не будут работать, а в худшем — работа всех модулей на шине может стать непредсказуемой. Как выглядит выбор адреса показано ниже.
Подключение вывода ADDR | Адрес микросхемы ADS1115 |
---|---|
GND | 0x48 (1001000) |
VDD | 0x49 (1001001) |
SDA | 0x4A (1001010) |
SCL | 0x4B (1001011) |
ADS1115 поддерживает стандартную скорость передачи до 100 Кбит/сек (100 кГц), высокую скорость до 400 Кбит/сек (400 кГц), а также ультравысокую скорость до 3.4 Мбит/сек (3.4 МГц).
АЦП имеет всего 4 внутренних регистра, все регистры 16-ти битные, соответственно для каждой сессии записи/чтения по интерфейсу I2C передается 2 информационных байта (кроме байта адреса регистра). Описание регистров приведено ниже в таблице:
Адрес | Название | Описание регистра |
---|---|---|
0x00 | Conversion register | Регистр хранения результата преобразования |
0x01 | Config register | Конфигурационный регистр |
0x02 | Lo_thresh register | Регистр уставки, минимальное значение |
0x03 | Hi_thresh register | Регистр уставки, максимальное значение |
С помощью конфигурационного регистра осуществляется управление АЦП, описание регистра приведено ниже в таблице:
Бит | Название бита | Значение бита | Описание |
---|---|---|---|
15 | OS. Бит определяет состояние устройства и может быть записан только в режиме пониженного потребления | Для записи | |
0 | Нет эффекта | ||
1 | Начать преобразование, для режима одиночного преобразования (пониженное потребление) | ||
Для чтения | |||
0 | Выполняется преобразование | ||
1 | Преобразование закончено | ||
14-12 | MUX. Настройка мультиплексора | 000 | AINp=AIN0 и AINn=AIN1 (умолч) |
001 | AINp=AIN0 и AINn=AIN3 | ||
010 | AINp=AIN1 и AINn=AIN3 | ||
011 | AINp=AIN2 и AINn=AIN3 | ||
100 | AINp=AIN0 и AINn=GND | ||
101 | AINp=AIN1 и AINn=GND | ||
110 | AINp=AIN2 и AINn=GND | ||
111 | AINp=AIN3 и AINn=GND | ||
11-9 | PGA. Коэффициент усиления усилителя | 000 | FS=±6,144 В |
001 | FS=±4,096 В | ||
010 | FS=±2,048 В (умолч.) | ||
011 | FS=±1,024 В | ||
100 | FS=±0,512 В | ||
101 | FS =±0,256 В | ||
110 | FS =±0,256 В | ||
111 | FS =±0,256 В | ||
8 | MODE. Режим работы | 0 | Непрерывное преобразование |
1 | Одиночное преобразование, режим пониженного потребления (умолч) | ||
7-5 | DR. Частота дискретизации | 000 | 8 ГЦ |
001 | 16 ГЦ | ||
010 | 32 ГЦ | ||
011 | 64 ГЦ | ||
100 | 128 ГЦ (умолч) | ||
101 | 250 ГЦ | ||
110 | 475 ГЦ | ||
111 | 860 ГЦ | ||
4 | COMP_MODE. Тип компаратора | 0 | Компаратор с гистерезисом (умолч) |
1 | Компаратор без гистерезиса | ||
3 | COMP_POL. Полярность компаратора | 0 | Низкий активный уровень (умолч) |
1 | Высокий активный уровень | ||
2 | COMP_LAT. Режим компаратора | 0 | Компаратор без “защелки” (умолч) |
1 | Компаратор с “защелкой” | ||
1-0 | COMP_QUE. Управление компаратором | 00 | Установка сигнала на выходе после одного преобразования |
01 | Установка сигнала на выходе после двух преобразований | ||
10 | Установка сигнала на выходе после четырех преобразований | ||
11 | Компаратор выключен (умолч) |
Скачать документацию Datasheet ADS1115.pdf
Микросхема ADS1115 – самый миниатюрный в отрасли 16-битный АЦП
ADS1115 – описание и подключение 16-битного АЦП
ADS1115 это 16-разрядный Аналого-Цифровой Преобразователь, который может прекрасно расширить разрешающие и измерительные возможности Вашей Arduino. Он имеет внутренний ИОН (Источник Опорного Напряжения), 4 аналоговых входа, которые могут быть настроены в единичный, дифференциальный и сравнительный режимы измерения.
Важно: АЦП выдает 16-разрядное знаковое значение напряжения на входе. Т. е. максимальная величина шкалы напряжения не 65535 а 32768. Соответственно если необходимо использовать шкалу на все 16-бит можно только при условии дифференциального измерения, где на один из входов будет подключен внешний источник опорного напряжения а второй будет являться измерительным.
ОЧЕНЬ ВАЖНО!!!: Этот модуль очень боится перенапряжения как по входам, так и по питанию. Превышение напряжения более чем на 5% от напряжения питания его моментально сожжет.
Данное устройство предполагает установку адреса для I2C шины при помощи замыкания вывода ADDR на цифровые сигнальные выводы или выводы шины питания. Установка различных адресов I2C предназначена для того, чтоб при подключении двух и более различных устройств не происходило конфликта между ними, т. к. в лучшем случае модули у которых адреса совпадут просто не будут работать, а в худшем — работа всех модулей на шине может стать непредсказуемой. Как выглядит выбор адреса показано на рисунке ниже.
Данная схема показывает каким образом можно измерить напряжение с внутреннего стабилизатора на 3.3В
Подключив ADS1115 I2C АЦП к ардуино по вышеприведенной схеме, Вы можете попробовать в действии его уже прямо сейчас!
Для этого необходимо всего лишь выбрать в выпадающем списке ниже, Вашу плату, указать порт и нажать Run on Arduino.
Самую свежую библиотеку с примерами кода можно скачать из репозитория GITHUB
Следующий код представляет собой образец программы выводящей в последовательный порт значение на входе 0 АЦП в виде целого (относительной шкалы), и пересчитанное в напряжение.
Если Вы испытываете затруднения с определением адреса устройства или не можете определить причину неработоспособности Вашего модуля i2c, запустите следующий код на Вашей Arduino Uno/Mega. Данная программа является сканером I2C порта управляемым через отладочный порт в режиме диалога. Она отображает на каких адресах есть устройства, а на каких их нет, а также поддерживаемые скорости общения (если вешаете несколько устройств, нужно выбирать скорость порта по самому медленному устройству, иначе при общении с более быстрым медленное может воспринять команды на себя и работа станет непредвиденной). Если подключение по I2C шине верное — данная программа это покажет.
Что бы прочитать данные из ком порта, выберите ниже используемый ардуиной COM порт, скорость и нажмите Connect
Предлагаю полный спектр услуг по разработке систем автоматики и автоматизации бытового и промышленного направления. Имею в наличии готовые модульные решения для системы «умный дом»: вентиляция, отопление, освещение, дистанционное управление. Поверьте, «Умный дом», сегодня, уже не роскошь, а вполне ДОСТУПНАЯ для каждого из нас РЕАЛЬНОСТЬ!)))
arduinomania.in.ua
ADS1115 это 16-разрядный Аналого-Цифровой Преобразователь (ADS1015 это 12-разрядный Аналого-Цифровой Преобразователь), который может прекрасно расширить разрешающие и измерительные возможности Вашей Arduino. Он имеет внутренний ИОН (Источник Опорного Напряжения), 4 аналоговых входа, которые могут быть настроены в единичный, дифференциальный и сравнительный режимы измерения.
Для справки, встроенный в Arduino АЦП 10-разрядность.
Данное устройство предполагает установку адреса для I2C шины при помощи замыкания вывода ADDR на цифровые сигнальные выводы или выводы шины питания. Установка различных адресов I2C предназначена для того, чтоб при подключении двух и более различных устройств не происходило конфликта между ними, т. к. в лучшем случае модули у которых адреса совпадут просто не будут работать, а в худшем – работа всех модулей на шине может стать непредсказуемой. Как выглядит выбор адреса показано на рисунке ниже.
Встроенный усилитель дает возможность измерения малых напряжений, не ограничивая разрешение АЦП. В следующей таблице приведены коэффициенты усиления и пределы измеряемого напряжения:
PGA | FS |
2/3 | ±6,144 В |
1 | ±4,096 В |
2 | ±2,048 В |
4 | ±1,024 В |
8 | ±0,512 В |
16 | ±0,256 В |
Напряжение питания АЦП должно быть больше или равно диапазону измерения, это касается коэффициентов 2/3 и 1, которые позволяют измерять значения вплоть до величины напряжения питания АЦП. Если напряжение питания меньше предела измерения, выходной код АЦП (результат преобразования) не достигнет максимального значения для выбранного предела измерения. Наибольший предел FS=6,144 В (для коэффициента 2/3) отражает полную шкалу АЦП ADS1115, но это не означает что можно подавать такое значение, напряжение подаваемое на вход АЦП не должно превышать VDD+0,3 В. В случае максимального напряжения питания (5,5 В) измеряемое напряжение не должно превышать 5,5 В+0,3 В=5,8 В.
Видео урок записанный Сергеем (support), где приводится пример работы с этим датчиком.
flprog.ru
|
|
Page Links : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Номер в каталоге | Описание (Функция) | производитель | |
ADS1013IDGSR | Ultra-Small, Low-Power, 12-Bit Analog-to-Digital Converter with Internal Reference | Texas Instruments | |
ADS8513 | 16-Bit, 40kSPS, Low-Power Sampling ANALOG-TO-DIGITAL CONVERTER with Internal Reference and Parallel/Serial Interface | Texas Instruments | |
DAC8560 | 16-Bit, Ultra-Low Glitch, Voltage Output DIGITAL-TO-ANALOG CONVERTER with 2.5V, 2ppm/°C Internal Reference | Texas Instruments | |
DAC8560 | 16-Bit, Ultra-Low Glitch, Voltage Output DIGITAL-TO-ANALOG CONVERTER with 2.5V, 2ppm/°C Internal Reference | Burr-Brown -> Texas Instruments | |
ADS8507 | 16-BIT 40-KSPS LOW POWER SAMPLING ANALOG-TO-DIGITAL CONVERTER WITH INTERNAL REFERENCE AND PARALLEL/SERIAL INTERFACE | Burr-Brown -> Texas Instruments | |
DAC8165 | 14-Bit, Quad Channel, Ultra-Low Glitch, Voltage Output Digital-to-Analog Converter with 2.5V, 2ppm/°C Internal Reference | Texas Instruments | |
5637C | 2.7V TO 5.5V LOW-POWER DUAL 10-BIT DIGITAL-TO-ANALOG CONVERTER WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments | |
ADS8506 | 12-BIT 40-KSPS LOW POWER SAMPLING ANALOG-TO-DIGITAL CONVERTER WITH INTERNAL REFERENCE AND PARALLEL/SERIAL INTERFACE | Burr-Brown -> Texas Instruments | |
TLV5633 | 2.7 V TO 5.5 V LOW POWER 12-BIT DIGITAL-TO-ANALOG CONVERTERS WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments | |
TLV5639 | 2.7-V TO 5.5-V LOW-POWER 12-BIT DIGITAL-TO-ANALOG CONVERTERS WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments |
English 한국어 简体中文 日本語 español
ru.datasheetbank.com
27 Ноя
ADS1115 — самый миниатюрный в промышленности 16-битный АЦП, доступный в корпусе QFN с размерами всего лишь 2.0мм x 1.5мм x 0.4мм. При разработке АЦП учитывалось обеспечение высокой точности, малого энергопотребления и простоты применения. АЦП ADS1115 предусматривают программирование частоты преобразования до 860 Гц. Потребляемый, при этом, ток составляет всего лишь 150 мкА (типовое значение), а напряжение питания допускает снижение до 2.0 В. В состав семейства также входят 12-битные АЦП, что повышает гибкость применения.
ADS1115 оснащены источником опорного напряжения и генератором. Данные передаются через I2C-совместимый последовательный интерфейс с возможностями выбора четырех подчиненных адресов шины I2C. ADS1115 предназначены для работы от одного источника питания напряжением 2.0…5.5 В. Входной диапазон встроенного программируемого усилителя отличается от уровней питания всего лишь на 256 мВ, что делает возможным измерение как больших, так и малых сигналов с высокой разрешающей способностью. Встроенный в ADS1115 мультиплексор позволяет измерять два дифференциальных или четыре несимметричных сигнала.
АЦП семейства ADS1115 выполняют преобразования в непрерывном или однократном режимах. По завершении каждого преобразования АЦП автоматически переходит в экономичный режим работы до начала следующего преобразования. Это позволяет существенно снизить средний потребляемый ток. АЦП ADS1115 предназначены для работы в температурном диапазоне -40…+125°C.
Отличительные особенности
Запросить образцы, средства разработки или техническую поддержку
Документация на ADS1115 (англ.)
www.ebvnews.ru
|
|
Ссылка на страницу (HTML): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Номер в каталоге | Описание (Функция) | производитель | |
ADS1013IDGSR | Ultra-Small, Low-Power, 12-Bit Analog-to-Digital Converter with Internal Reference | Texas Instruments | |
ADS8513 | 16-Bit, 40kSPS, Low-Power Sampling ANALOG-TO-DIGITAL CONVERTER with Internal Reference and Parallel/Serial Interface | Texas Instruments | |
DAC8560 | 16-Bit, Ultra-Low Glitch, Voltage Output DIGITAL-TO-ANALOG CONVERTER with 2.5V, 2ppm/°C Internal Reference | Texas Instruments | |
DAC8560 | 16-Bit, Ultra-Low Glitch, Voltage Output DIGITAL-TO-ANALOG CONVERTER with 2.5V, 2ppm/°C Internal Reference | Burr-Brown -> Texas Instruments | |
ADS8507 | 16-BIT 40-KSPS LOW POWER SAMPLING ANALOG-TO-DIGITAL CONVERTER WITH INTERNAL REFERENCE AND PARALLEL/SERIAL INTERFACE | Burr-Brown -> Texas Instruments | |
DAC8165 | 14-Bit, Quad Channel, Ultra-Low Glitch, Voltage Output Digital-to-Analog Converter with 2.5V, 2ppm/°C Internal Reference | Texas Instruments | |
5637C | 2.7V TO 5.5V LOW-POWER DUAL 10-BIT DIGITAL-TO-ANALOG CONVERTER WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments | |
ADS8506 | 12-BIT 40-KSPS LOW POWER SAMPLING ANALOG-TO-DIGITAL CONVERTER WITH INTERNAL REFERENCE AND PARALLEL/SERIAL INTERFACE | Burr-Brown -> Texas Instruments | |
TLV5633 | 2.7 V TO 5.5 V LOW POWER 12-BIT DIGITAL-TO-ANALOG CONVERTERS WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments | |
TLV5639 | 2.7-V TO 5.5-V LOW-POWER 12-BIT DIGITAL-TO-ANALOG CONVERTERS WITH INTERNAL REFERENCE AND POWER DOWN | Texas Instruments |
English 한국어 简体中文 日本語 español
ru.datasheetbank.com