一、ADS1115簡(jiǎn)介
ADS1115是高精度模數(shù)轉(zhuǎn)換器(adc),具有16位分辨率。數(shù)據(jù)通過(guò)兼容lIC的串行接口傳輸,可以選擇四個(gè)IIC從地址,ads1115單電源工作范圍為2.0V至5.5V。ADS1115可以以每秒860個(gè)采樣的速率執(zhí)行轉(zhuǎn)換。ADS1115上提供板載PGA,提供從電源到低至±256mV的輸入范圍,允許大小信號(hào)都具有輸入多路復(fù)用器(MUX),提供兩個(gè)差分或四個(gè)單端輸入。

二、引腳功能

| ADDR | IIC地址選擇 |
|---|---|
| ALERT/RDY | 比較器輸出高低或轉(zhuǎn)換就緒 |
| GND | 電源地 |
| AIN0-AIN3 | 模擬量輸入 |
| VDD | 電源正 |
| SDA | IIC時(shí)鐘線 |
| SCL | IIC數(shù)據(jù)線 |
ADS1115引腳ADDR用于設(shè)置器件的IIC地址, 該引腳可以連接到GND、VDD、SDA、SCL,從而選擇四個(gè)不同的IIC地址。本文使用的模塊ADDR引腳接在GND上,故從機(jī)地址為0x90/0x91。
三、功能介紹
1.MULTIPLEXER
ADS1115包含一個(gè)輸入多路復(fù)用器,可以測(cè)量四個(gè)單端或兩個(gè)差分信號(hào)。另外,AIN0和AlN1與AIN3的測(cè)量值可能存在差異。多路復(fù)用器由配置寄存器中的3位配置。當(dāng)測(cè)量單端信號(hào)時(shí),ADC的負(fù)輸入通過(guò)多路復(fù)用器內(nèi)的開關(guān)連接到GND。
2.量程
量程由配置寄存器 PGA[2:0]位控制
3.數(shù)字比較器
ADS1115和ADS1114具有一個(gè)可編程的數(shù)字比較器,ALERT/RDY引腳可以發(fā)出警報(bào)。Config寄存器中的COMP_MODE位將比較器配置為傳統(tǒng)比較器或窗口比較器。在傳統(tǒng)的比較器模式中,當(dāng)轉(zhuǎn)換數(shù)據(jù)超過(guò)高閾值寄存器(Hi_thresh)中設(shè)置的限制時(shí),ALERT/RDY引腳置為有效(默認(rèn)情況下激活低電平)。然后,只有當(dāng)轉(zhuǎn)換數(shù)據(jù)低于低閾值寄存器(Lo_thresh)中設(shè)置的限制時(shí),比較器才會(huì)解除操作。在窗口比較器模式下,當(dāng)轉(zhuǎn)換數(shù)據(jù)超過(guò)Hi_thresh寄存器值或低于Lo_thresh寄存器值時(shí),ALERT/RDY引腳會(huì)斷言。在窗口模式或傳統(tǒng)比較器模式中,比較器都可以配置為在Config寄存器中的COMP_LAT位斷言之后鎖存。這種設(shè)置使引腳電平保持不變,即使輸入信號(hào)沒(méi)有超出閾值寄存器的界限。這個(gè)鎖存引腳電平只能通過(guò)發(fā)出SMBus警報(bào)響應(yīng)或讀取轉(zhuǎn)換寄存器來(lái)清除。ALERT/RDY引腳可以通過(guò)配置寄存器中的COMP_POL位配置為高電平或低電平。比較器還可以配置為僅在一組連續(xù)讀數(shù)超過(guò)閾值寄存器(Hi_thresh和Lo_thresh)中設(shè)置的閾值后才激活A(yù)LERT/RDY引腳。Config寄存器中的COMP_QUE[1:0]位配置比較器在激活A(yù)LERT/RDY引腳之前等待超過(guò)閾值的一個(gè)、兩個(gè)或四個(gè)讀數(shù)。COMP_QUE[1:0]位也可以禁用比較器功能,并將ALERT/RDY引腳置于高狀態(tài)
提示:本次實(shí)驗(yàn)沒(méi)有使用比較器,比較器的相關(guān)配置參考配置寄存器的低五位
4.寄存器寫入或讀取時(shí)序
為了從ADS111x訪問(wèn)一個(gè)特定的寄存器,主機(jī)必須首先寫一個(gè)合適的值到地址指針寄存器中的地址指針位P[1:0]。地址指針寄存器被直接寫入到從地址字節(jié)、低R / W位和成功的從機(jī)確認(rèn)之后。寫入地址指針寄存器后,從機(jī)應(yīng)答,而主機(jī)發(fā)出STOP或重復(fù)的START條件。當(dāng)從ADS111x讀取時(shí),先前寫入位P[1:0]的值決定了要讀取的寄存器。要改變讀哪個(gè)寄存器,必須向P[1:0]寫入一個(gè)新值。為了寫一個(gè)新值到P[1:0],主機(jī)發(fā)出一個(gè)低R/W位的從地址字節(jié),后面跟著地址指針寄存器字節(jié)。不需要傳輸額外的數(shù)據(jù),主機(jī)可以發(fā)出STOP條件。主服務(wù)器現(xiàn)在可以發(fā)出START條件,并發(fā)送R/W位高的從服務(wù)器地址字節(jié)開始讀取。

5.數(shù)據(jù)格式
ADS111x提供16位二進(jìn)制補(bǔ)碼格式的數(shù)據(jù)。正滿量程(+FS)輸入產(chǎn)生7FFFh的輸出代碼,負(fù)滿量程(-FS)輸入產(chǎn)生8000h的輸出代碼。對(duì)于超過(guò)滿量程的信號(hào),輸出在這些代碼處進(jìn)行處理。下圖總結(jié)了不同輸入信號(hào)的理想輸出碼與顯示了代碼轉(zhuǎn)換與輸入電壓的關(guān)系。
四、寄存器介紹
1.地址指針寄存器
ADS1115所有四個(gè)寄存器都是通過(guò)寫入地址指針寄存器來(lái)訪問(wèn)的

2.轉(zhuǎn)化數(shù)據(jù)存放寄存器
16位轉(zhuǎn)換寄存器以二進(jìn)制二進(jìn)制的補(bǔ)碼格式包含最后一次轉(zhuǎn)換的結(jié)果。上電后,轉(zhuǎn)換寄存器被清除為0,并保持0,直到第一次轉(zhuǎn)換完成
3.配置寄存器
16位配置寄存器用于控制操作模式、輸入選擇、數(shù)據(jù)速率、滿量程范圍和比較器模式。
| Bit | 字段 | 類型 | 復(fù)位值 | 描述 |
|---|---|---|---|---|
| 15 | OS | R/W | 1h | 運(yùn)行狀態(tài)或單次轉(zhuǎn)換啟動(dòng)該位決定設(shè)備的運(yùn)行狀態(tài)。 操作系統(tǒng)只能在下電狀態(tài)下寫入,在轉(zhuǎn)換過(guò)程中沒(méi)有作用。寫入:0:沒(méi)有效果1:啟動(dòng)單次轉(zhuǎn)換(在斷電狀態(tài)下)讀時(shí):0:設(shè)備當(dāng)前正在執(zhí)行轉(zhuǎn)換1:設(shè)備當(dāng)前未執(zhí)行轉(zhuǎn)換 |
| 14:12 | MUX[2:0] | R/W | 0h | 輸入多路復(fù)用配置000 : AINP = AIN0 and AINN = AIN1 (default) 001 : AINP = AIN0 and AINN = AIN3010 : AINP = AIN1 and AINN = AIN3 011 : AINP = AIN2 and AINN = AIN3100 : AINP = AIN0 and AINN = GND 101 : AINP = AIN1 and AINN = GND110 : AINP = AIN2 and AINN = GND 111 : AINP = AIN3 and AINN = GND |
| 11:9 | PGA[2:0] | R/W | 2h | 可編程增益放大器配置 這些位設(shè)置可編程增益放大器的FSR 000 : FSR = ±6.144 V001 : FSR = ±4.096 V010 : FSR = ±2.048 V (default)011 : FSR = ±1.024 V100 : FSR = ±0.512 V101 : FSR = ±0.256 V110 : FSR = ±0.256 V111 : FSR = ±0.256 V |
| 8 | MODE | R/W | 1h | 設(shè)備運(yùn)行方式這個(gè)位控制操作模式。0:連續(xù)轉(zhuǎn)換模式1:?jiǎn)未文J交虻綦姞顟B(tài)(默認(rèn)) |
| 7:5 | DR[2:0] | R/W | 4h | 數(shù)據(jù)速率這些位控制數(shù)據(jù)速率設(shè)置。000 : 8 SPS 001 : 16 SPS 010 : 32 SPS011 : 64 SPS 100 : 128 SPS (default) 101 : 250 SPS 110 : 475 SPS 111 : 860 SPS |
| 4 | COMP_MODE | R/W | 0h | 比較器模式該位控制比較器工作0:傳統(tǒng)比較器(默認(rèn))1:窗口比較器 |
| 3 | COMP_POL | R/W | 0h | 比較器極性該位控制ALERT / RDY引腳的極性0:低電平有效(默認(rèn))1:高電平有效 |
| 2 | COMP_LAT | R/W | 0h | 鎖存比較器該位控制ALERT / RDY引腳在被置為有效后鎖存,還是在轉(zhuǎn)換后處于上限和下限閾值范圍之內(nèi)清零。0:非鎖存比較器。 置位后ALERT / RDY引腳不鎖存(默認(rèn))1:鎖存比較器。 置為有效的ALERT / RDY引腳保持鎖存狀態(tài),直到轉(zhuǎn)換數(shù)據(jù)由主服務(wù)器或適當(dāng)?shù)腟MBus警報(bào)響應(yīng)讀取由主機(jī)發(fā)送。 設(shè)備以其地址響應(yīng),它是最低的當(dāng)前聲明ALERT / RDY總線的地址。 |
| 1:0 | COMP_QUE[1:0] | R/W | 3h | 比較器置位和禁用這些位執(zhí)行兩個(gè)功能。 設(shè)置為11時(shí),比較器被禁用,ALERT / RDY引腳被設(shè)置為高阻抗?fàn)顟B(tài)。 當(dāng)設(shè)置為任何其他值時(shí),將啟用ALERT / RDY引腳和比較器功能,并且該設(shè)置值確定連續(xù)的轉(zhuǎn)換次數(shù)超過(guò)在聲明ALERT / RDY引腳之前所需的上限或下限閾值00:一次轉(zhuǎn)換后斷言01:兩次轉(zhuǎn)換后置位10:四次轉(zhuǎn)換后置位11:禁用比較器并將ALERT / RDY引腳設(shè)置為高阻抗(默認(rèn)) |
4.比較器高低閾值寄存器
Lo_thresh (P[1:0] = 2h) [reset = 8000h]
Hi_thresh (P[1:0] = 3h) [reset = 7FFFh]
比較器使用的上限和下限閾值以二進(jìn)制補(bǔ)碼格式存儲(chǔ)在兩個(gè)16位寄存器中。所述比較器實(shí)現(xiàn)為數(shù)字比較器;因此,無(wú)論P(yáng)GA設(shè)置何時(shí)更改,這些寄存器中的值都必須更新。通過(guò)將Hi_thresh寄存器MSB設(shè)置為1和Lo_thresh寄存器MSB設(shè)置為0,可以啟用ALERT/RDY引腳的轉(zhuǎn)換準(zhǔn)備功能。要使用ALERT/RDY引腳的比較器函數(shù),Hi_thresh寄存器值必須始終大于Lo_thresh寄存器值。當(dāng)設(shè)置為RDY模式時(shí),ALERT/RDY引腳在單鏡頭模式下輸出OS位,并在連續(xù)轉(zhuǎn)換模式下提供連續(xù)轉(zhuǎn)換準(zhǔn)備脈沖。
五、程序
ADS1115.C
#include < STC89C5xRC.H >
#include < IIC.H >
/*****************寄存器位置*************/
#define REG_Conversion 0x00
#define REG_config 0x01
#define REG_L_thresh 0x02
#define REG_H_thresh 0x03
/*****************寄存器EG_Conversion**********/
//存放著16位結(jié)果
/*****************寄存器REG_config的位**********/
#define OS 1 //操作狀態(tài)或單發(fā)轉(zhuǎn)換啟動(dòng) (1位)
#define MUX 0x04 //輸入多路配置 通道0 (3位)
#define PGA 0x00 //可編程增益放大器配置 量程 ±6.144 V (3位)
#define MODE 0x00 //設(shè)備運(yùn)行方式 連續(xù)轉(zhuǎn)換模式 (1位)
#define DR 0x03 //轉(zhuǎn)換速率64SPS (3位)
#define COMP_MODE 0 //比較器模式 傳統(tǒng)比較器 (默認(rèn))(1位)
#define COMP_POL 0 //比較器極性 低電平有效 (默認(rèn))(1位)
#define COMP_LAT 0 //鎖存比較器 非鎖存比較器, 置位后ALERT / RDY引腳不鎖存 (默認(rèn))(1位)
#define COMP_QUE 0x03 //比較器置位和禁用 禁用 (默認(rèn))(2位)
#define config_MSB (OS < < 7)|(MUX < < 4)|(PGA < < 1)|(MODE)//OS移動(dòng)到高8位 MUX移動(dòng)到高7位 PGA移動(dòng)到高四位 MODE高一位
#define config_LSB (DR < < 5)|(COMP_MODE < < 4)|(COMP_POL < < 3)|(COMP_LAT < < 2)|(COMP_QUE)//DR移動(dòng)到低8位,COMP_MODE移動(dòng)到低5位,COMP_POL移動(dòng)到低4位,COMP_LAT移動(dòng)到低3位,COMP_QUE最后兩位
/*****************寄存器REG_L_thresh REG_H_thresh值**********/
#define Lo_thresh 0x8000 // 比較器低閾值
#define Hi_thresh 0x7FFF // 比較器高閾值
void ADS1115_Write()
{
IIC_Start();
IIC_SendByte(0x90);
IIC_ReceiveAck();//沒(méi)有對(duì)返回的 ACK 做處理
IIC_SendByte(REG_config);
IIC_ReceiveAck();
IIC_SendByte(config_MSB);
IIC_ReceiveAck();
IIC_SendByte(config_LSB);
IIC_ReceiveAck();
IIC_Stop();
}
float ADS1115_Read()
{
float ret=0;
unsigned int ad=0;
IIC_Start();
IIC_SendByte(0x90);
IIC_ReceiveAck();//沒(méi)有對(duì)返回的 ACK 做處理
IIC_SendByte(REG_Conversion);
IIC_ReceiveAck();
IIC_Start();
IIC_SendByte(0x90+1);
IIC_ReceiveAck();
ad = IIC_ReceiveByte();
ad = (ad< 8)|IIC_ReceiveByte();
IIC_SendAck(1);
IIC_Stop();
if(ad >0x8000)//如果是負(fù)壓
{
ret =(float)(((0xFFFF-ad)*6.144)/32768);//分辨率:6.144÷2^15 電壓=分辨率*AD值
}else
{
ret =(float)ad*(6.144/32768);
}
return ret;
}
main.C
#include < STC89C5xRC.H >
#include < IIC.H >
#include < uart.H >
#include < ADS1115.H >
#include < delay.H >
//整形數(shù)據(jù)轉(zhuǎn)字符數(shù)組
void IntToString(unsigned char *str,unsigned int dat)//str 存放字符的數(shù)組,dat 整形數(shù)據(jù)
{
unsigned char i = 0;
unsigned int buf[8];
do { //先轉(zhuǎn)換成 低位在前的十進(jìn)制數(shù)組 將低位高位互換
buf[i++] = dat % 10;
dat /= 10;
} while (dat > 0);
while (i-- > 0) //將數(shù)組值轉(zhuǎn)換為 ASCII 碼反向拷貝到接收指針上
{
*str++ = buf[i] + '0';
}
*str = '?';
}
void main()
{
unsigned int voltage=0;
unsigned char arr[8];
char * P = arr;
uart_init();//2400
ADS1115_Write();
Delay_x_ms(1000);
while(1)
{
voltage = (unsigned int)(ADS1115_Read()*1000);
IntToString(P,voltage);
UART_Send(P);
UART_Send("mV");
Delay_x_ms(1000);
}
}
六、實(shí)驗(yàn)現(xiàn)象
AIN0引腳分別輸入 1.8V 3.3V 5V模擬信號(hào)
-
模數(shù)轉(zhuǎn)換器
+關(guān)注
關(guān)注
26文章
4099瀏覽量
130241 -
AD采集
+關(guān)注
關(guān)注
1文章
27瀏覽量
14669 -
ADC
+關(guān)注
關(guān)注
0文章
227瀏覽量
16845 -
ads1115
+關(guān)注
關(guān)注
0文章
19瀏覽量
13402
發(fā)布評(píng)論請(qǐng)先 登錄
ADS1115的采樣時(shí)間要多久?
ADS1115驅(qū)動(dòng)的問(wèn)題
ADS1115的使用
ADS1115采集不準(zhǔn)的原因
ADS1115是什么意思呢
TI公司IIC接口16位AD模塊ADS1115
ads1115電壓測(cè)量范圍
基于51的ads1115詳細(xì)程序介紹
ads1115使用方法
基于MSP430F5529單片機(jī)的ADS1115
ADS1115使用及其驅(qū)動(dòng)電路
51驅(qū)動(dòng)ADS1115 AD采集
評(píng)論