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