24小時聯系電話:18217114652、13661815404
中文
技術專題
使用ADS1115
使用ADS1115
ADS1115是一款精密的16位ADC,具有四個多路復用輸入-您可以單獨使用每個輸入,也可以成對使用每個輸入進行差分測量。它具有內部校準的基準,可實現高精度。
這個ads1115教程向您展示如何設置庫來驅動芯片,以及如何使用不同的PGA增益設置獲取讀數。它還介紹了即使僅使用單電源供電的設備也能夠測量負電壓的方法。這使其可用作電流吸收器或電流源測量設備。
有關芯片的重要信息:
具有16位分辨率。
可以根據PGA設置檢測到0.187mV至7.8uV。
可以采樣8到860 SPS。
具有內部參考電壓。
具有內部PGA(可編程增益放大器)。
該設備的典型精度為0.01%(但最大精度為0.15%)。該精度包括所有誤差源(參考電壓,增益誤差,失調和噪聲)。
ADS1115接線板
ADS1115詳細信息
ADS1115規格
范圍 |
價值 |
電源電壓(V DD) |
2V0?5V5 |
絕對最大V DD |
-0.3V?7V0 |
測量范圍 |
-300mV?Vdd + 300mV |
界面 |
I2C |
I2C率 |
100kHz,400kHz,3.4MHz |
解析度 |
16位(±15位) |
數據速率 |
8?860 SPS |
多路輸入的數量 |
4 |
有功電流 |
?150uA(最大200uA) |
掉電電流 |
0.5uA(最大2uA) |
偏移誤差[1] |
±3 LSB |
積分非線性(INL)[1] |
1 LSB |
增益誤差[1],[2],@ 25°C |
0.01%(典型值)0.15%(最大) |
I2C地址(可選) |
0x48、0x49、0x4a,0x4b |
工作溫度 |
-40°C?125°C |
[1]
FSR±2.048V
[2]包括來自參考電壓和PGA的所有誤差。
ADS1115框圖
數據表中的圖片
ADS1115引腳排列
ADS1115精度
有趣的圖顯示了設備的真正功能,數據表中的圖19所示:
總誤差與輸入信號
注意系統的準確性如何包括所有錯誤源:
獲得錯誤,
差分輸入誤差
偏移誤差
和噪音。
ADS1115 I2C尋址
您可以使用四個地址之一來設置ADS1115,因此可以在單個I2C總線上放置4個ADS1115芯片:
0x48、0x49、0x4a,0x4b。
尋址控制是不常見的,因為您只需要使用一個輸入引腳作為地址控制引腳即可。
通常,您需要兩個輸入才能在4個地址之間切換,但是ADS1115 16位ADC使用的是巧妙的方案。對單個地址輸入進行連續采樣,如果將其連接到GND,VDD,SDA或SCL,則可以分別從0x48、0x49、0x4a和0x4b設置地址。
ADS1115省電
連續模式
在連續轉換模式下,ADS1115的靜態電流高達150uA。在這種模式下,您可以讓ADS1115在8Hz至860Hz之間采樣。
單發模式
ADS1115的默認模式是單次模式,該模式下器件喚醒,進行測量然后返回睡眠狀態。睡眠時,該芯片僅消耗0.5uA的典型電流。由于設備在上電時進入此模式,因此不會產生啟動電流的激增。
注意:命令界面在掉電模式下仍處于活動狀態,因此您仍然可以從芯片中獲取數據!
該芯片和模式非常適合需要精確度的電池供電設備。由于超小型封裝(X2QFN)的尺寸僅為2 mm x 1.5 mm x?0.4毫米
性能與噪聲之間的權衡
低速平均
如果以低速運行ADS1115,則內部采樣率不會降低,因為這是delta sigma轉換器通過過采樣操作的方式。內部振蕩器設置為1MHz,并降低至ADC時鐘的250kHz。
在活動模式下,將連續收集樣本。這些樣本在內部進行平均,從而改善了噪聲性能。這也節省了您的處理時間,即您不必在微控制器中執行平均。
因此,如果要獲得最佳的噪聲性能,請以8Hz(最低采樣率)運行采樣率。
低采樣率的唯一缺點是設備必須連續開啟,因此必須始終使用電源。如果您更關心節省功率,而又不太擔心噪聲性能,則可以實施突發模式操作。
高速Speed Burst模式
在微控制器的控制下,您可以實現突發模式以節省功耗。數據表建議您使用連續模式下使用功率的1/100。這樣您就可以平均使用1.5uA的電流。
這類似于焦耳小偷電路,在該電路中,存儲在電感器中的能量突發會在短時間內使LED產生脈沖。您可以獲得足夠的可用光,但平均功率降低了。
為了如上所述模擬8SPS速率,您將使ADS1115每125ms(1 / 125e-3 = 8)8 Hz拍攝一次單次信號(您可以通過微控制器代碼中的計時器設置此重復率)。
您還可以將ADS1115的SPS速率設置為860Hz,以獲得高速捕獲。當然,您可以將兩次捕獲之間的時間間隔更改為每秒或每小時,以進一步節省電量。
ADS1115處于低電流模式時,單次讀數僅需花費1.2ms的時間,剩下的時間就不存在了。這是ad1115轉換延遲,并在數據表中進行了說明。
注意: ADS1115大約需要25us上電-很好!
使用ALERT / READY引腳
ALERT / Ready引腳有兩種用途。第一個是“比較器閾值”警報(默認模式)。第二個是“ ADC讀取準備就緒”警報。您必須設置一些寄存器以操作ADC就緒ALERT模式。
閾值檢測
ADS1115有一個內部比較器,可將信號輸出到ALERT引腳(默認模式)。您可以使用此功能自動檢測超出范圍的條件(由閾值寄存器設置)。COMP_QUE寄存器允許您指定斷言警報之前有多少轉換超出上限或下限。
ALERT引腳為開漏引腳,因此需要上拉電阻。
比較器有兩個閾值(高和低)。當輸入信號在閾值之間時,ALERT信號設置為高電平(窗口比較器模式)。您可以使用COMP_POL反轉Alert輸出信號。
ADC就緒中斷信號
該引腳的另一種用途是用作ADC就緒信號。如果將引腳設置為ADC就緒信號,則可以將其饋入微控制器上的外部中斷引腳,以便獲取ADC讀數。
檢測ADC是否已完成的另一種方法是讀取寄存器值(配置寄存器位15),但是由于要進行I2C事務,因此這當然會花費更多的時間。
注意:轉換就緒信號是一個8us寬(高)脈沖,表示轉換在下降沿可用。
要將芯片設置為轉換就緒模式,請設置以下寄存器:
將高閾值寄存器的MSB設置為1
[例如,Hi_thresh = 0x8000]。
將低閾值寄存器的MSB設置為0
[例如,Lo_thresh = 0x0000]。
將比較器隊列控制位設置為00(0x11以外的任何值)
[例如COMP_QUE [1:0] = 0]。
配置寄存器&=配置寄存器0x0003; //清除b0,b1。
輸入多路復用器
您可以使用輸入多路復用器在4個單端輸入0?FSR或兩個差分輸入±FSR之間選擇。但是,還有另一種MUX模式,該模式使用AIN3作為AIN0,AIN1和AIN2的參考作為該參考的差分輸入。
您可以在下圖的左側看到MUX:
從圖中還不清楚,但是MUX具有3種模式:
輸入信號參考地(所有4個輸入都是可選的)
AIN0(+)?GND(-),
AIN1(+)?GND(-),
AIN2(+) ?GND(-)。
AIN3(+)?GND(-)。
兩個差分輸入:
AIN0(+)?AIN1(-),
AIN2(+)?AIN3(-)。
三個參考輸入:
AIN0(+)?AIN3(-),
AIN1(+)?AIN3(-),
AIN2(+)?AIN3(-)。
請參見數據表“配置寄存器”以控制此操作。
PGA增益設定
ADS1115中的增益設置寄存器確實具有標準值,例如x2 x4等(除了最大的2/3值),更容易想到滿量程讀數的分辨率和量程功能。數據表的排列方式是這樣的-因為該器件使用內部固定的基準電壓源。
您只需要選擇接近所測信號的最佳范圍即可(或在前面添加一個放大器來設置范圍)。
您不能像其他ADC一樣通過添加外部基準電壓來更改FSR值。范圍和分辨率如下表所示。
滿量程FSR |
重塑(1 LSB) |
±6411毫伏 |
187.5uV |
±4096毫伏 |
125uV的 |
±2048毫伏 |
62.5微伏 |
±1024毫伏 |
31.25uV |
±512毫伏 |
15.625uV |
±256毫伏 |
7.8125微伏 |
滿量程分辨率
盡管ADS1115具有16位分辨率,但它使用二進制補碼來表示一個值(MSB表示符號位)。這實際上是一個15位分辨率的ADC,能夠進行負電壓和正電壓測量(在GND至V DD的電源范圍內!
這樣,從GND到正滿量程電壓的輸入信號就具有15位的分辨率,而從GND到負滿量程電壓的分辨率則為15位。但是,ADS1115只能測量低于地面的-300mV。
當使用差分模式和電平轉換運算放大器將輸入信號移至GDN至V DD范圍內時,才真正使用±15bit分辨率。有一個例外:
要獲得±FSR,您可以使用256mV范圍,或使用輸入運算放大器來對輸入進行電平轉換和縮放,或者使用差分輸入)?;蛘撸瑢⒁粋€輸入用作其他兩個輸入的參考。
注意:從上表中可以看到,15位分辨率仍然是非常準確的分辨率。
如上所述,可測量的輸入電壓下降到負300mV。
在最低PGA增益值下,您可以使用器件的滿量程分辨率(±256mV),這也適合ADS1115的-300mV測量能力。
因此,即使僅使用單個電源芯片,您也可以制造一種能夠測量灌電流和灌電流的電流測量設備。為此,您將使用合適的測量電阻器并對其進行差分測量。負電壓能力測試結果在這里。
選擇較高的PGA增益仍然可以讓您以較低的分辨率測量負值。
關于PGA設置的注意事項
可編程增益設置寄存器(PGA)允許8個值,但最后3個值均提供相同的增益,因此對于PGA值為5、6和7的FSR為256mV。
因此,共有6種可用設置,允許FSR分別為±6.144V,±4.096V,±2.048V,±1.024V,±0.512V,±0.256V。
輸入電壓范圍
絕對最大電壓輸入為:
-0.3V?7V
測量電壓范圍是:
GND-0.3V?VDD + 0.3V。
請記住,測量范圍是固定的,因此最大可測量輸入電壓為±6.144V。
測試負電壓輸入
我曾是 不確定是否可以測量負電壓,尤其是使用ADS1115的單電源供電時。數據表確實表明它能夠在-256mV的范圍內進行測量,并且在-300mV以上的電壓下不會爆炸。
事實證明這是對的,因為我通過將-5V電源小心地連接到10k電位計并調整抽頭(確保其不低于-300mV)來測試輸入,其值是-100mV,-260mV
這是-260mV輸入的結果:
A1:-260.437mV PGA:6144 mv acc:187.5uV
A1:-260.375mV PGA:4096 mv acc:125uV
A1:-260.375mV PGA:2048 mv acc:62.5uV
A1:-259.969mV PGA:1024 mv acc:31.25uV
A1:-259.234mV PGA:512 mv acc:15.625uV
A1:-256.016mV PGA:256 mv acc:7.8125uV
警報/ RDY 0
這是-100mV(大約)輸入的結果:
A1:-104.625mV PGA:6144 mv acc:187.5uV
A1:-104.500mV PGA:4096 mv acc:125uV
A1:-104.500mV PGA:2048 mv acc:62.5uV
A1:-104.531mV PGA:1024 mv acc:31.25uV
A1:-104.484mV PGA:512 mv acc:15.625uV
A1:-104.499mV PGA:256 mv acc:7.8125uV
警報/ RDY 0
對于-260mV測量,您可以看到256mV的FSR達到了滿量程,這是您所期望的-這是針對256mV的PGA增益設置(因為260mV高于256mV的量程能力)。
您還可以看到,對于所有PGA增益,都正確測量了-100mV讀數。
因此,這證實了ADS1115無需單獨的電源即可讀取低至-256mV最小測量能力的負電壓。
注意:此輸出的ADS1115 arduino代碼可在頁面的下方找到。
ADS1115 ADC FSR
正輸出的滿量程值為:
0x7FFF
負輸出的滿量程值為:
0x8000
ADC的正值是0x0001,負值是0xFFFF(負2是0xFFFE)。
警告:對于單端測量,在測量0V時,由于器件失調,您仍然會獲得負ADC值。
差速器怎么處理?
一種 差分測量使用兩個輸入,一個用于低端,一個用于高端電壓,因此您可以測量電路中任何一點的電壓差。正常的單端測量(Ardiuno ADC)只能測量參考到地的電壓。
您可以具有一組差分輸入或一組差分輸入(如下所示):
兩個差分輸入:
AIN0(+)?AIN1(-),
AIN2(+)?AIN3(-)。
其他配置在這里。
通常,您需要跨小而準確的電阻進行測量以確定電流。ADS1115可以測量正負電壓。
差分測量是通過使用設備內的差分放大器(運算放大器)實現的瞬時測量。此測量的最大優勢在于,由于跨被測元件的噪聲信號相同,因此消除了共模噪聲誤差。因此,噪聲被減去。
使用差分測量的另一個原因是,您可能希望測量未參考到地的電壓,例如,電流檢測電阻器未在一側接地,而是在電路中的其他位置。這就是所謂的高端測量,即兩個測量電壓都遠不接近零。
軟件
Arduino IDE:版本1.8.9+
I2Cdev庫
I2Cdevlib具有ADS1115庫代碼以及許多其他設備的代碼。
該庫具有很多功能,受支持的芯片,并且可以在多個處理器上運行,但是安裝涉及更多一點,因此您不能使用自動Arduino zip文件安裝程序。
ADS1115 Arduino庫
解壓縮文件(ic2devlib-master),然后導航到ic2devlib-master中的Arduino目錄。將目錄ADS1115和I2Cdev復制到Arduino庫目錄(通常在Windows上):
C:\ Users \ <用戶名> \ Documents \ Arduino \ libraries
庫代碼警告
256mV范圍的常數已設置為四舍五入的值。
導航至ADC1115.h并更改以下行:
#define ADS1115_MV_0P256
0.007813
#define ADS1115_MV_0P256B 0.007813
#define ADS1115_MV_0P256C 0.007813
至
#define ADS1115_MV_0P256
0.0078125
#define ADS1115_MV_0P256B 0.0078125
#define ADS1115_MV_0P256C 0.0078125
硬件
組件
Arduino Uno R3。
ADS1115轉接板。
連接線。
100nF電容器。
1萬鍋。
連接數
為了進行測試,請使用Arduino Uno并按如下所示進行連接:
Arduino的 |
ADS1115 |
5伏 |
VDD |
地線 |
地線 |
A5 |
SCL |
A4 |
SDA |
地線 |
地址 |
2個 |
警報 |
10k鍋的雨刷器。 |
A1 |
注意:將10k電位器的兩端連接到5V和GND。
在5V和GND之間連接100nF電容器。
ADS1115面包板布局
使用ADS1115的Arduino示例
草圖示例1
您可以使用以下程序通過輪詢來測試ADS1115:
要查看注冊狀態信息,請對ads1115.h進行編輯,以通過取消注釋以下行來允許調試輸出:
//#define ADS1115_SERIAL_DEBUG
在串行監視器中鍵入字母s以查看寄存器狀態。
注意:我更改了pollAlertReadyPin()代碼,以便在失敗時重新初始化ads1115。打開和關閉PC時,將重置寄存器,并將隊列寄存器設置為11:禁用警報就緒引腳?,F在,如果發生此錯誤,則芯片將正確重啟。
復制草圖
// I2C設備類(I2Cdev)演示ADS1115類的Arduino草圖
//讀取
ADS1115的兩個差分輸入并以mV表示值的示例// // Eadf(2016-03-22)
//
//變更日志:
// 初始版本
//
//修改了JFM,以重新初始化和輸出多個PGA分辨率,以便
//比較讀數。同樣,當調試處于活動狀態時,串行接收's'
//輸出寄存器值。