標(biāo)題: 一個高精度24位ADC芯片ADS1222的使用方法及參考電路 [打印本頁]

作者: yonko    時間: 2023-10-1 20:56
標(biāo)題: 一個高精度24位ADC芯片ADS1222的使用方法及參考電路
前一段時間,在做單片機(jī)、PLC、電路板、控制器/箱、儀器儀表、機(jī)電設(shè)備或系統(tǒng)、自動化、工控、傳感、數(shù)據(jù)采集、自控系統(tǒng)、控制系統(tǒng),物聯(lián)網(wǎng),電子產(chǎn)品,軟件、APP開發(fā)設(shè)計(jì)定制定做開發(fā)項(xiàng)目時,有要求用到24位的高精度ADC,用于對外部信號采集。
經(jīng)查閱,初步獲得一款滿足要求的芯片:ADS1222,本文就介紹該芯片及其使用方法。

ADS1222是一個2通道、24位、Δ-∑-對數(shù)-數(shù)字(A/D)轉(zhuǎn)換器。它在TSSOP-14封裝中提供了出色的性能和低功耗。這個ADS1222非常適合要求苛刻的高分辨率測量,尤其是在便攜式系統(tǒng)以及其他節(jié)省空間和功率受限的應(yīng)用中。Δ-∑調(diào)制器和數(shù)字濾波器構(gòu)成基礎(chǔ)A/D轉(zhuǎn)換器。模擬調(diào)制器具有±5V差分輸入范圍。輸入多路復(fù)用器(mux)是用于在兩個單獨(dú)的差分輸入之間進(jìn)行選擇通道?梢赃x擇一個緩沖區(qū)來增加輸入測量阻抗。一個簡單的2線串行接口提供了所有必要的控制。數(shù)據(jù)檢索、自校準(zhǔn)和待機(jī)模式只需幾個簡單的波形。當(dāng)僅需要單個轉(zhuǎn)換時,ADS1222可以快速關(guān)閉(待機(jī)模式)在兩次測量之間處于空閑狀態(tài)時降低了整體功耗,ADS1222s可以連接在一起以創(chuàng)建同步采樣多通道測量系統(tǒng),ADS1222設(shè)計(jì)用于輕松連接諸如MSP430的微控制器。ADS1222支持2.7V至5.5V電源。在3V操作中功耗通常小于1mW,待機(jī)模式下為1µW。
主要特點(diǎn)有:
⭕帶4MHz時鐘的240SPS數(shù)據(jù)速率;
⭕20位有效分辨率;
⭕雙差分輸入復(fù)用器通道;
⭕引腳可選擇,高阻抗輸入緩沖器;
⭕±5V差分輸入范圍,建議在GND+0.05V至VDD−1.5V之間,超出會降低精度;
⭕0.0003%INL(典型值),0.0015%INL(最大值);
⭕自校準(zhǔn);
⭕簡單的2線串行接口;
⭕片上溫度傳感器;
⭕待機(jī)模式下的單次轉(zhuǎn)換;
⭕低電流消耗:300µA;
⭕模擬電源:2.7V至5.5V;
應(yīng)用場景:
⭕手持式儀器;
⭕便攜式設(shè)備;
⭕工業(yè)過程控制;
⭕磅秤等。
1、        封裝及引腳說明




2、        參考電路


ADS1222支持5V供電電源,將VDD接直流電源正極,GND接直流電源負(fù)極。
CLK給予一定頻率的脈沖信號給ADS1222,為TTL電平,一般為2MHz.
一般不用片上溫度傳感器,那么TEMPEN接0 (0V),選擇接入外部模擬量通道。
一般需要開啟緩沖器以獲得高輸入阻抗,那么BUFEN接1(5V).
參考電壓一般接高精度2.5V。
3、        使用說明
ADS1222輸入的模擬量電壓在GND + 0.05V to VDD − 1.5V范圍內(nèi)擁有較高的精度,超出這個范圍則精度降低。
其一般使用流程如下:
(1)        通道選擇
ADS1222是雙通道的模數(shù)轉(zhuǎn)換器,每個芯片里面有2路模擬量輸入通道,在使用時,首先得選擇通道,設(shè)置引腳MUX則可選擇通道。
MUX接0(0V),表示選擇通道1,MUX接1(5V),表示選擇通道2.
(2)等待轉(zhuǎn)換完成
將SCLK引腳拉低,并監(jiān)測DRDY/DOUT引腳的電平,當(dāng)其為0時,表示ADC轉(zhuǎn)換完成。
(3)讀取數(shù)據(jù)
a,只讀取數(shù)據(jù),需要24個脈沖
數(shù)據(jù)在串行時鐘SCLK的驅(qū)動下輸出,先輸出數(shù)據(jù)的高位,然后輸出數(shù)據(jù)的低位,直到把全部24位數(shù)據(jù)輸出完。此時需在SCLK的下降沿后讀取數(shù)據(jù),ADS1222在每個SCLK脈沖時輸出一位數(shù)據(jù)。
在第24個SCLK脈沖時SCLK保持為高,那么ADS1222則進(jìn)入待機(jī)模式。



b,讀取數(shù)據(jù)后強(qiáng)制DRDY/DOUT引腳為高,需要25個脈沖
在前面24位數(shù)據(jù)輸出完后,SCLK再給一個脈沖,ADS1222將強(qiáng)制DRDY/DOUT引腳為高。



c,ADS1222自校準(zhǔn),需要26個脈沖



(4)數(shù)據(jù)解析
ADS1222的數(shù)據(jù)采用二進(jìn)制補(bǔ)碼的方式存儲的,為24位,傳輸時高位在前。最高位為符號位,0為正數(shù),1為負(fù)數(shù)。當(dāng)獲得的數(shù)據(jù)為正數(shù)時,原碼即補(bǔ)碼,當(dāng)為負(fù)數(shù)時,原碼等于除符號位以外的數(shù)據(jù)位全部取反后加一。

當(dāng)模擬量輸入電壓為2倍參考電壓(一般5V)時,輸出的數(shù)據(jù)為(7FFFFFh,二進(jìn)制為0111 1111 1111 1111 1111 1111),可知符號位為0為正數(shù),正數(shù)的補(bǔ)碼即原碼,其余為全為1表示測量為正電壓的最大值5V。
當(dāng)模擬量輸入電壓為0V時,輸出的數(shù)據(jù)為(000000h,二進(jìn)制為0000 0000  0000 0000 0000 0000),可知符號位為0為正數(shù),正數(shù)的補(bǔ)碼即原碼,其余為全為0表示測量為0V。
當(dāng)模擬量輸入電壓約為2倍負(fù)參考電壓時,輸出的數(shù)據(jù)為(800000h,二進(jìn)制為1000 0000  0000 0000 0000 0000),可知符號位為1為負(fù)數(shù),將補(bǔ)碼轉(zhuǎn)換為原碼,為1 1000 0000 0000 0000 0000 0000(對于此數(shù),負(fù)數(shù)的補(bǔ)碼求原碼后,數(shù)據(jù)變成25位(1位符號位+24位數(shù)據(jù)位)),表示測量為負(fù)電壓的最小值約-5V。
ADS1222說的是24位分辨率傳感器,但是其最高位是符號位,實(shí)際來說只有23位分辨率。業(yè)務(wù):3w點(diǎn)yonko-tech點(diǎn)com
4、        參考程序
一個單片機(jī)C語言的參考程序如下:
sbit DOUT=P1^0;
sbit SCLK =P1^1;
sbit MUX1222 =P1^2;
unsigned long adc_convert_ch0()        //通道0的AD轉(zhuǎn)換程序
{
unsigned long xdata adc_result=0;
unsigned char i=0;
unsigned char j=0;
//復(fù)位ADS1222
SCLK1222=0;                //拉低SCLK
MUX1222=1;                        
delayus(1);      //軟件延時1us,其實(shí)延時100ns即可覆蓋大部分場景
MUX1222=0;                        //復(fù)位并選擇低位的通道(mux由1變?yōu)?,表示通道復(fù)位+選擇通道0.假如是選擇通道1,那么mux引腳先0后1即可)        
delayus(1);
//等待轉(zhuǎn)換完成。業(yè)務(wù):3w點(diǎn)yonko-tech點(diǎn)com,扣扣:二五三一26三七二六
while(DOUT ==1)        //當(dāng)DRDY/DOUT =0時轉(zhuǎn)換完成
{ delayms(1);
j++;
if(j>=20) break;//等了20ms還沒轉(zhuǎn)換完成,退出等待
}  
if(j<20) //只有轉(zhuǎn)換時間小于20ms的才正確,才讀取
{
//獲取數(shù)據(jù)
for(i=0;i<24;i++)                  //讀取數(shù)據(jù),0-23共24個數(shù)據(jù)位
        {
        SCLK1222=0;                         //拉低SCLK
        delayus(1);
        SCLK1222=1;                  //拉高SCLK
        delayus(1);
        adc_result=adc_result<<1;
        if(DOUT==1)
                {adc_result=adc_result | 0x00000001UL;}
        else
                {adc_result=adc_result & (~0x00000001UL);}
        }
//輸出第25個脈沖,強(qiáng)制DRDY/DOUT為高
SCLK1222=0;        //拉低SCLK
delayus(1);
SCLK1222=1;  //拉高SCLK
delayus(1);
SCLK1222=0;  //拉低SCLK
delayus(1);
return         adc_result;
}
}
//說明:以上程序是按照數(shù)據(jù)表編寫的,還沒來得及上芯片驗(yàn)證,僅供參考。
本文來自于對手冊的解析,可能有誤,詳細(xì)的使用說明可查閱ADS1222的原版手冊(ADS1222_datasheet)。
沙鷗 于 成都
參考文獻(xiàn):
[1] ADS1222數(shù)據(jù)表(ADS1222_datasheet)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1