8-900-374-94-44
[email protected]
Slide Image
Меню

Ads1115 datasheet на русском: ADS1115 – описание и подключение 16-битного АЦП | RadioLaba.ru

ADS1115 – описание и подключение 16-битного АЦП | RadioLaba.ru

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

          #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          ;

              btfss       flag,5             ;

              call        sda_0              ;притянуть к 0 линию sda

 

              call        scl_1              ;отпустить линию scl

prm_i2c_3     call        pausi2c            ;пауза I2C (5 мкс)

              btfss       scl                ;

              goto        prm_i2c_3          ;

              call        scl_0              ;притянуть к 0 линию scl

              call        pausi2c            ;пауза I2C (5 мкс)

              movf        perem,W            ;

              return                         ;возврат из подпрограммы

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;            

 

pausi2c       nop                            ;Подпрограмма паузы I2C (5 мкс)

              return                         ;возврат из подпрограммы

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                

 

pauslcd       movlw       . 4                ;подпрограмма паузы 2 мс

              movwf       Sec1              ;

p2            movlw       .166              ;

              movwf       Sec               ;

p1            decfsz      Sec,F             ;

              goto        p1                ;

              decfsz      Sec1,F            ;

              goto        p2                ;

              return                        ;выход из подпрограммы

 

            

paus_pr       movlw       .3                ; подпрограмма паузы 0,58 сек

              movwf       Sec2              ;

pp3           movlw       .255              ;

              movwf       Sec1              ;

pp2           movlw       .255              ;

              movwf       Sec               ;

pp1           decfsz      Sec,F             ;

              goto        pp1               ;

              decfsz      Sec1,F            ;

              goto        pp2               ;

              decfsz      Sec2,F            ;

              goto        pp3               ;

              return                        ;выход из подпрограммы

                                            

              end                           ;конец всей программы

                                            ;

Модуль ADS1115 с усилителем с программируемым усилением

31 мая 2021 — 0 комментариев

          Модуль ADS1115 с усилителем с программируемым усилением
          Схема контактов модуля ADS1115

      Описание модуля ADS1115 с PGA

      ADS1115 представляет собой модуль аналого-цифрового преобразователя с 16-разрядным разрешением. Это маломощное устройство и работает в диапазоне напряжений 2,0-5,5В. Генератор IC ADS1115 и обменивается данными с микроконтроллером с использованием протокола связи I2C. Он также включает в себя усилитель с программируемым усилением до x16, который помогает масштабировать слабые/дифференциальные сигналы до полного диапазона.

       

      Особенности и технические характеристики модуля ADS1115 с PGA

      В этом разделе упоминаются некоторые функции и технические характеристики модуля ADS1115:

      1. Диапазон напряжения питания: 2–5,5 В
      2. 16-разрядный АЦП
      3. Непрерывное потребление тока: 150 мкА
      4. Интерфейс I2C
      5. Внутренний осциллятор
      6. Программируемая скорость передачи данных: от 8 SPS до 860 SPS
      7. 860 выборок в секунду по I2C

      Альтернативы для ADS1115

      ADS1015, Mikroe-1893, Xinabox SX01

      Примечание: больше технической информации можно найти на ADS11115 Datashept DataShept .

       

      Конфигурация контактов модуля ADS1115 с PGA

      Модуль ADS1115 имеет 10 контактов. В приведенной ниже таблице указаны все контакты модуля и функции каждого типа контактов.

      Тип штифта

      Описание

      ВДД

      Вход напряжения

      ЗЕМЛЯ

      Земля

      СКЛ

      Последовательные часы I2C

      ПДД

      Последовательные данные I2C

      АДРЕС

      Адрес Пин-кода

      АЛРТ

      Тревога/Готовность

      А0

      Аналоговый вход 1

      А1

      Аналоговый вход 2

      А2

      Аналоговый вход 3

      А3

      Аналоговый вход 4

       

      Зачем использовать модуль АЦП ADS1115

      Все контроллеры имеют АЦП (аналогово-цифровые преобразователи), поскольку микроконтроллеры воспринимают только цифровой сигнал. Таким образом, для преобразования входящего аналогового сигнала в цифровой сигнал для чтения микроконтроллером требуется АЦП. Существующие АЦП на платах микроконтроллеров не настолько точны и масштабируемы, как хотелось бы, поскольку разрешение этих АЦП не так уж и велико. Где в игру вступают такие модули, как ADS1115.


      Arduino, например, имеет 10-битный АЦП, который может предоставить нам аналоговый выход в диапазоне от 0 до 1023. Использование АЦП с высоким разрешением, такого как 16-битный ADS1115, открывает возможности для считывания аналоговых данных с большим более высокая точность и масштаб до 65536 (приблизительно 65000). Это означает, что даже если входной сигнал имеет меньший уровень, его можно масштабировать в этом диапазоне и получить более точные и точные результаты.


      Модуль также имеет функцию PGA (усилитель с программируемым усилением), которая позволяет нам умножать очень маленькие значения аналогового сигнала на переменную и получать более высокое значение сигнала.

      Например, если необходимо прочитать небольшой сигнал около 1 мВ, теперь, если мы используем эту функцию, мы можем умножить входное значение 1 мВ на переменную и получить более высокое значение, которое может быть точно считано как выход.

       

      Функциональная блок-схема ADS1115 ADC

      Ниже представлена ​​функциональная блок-схема ADS1115.

      Аналоговые входы проходят через мультиплексор, который затем подается на усилитель с программируемым коэффициентом усиления для усиления входного сигнала. Усиленный сигнал передается на 16-разрядный АЦП, выходной сигнал которого передается на микроконтроллер через связь I2C.

       

      Интерфейсный модуль ADS1115 с MCU/MPU

      Подключить модуль АЦП ADS1115 к MCU/MPU очень просто. Как обсуждалось выше, модуль АЦП обменивается данными через связь I2C.

      SCL (последовательные часы) и SDA (последовательные данные) на модуле должны быть подключены к контактам SCL и SDA на MCU соответственно. 2 контакта для питания; VDD и земля, которые могут быть подключены к контакту 5 В и земле MCU соответственно. A0, A1, A2, A3 — четыре аналоговых входа, которые должны быть подключены к аналоговому источнику (потенциометр и т. д.).

      ADS1x15 Библиотека для Arduino:

      https://github.com/adafruit/adafruit_ads1x1

      Приложения ADS1115

      Вот и приложения ADS11113 9003 9003 9003 9003

      . Компаратор

    • Используется для систем контроля аккумуляторов
    •  

      2D-модель ADS1115

      Ниже представлена ​​вторая модель модуля АЦП ADS1115 с указанием его размеров в миллиметрах. Эти размеры можно использовать для создания пользовательских посадочных мест модуля для моделирования печатных плат и САПР.


      Датчик ADS1115 — ESPHome

      Компонент/концентратор

      Домен ads1115 создает глобальный концентратор, чтобы вы могли позже создать отдельные датчики с помощью сенсорной платформы ADS1115.

      Чтобы использовать этот концентратор, сначала настройте шину I²C и подключите датчик к указанным там контактам.

      ADS1115 16-разрядный АЦП.

       объявлений1115:
        - адрес: 0x48
       

      Переменные конфигурации:

      • адрес ( Требуется , целое число): i²c-адрес датчика. См. Адреса I²C для получения дополнительной информации.

      • Continuous_Mode ( Необязательный , логический): Установите, должен ли ADS1115 непрерывно измерять напряжение или измеряйте их только при вызове обновления. Включите это для интеграции датчика тока клещей ТТ. По умолчанию с .

      • id ( Необязательный , ID): вручную укажите идентификатор для этого концентратора ADS1115. Используйте это, если вы хотите использовать несколько концентраторов ADS1115 одновременно.

      I²C-адреса

      Чтобы разрешить подключение нескольких датчиков к одной и той же шине i²c, создатели этого сенсорного оборудования включили некоторые опции для изменить адрес i²c.

      • Если адресный контакт подключен к GND, адрес будет 0x48 (по умолчанию).

      • Если вывод адреса подтянут к VCC, адрес равен 0x49 .

      • Если контактный адрес привязан к SDA, адрес равен 0x4a .

      • Если вывод адреса привязан к SCL, адрес равен 0x4B .

      Датчик

      Датчик ads1115 позволяет использовать сигма-дельта АЦП ADS1115. датчики (техническое описание, Adafruit_ADS1115) или датчики сигма-дельта АЦП ADS1015 (техническое описание, Adafruit_ADS1015) с ESPHome. Сначала настройте концентратор ADS1115 для датчика ADS1115, а затем используйте его. сенсорная платформа для создания отдельных датчиков, которые будут сообщать напряжение на Home Assistant.

       объявлений1115:
        - адрес: 0x48
      датчик:
        - платформа: ads1115
          мультиплексор: «A0_GND»
          усиление: 6,144
          имя: "Канал ADS1115 A0-GND"
       

      Переменные конфигурации:

      • мультиплексор ( Требуется ): Канал мультиплексора этого датчика. Эффективно означает, между которыми вы хочу измерить напряжение.

      • усиление ( Требуется , с плавающей запятой): усиление этого датчика.

      • имя ( Требуется , строка): Имя для этого датчика.

      • ads1115_id ( Дополнительно , ID): вручную укажите идентификатор Концентратор ADS1115 вы хотите использовать этот датчик.

      • update_interval ( Дополнительно , Время): интервал чтобы проверить датчик. По умолчанию 60 с .

      • id ( Необязательный , ID): вручную укажите идентификатор, используемый для генерации кода.

      • разрешение ( Дополнительно , строка): разрешение этого датчика. По умолчанию 16 бит .

      • 16 бит

      • 12 бит

      Мультиплексор и усиление

      Примечание

      Согласно (техническое описание, Adafruit), раздел 7. 3, примечание 2: «На аналоговые входы устройства должно подаваться не более VDD + 0,3В». Это означает, что если вы питаете устройство напряжением 3,3 В, позаботьтесь о том, чтобы на 4 контакта AIN не подавалось напряжение более 3,6 В.

      ADS1115 имеет мультиплексор, который можно настроить для измерения напряжения между несколькими конфигурациями контактов. Это:

      • A0_A1 (между контактами 0 и 1)

      • A0_A3 (между контактами 0 и 3)

      • A1_A3 (между контактами 1 и 3)

      • A2_A3 (между контактами 2 и 3)

      • A0_GND (между контактом 0 и GND)

      • A1_GND (между контактом 1 и заземлением)

      • A2_GND (между контактом 2 и заземлением)

      • A3_GND (между контактом 3 и заземлением)

      Кроме того, ADS1115 имеет усилитель с программируемым усилением (PGA), который может помочь вам измерять напряжения в различных диапазонах, а именно: