ZHCAEH2A October 2019 – September 2024 ADS1015 , ADS1115 , TLA2024
| 輸入測量 | ADC 輸入 | 數字輸出 ADS1115 |
|---|---|---|
| PGA[2:0] = 000,FSR = ±6.144V | 0V 至 5V | 0 至 26667 0000h 至 682Bh |
| VDD | GND | |
|---|---|---|
| 5V | 0V | |
許多應用要求在盡可能小的空間內進行大量測量。該電路介紹了一個 16 通道測量系統,該系統使用四個具有 I2C 接口的超小型 ADS1115 器件。這些器件具有精確的內部電壓基準,并可針對多個輸入范圍進行編程,用作 15 位單端模數轉換器 (ADC)。系統中的 ADC 高度可配置,可針對不同的數據速率和電壓范圍進行配置,甚至可用于警報功能。此外,輸入可成對配置,從而構成一個具有差分輸入測量的 8 通道測量系統。ADS1115 器件采用超小型 1.5mm × 2.0mm X2QFN 封裝,在電路板上占用的空間非常小。該電路可用于 PLC 模擬輸入模塊、服務器板上的電源管理和各種通用測量等應用。

此電路使用四個多路復用的 ADS1115 ADC 來測量十六個不同的通道。為此,這四個器件必須使用不同的 I2C 地址,這些地址通過連接到每個器件的 ADDR 引腳來設置。ADDR 引腳連接到四個節點之一,以響應不同的從器件地址,如下表所示。
| ADDR 引腳連接 | 從器件地址 | |
|---|---|---|
| GND | 1001000 | |
| VDD | 1001001 | |
| SDA | 1001010 | |
| SCL | 1001011 | |
ADS1115 器件具有一個多路復用器,用于測量多個通道。在此設計中,系統會循環使用每個器件的每個模擬輸入。雖然可以進行差分測量,但圖中顯示,該系統通過循環使用所有模擬輸入來對 GND 節點進行單端測量。
可通過下表所示的配置寄存器來配置器件。在配置寄存器中,MUX[2:0] 為 ADC 選擇 AINP 和 AINN 節點,并設置每個器件的輸入通道。表中的設置展示了單端測量的設置。如 ADS111x 具有內部基準、振蕩器和可編程比較器且兼容 I2C 的超小型、低功耗、860SPS、16 位 ADC 數據表所示,可以使用 MUX[2:0] = 000 至 011 設置來進行差分測量。
| 輸入測量 | ADC 輸入 | 器件輸入選擇 |
|---|---|---|
| 通道 1 | MUX[2:0] = 100 | AINP = AIN0,AINN = GND |
| 通道 2 | MUX[2:0] = 101 | AINP = AIN1,AINN = GND |
| 通道 3 | MUX[2:0] = 110 | AINP = AIN2,AINN = GND |
| 通道 4 | MUX[2:0] = 111 | AINP = AIN3,AINN = GND |
循環使用器件的全部四個通道后,系統會選擇下一個器件并重復該循環。
ADS1115 ADC 具有用于精確測量的內部基準和可擴展的測量增益。在本電路文檔中,所示的測量值均為單端測量,負模擬輸入接地。由于 ADS1115 器件是用于差分測量的 16 位 ADC,因此單端測量只有 15 位分辨率。
該 ADC 可設置為 FSR(滿標量程)的 6 種設置之一。這相當于在 ADC 前端安裝了一個可編程增益放大器。配置寄存器的 FSR[2:0] 位的設置范圍為 ±0.256V 至 ±6.144V。用于單端測量時,輸入范圍為 0V 至 0.256V 到 0V 至正 FSR 值。如前所述,即使 FSR 設置為大于 VDD 的電壓,ADC 模擬輸入的工作范圍也介于地和 VDD 之間。例如,當 FSR 設置為 ±6.144V 且 VDD 設置為 5V 時,模擬輸入限制為 0V 至 5V。
FSR 設置允許進行各種不同的測量,從溫度傳感器或電流采樣電阻等小電壓測量,到無需分壓器即可測量自身電源的較大電壓測量 ADC。
下表顯示了 ADS1115 FSR 的設置。
可根據器件內部振蕩器將 ADS1115 器件配置為八種數據速率之一。此數據速率具有 ±10% 的容差。數據速率由 DR[2:0] 位設置,如下表所示。
| 數據速率設置 | 數據速率 |
|---|---|
| DR[2:0] = 000 | 8SPS |
| DR[2:0] = 001 | 16SPS |
| DR[2:0] = 010 | 32SPS |
| DR[2:0] = 011 | 64SPS |
| DR[2:0] = 100 | 128SPS |
| DR[2:0] = 101 | 250SPS |
| DR[2:0] = 110 | 475SPS |
| DR[2:0] = 111 | 860SPS |
所選數據速率為 128SPS,這是 ADS1115 器件的默認設置。該數據速率是可用的最快速率,對于所有 FSR 設置,可提供優于一個 LSB 的噪聲性能。
配置寄存器會設置 ADC 的操作模式和配置。配置包括前面各節中描述的所有設置。在 16 個位之間使用九個字段來配置器件。下表顯示了配置寄存器字段描述以及位名稱和位置、讀寫用法和復位值。
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
|---|---|---|---|---|---|---|---|
| OS | MUX[2:0] | PGA[2:0] | 模式 | ||||
| R/W-1h | R/W-0h | R/W-2h | R/W-1h | ||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DR[2:0] | COMP_MODE | COMP_POL | COMP_LAT | COMP_QUE | |||
| R/W-4h | R/W-0h | R/W-0h | R/W-0h | R/W-3h | |||
OS 會設置操作狀態并啟動單次轉換。MUX[2:0] 位將輸入多路復用器設置為循環執行不同的測量。MODE 位會將器件設置為單次轉換模式。DR[2:0] 位會設置器件的數據速率。其余字段用于本設計中未使用的 ADC 比較器設置。有關配置寄存器的更多詳細信息,請參閱 ADS111x 具有內部基準、振蕩器和可編程比較器且兼容 I2C 的超小型、低功耗、860SPS、16 位 ADC 數據表。
例如,一個 ADC 設置為使用連接到 VDD 的 AIN0 測量其自身的接地電源。FSR 設為 ±6.144V,數據速率為 128SPS。配置寄存器字段的設置如下表所示。
| 位 | 字段 | 設置 | 說明 |
|---|---|---|---|
| 15 | OS | 1 | 開始轉換 |
| 14:12 | MUX[2:0] | 100 | 單端輸入測量,AINP-AINN = AIN0-GND,選擇第一通道 |
| 11:9 | PGA[2:0] | 000 | FSR = ±6.144V,將 ADC 設置為能夠測量 0V 至 VDD 的整個電源電壓范圍 |
| 9 | 模式 | 1 | 單次轉換模式下的運行 |
| 7:5 | DR[2:0] | 100 | 數據速率 = 128SPS |
| 4 | COMP_MODE | 0 | 傳統比較器 |
| 3 | COMP_POL | 0 | 低電平有效 |
| 2 | COMP_LAT | 0 | 非鎖存比較器 |
| 1:0 | COMP_QUE[1:0] | 11 | 比較器已禁用 |
結合字段描述中的這些位,配置寄存器值為 1100 0001 1000 0011 或 C183h。
若要循環使用該系統的每個通道,需逐一啟動每個通道的轉換過程,等待轉換完成,然后讀回數據。然后,開始下個通道的轉換過程。在移動到下一個 ADC 之前,對四個單端輸入通道重復每次測量。對系統中的所有四個 ADC 重復此序列,即可循環使用所有通道。
寫入配置寄存器會啟動轉換并將 ADC 配置為正確的運行模式。通信從寫入器件的 I2C 從器件地址開始。I2C 寫入后跟三個字節。第一個字節是 01h,用以指示配置寄存器。接下來的兩個字節是寫入配置寄存器的數據。
對器件配置寄存器的寫入從對所選 I2C 地址 (1001000) 的寫入開始。下一個字節是地址指針,指示配置寄存器 01h。寫入操作通過將兩個字節的數據寫入配置寄存器來完成。四個字節的完整通信如下表所示。
| I2C 地址: 1001000 寫入 |
地址指針: 配置寄存器 |
配置 MSB:開始轉換、設置輸入、FSR、單次轉換模式 | 配置 LSB:128SPS, 比較器已禁用 |
|---|---|---|---|
| 1001 0000 | 0000 0001 | 1100 0001 | 1000 0011 |
然后,主器件等待轉換完成。在本示例中,ADS1115 器件設置為默認數據速率 128SPS。該器件使用內部振蕩器,因此數據速率存在一些變化。為確認在 ADC 完成轉換后讀取器件,微控制器會等待轉換完成所需的最長時間。該等待時間是標稱數據周期加上 10%(用以補償器件的內部振蕩器變化)。對于每個單次轉換,ADC 喚醒時間都額外增加 20μs。使用以下公式計算總等待時間。
例如,如果器件以 128SPS 運行,則標稱數據周期為 7.82ms。所需的等待時間為:
讀取器件從寫入轉換寄存器 (00h) 的寄存器指針開始,然后從同一 I2C 地址再次讀取兩個字節。五個字節的完整通信如下表所示。
| I2C 地址: 1001000 寫入 |
地址指針: 配置寄存器 |
I2C 地址: 1001000 讀取 |
讀取轉換數據 MSB | 讀取轉換數據 LSB |
|---|---|---|---|---|
| 1001 0000 | 0000 0000 | 1001 0001 | xxxx xxxx | xxxx xxxx |
輸入電壓的轉換基于 ADC 的滿標量程 (FSR) 設置。FSR 由配置寄存器中的 PGA[2:0] 位進行設置。
即使 ADC 用于單端測量,ADS1115 器件也是差分 ADC。如果 ADC 具有負偏移,并且 ADC 在輸入通道上測得 0V,則 ADC 會報告一個負數。用二進制補碼表示法報告負讀數。例如,十進制 –1 在轉換寄存器中報告為 FFFFh。
如前所述,16 位 ADS1115 器件替換為 12 位 ADS1015 ADC 或 TLA2024 ADC。對于這些器件,數據格式為 12 位,右側填充了四位零。滿標量程讀數為 7FFh,而從轉換寄存器中讀取時為 7FF0h。
下面顯示了偽代碼序列以及從四個器件的每個通道設置轉換并在每次轉換后收集數據所需的步驟。它還包括連接到 ADC 的微控制器的設置。
對于每個通道,微控制器同時設置 ADC 配置并啟動轉換。微控制器會等待轉換完成,等待足夠的時間以完成轉換以及內部振蕩器頻率的任何變化。然后從轉換寄存器中讀取數據。繼續循環使用每個器件的每個通道。該設置假設采用之前的配置,轉換等待時間的數據速率設置為 128SPS。
Configure microcontroller for I2C mode
Loop
{
Conversions from four channels of device 1:
{
Write I2C addr 1001000, send 0x01 0xC1 0x83; // start conversion for device 1, AIN0-GND
Wait 8.62ms
Write I2C addr 1001000, send 0x00, read I2C addr 1001000, read two bytes; // Read conversion
Write I2C addr 1001000, send 0x01 0xD1 0x83; // start conversion for device 1, AIN1-GND
Wait 8.62ms
Write I2C addr 1001000, send 0x00, read I2C addr 1001000, read two bytes; // Read conversion
Write I2C addr 1001000, send 0x01 0xE1 0x83; // start conversion for device 1, AIN2-GND
Wait 8.62ms
Write I2C addr 1001000, send 0x00, read I2C addr 1001000, read two bytes; // Read conversion
Write I2C addr 1001000, send 0x01 0xF1 0x83; // start conversion for device 1, AIN3-GND
Wait 8.62ms
Write I2C addr 1001000, send 0x00, read I2C addr 1001000, read two bytes; // Read conversion
}
Conversions from four channels of device 2:
{
Write I2C addr 1001001, send 0x01 0xC1 0x83; // start conversion for device 2, AIN0-GND
Wait 8.62ms
Write I2C addr 1001001, send 0x00, read I2C addr 1001001, read two bytes; // Read conversion
Write I2C addr 1001001, send 0x01 0xD1 0x83; // start conversion for device 2, AIN1-GND
Wait 8.62ms
Write I2C addr 1001001, send 0x00, read I2C addr 1001001, read two bytes; // Read conversion
Write I2C addr 1001001, send 0x01 0xE1 0x83; // start conversion for device 2, AIN2-GND
Wait 8.62ms
Write I2C addr 1001001, send 0x00, read I2C addr 1001001, read two bytes; // Read conversion
Write I2C addr 1001001, send 0x01 0xF1 0x83; // start conversion for device 2, AIN3-GND
Wait 8.62ms
Write I2C addr 1001001, send 0x00, read I2C addr 1001001, read two bytes; // Read conversion
}
Conversions from four channels of device 3:
{
Write I2C addr 1001010, send 0x01 0xC1 0x83; // start conversion for device 3, AIN0-GND
Wait 8.62ms
Write I2C addr 1001010, send 0x00, read I2C addr 1001010, read two bytes; // Read conversion
Write I2C addr 1001010, send 0x01 0xD1 0x83; // start conversion for device 3, AIN1-GND
Wait 8.62ms
Write I2C addr 1001010, send 0x00, read I2C addr 1001010, read two bytes; // Read conversion
Write I2C addr 1001010, send 0x01 0xE1 0x83; // start conversion for device 3, AIN2-GND
Wait 8.62ms
Write I2C addr 1001010, send 0x00, read I2C addr 1001010, read two bytes; // Read conversion
Write I2C addr 1001010, send 0x01 0xF1 0x83; // start conversion for device 3, AIN3-GND
Wait 8.62ms
Write I2C addr 1001010, send 0x00, read I2C addr 1001010, read two bytes; // Read conversion
}
Conversions from four channels of device 4:
{
Write I2C addr 1001011, send 0x01 0xC1 0x83; // start conversion for device 4, AIN0-GND
Wait 8.62ms
Write I2C addr 1001011, send 0x00, read I2C addr 1001011, read two bytes; // Read conversion
Write I2C addr 1001011, send 0x01 0xD1 0x83; // start conversion for device 4, AIN1-GND
Wait 8.62ms
Write I2C addr 1001011, send 0x00, read I2C addr 1001011, read two bytes; // Read conversion
Write I2C addr 1001011, send 0x01 0xE1 0x83; // start conversion for device 4, AIN2-GND
Wait 8.62ms
Write I2C addr 1001011, send 0x00, read I2C addr 1001011, read two bytes; // Read conversion
Write I2C addr 1001011, send 0x01 0xF1 0x83; // start conversion for device 4, AIN3-GND
Wait 8.62ms
Write I2C addr 1001011, send 0x00, read I2C addr 1001011, read two bytes; // Read conversion
}
}
該器件通過寫入配置寄存器來開始轉換。這需要一個四字節的事務。字節 1 是地址寫入,后跟一個字節的配置寄存器指針和兩個字節的配置數據。
當器件讀取轉換時,需要一個五字節的事務。字節 1 是寫入器件的地址,后跟字節 2 中的轉換寄存器指針。字節 3 是從轉換寄存器讀取的地址,后跟兩個字節的 ADC 數據。
| 器件 | 輸入通道 | 命令 | 字節 1 | 字節 2 | 字節 3 | 字節 4 | 字節 5 |
|---|---|---|---|---|---|---|---|
| 器件 1 | 通道 1 AIN0 至 GND |
開始轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1100 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– |
| 讀取轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0001 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 2 AIN1 至 GND |
開始轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1101 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0001 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 3 AIN2 至 GND |
開始轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1110 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0001 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 4 AIN3 至 GND |
開始轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1111 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0000 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0001 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 器件 2 | 通道 5 AIN0 至 GND |
開始轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1100 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– |
| 讀取轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0011 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 6 AIN1 至 GND |
開始轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1101 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0011 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 7 AIN2 至 GND |
開始轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1110 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0011 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 8 AIN3 至 GND |
開始轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1111 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0010 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0011 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 器件 3 | 通道 9 AIN0 至 GND |
開始轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1100 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– |
| 讀取轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0101 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 10 AIN1 至 GND |
開始轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1101 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0101 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 11 AIN2 至 GND |
開始轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1110 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0101 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 12 AIN3 至 GND |
開始轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1111 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0100 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0101 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 器件 4 | 通道 13 AIN0 至 GND |
開始轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1100 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– |
| 讀取轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0111 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 14 AIN1 至 GND |
開始轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1101 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0111 (I2C 地址,讀?。?/td> | <數據 MSB> | <數據 LSB> | ||
| 通道 15 AIN2 至 GND |
開始轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1110 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0111 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> | ||
| 通道 16 AIN3 至 GND |
開始轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0001 (指向配置寄存器的指針) |
1111 0001 (配置寄存器 MSB) |
1000 0011 (配置寄存器 LSB) |
– | |
| 讀取轉換 | 1001 0110 (I2C 地址,寫入) |
0000 0000 (指向轉換寄存器的指針) |
1001 0111 (I2C 地址,讀取) |
<數據 MSB> | <數據 LSB> |
下面顯示了四個 ADS1115 器件之一的示例布局。使用 0402 電阻器和電容器添加 RC 輸入濾波。生成的布局約為 260mil × 340mil。此測量未考慮 I2C 上拉電阻器或 ALERT/RDY 上拉電阻器。每個系統都需要一套此類電阻器。
示例布局| 器件 | 主要特性 | 鏈接 | 其他可能的器件 |
|---|---|---|---|
| ADS1115 | ADS111x 具有內部基準、振蕩器和可編程比較器且兼容 I2C 的超小型、低功耗、860SPS、16 位 ADC | 具有 PGA、振蕩器、VREF、比較器和 I2C 的 16 位、860SPS、4 通道 Δ-Σ ADC | 精密 ADC |