基于AD7705的低頻數據采集電路設計介紹|壹芯微
AD7705具有自校準和系統校準功能,能夠消除器件的本身和系統的增益以及偏移誤差。是用于開發智能系統、微控制器系統和基于DSP系統的理想產品。本文主要講述了采用AD7705與89C51單片機設計的一個低頻數據采集電路,并詳細介紹了電路設計和軟件設計方法。
1.89C51單片機介紹
圖1 89C51單片機
89C51是一種帶4K字節閃爍可編程可擦除只讀存儲的低電壓、高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡版本。89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。其特性:
.與MCS-51兼容
·4K字節可編程閃爍存儲器
·壽命:1000寫/擦循環
·三級程序存儲器鎖定
·128*8位內部RAM
·32可編程I/O線·兩個16位定時器/計數器
·可編程串行通道
·低功耗的閑置和掉電模式
·片內振蕩器和時鐘電路
2.AD7705介紹
圖2 AD7705
AD7705為完整16位、低成本、Σ-Δ型ADC,適合直流和低頻交流測量應用。其具有低功耗(3V時最大值為1mW)特性,因而可用于環路供電、電池供電或本地供電的應用中。片內可編程增益放大器提供從1至128的增益設置,無需使用外部信號調理硬件便可接受低電平和高電平模擬輸入。其特性:
兩個全差分輸入通道ADC。
可編程增益前端:增益范圍從1至128。
三線串行接口:SPI®,QSPI™,MICROWIRE™,DSP兼容;SCLK上可接受施密特觸發器輸入。
提供模擬輸入緩沖。
工作電壓:2.7V至3.3V或4.75V至5.25V。
功耗:最大1mW(3V)。
待機電流:最大8µA。
16引腳DIP、16引腳SOIC和TSSOP封裝。
3.AD7705與單片機的接口
首先介紹AD7705與單片機的連接方法,因為它采用串行接口,使得與大多數單片機很容易連接。AD7705與8xC51單片機的接口電路如圖3所示。
圖3 AD7705與8XC51單片機的接口電路
在一般的簡單系統中,常常只有1片AD7705或其它共用口線的器件,故CS-通常接低電平,節省了單片機的輸出輸入控制線,這樣就可以配置成三線連接方式。三線連接方式下決定數據寄存器是否被更新也即是確定數據寄存器是否可以被讀,只有通過監控通信寄存器DRDY-位來判斷,這種做法的代價是時間開銷較多,它并不適用于時效性要求比較強的系統。比較好的辦法是監控硬件DRDY-引腳的狀態,以決定數據寄存器是否被更新,硬件DRDY-引腳的輸出與通信寄存器DRDY-位同步,DRDY-引腳一旦變成低電平,表明數據寄存器數據已經更新,可以讀取。所以DRDY-輸出引腳接至CPU的INT0或INT1就可以實現中斷或者查詢方式的監控。但不管是查詢方式還是中斷方式,都需要增加一根數據線。在本設計中采用了硬件DRDY-引腳查詢的方法。
串行口包含5個信號,即SCLK、DIN、DOUT、DRDY-和CS-,通常直接連接到8xC51對應的引腳P3.0、P3.1、P3.2、P3.3,DIN線用來向片內寄存器傳輸數據,而DOUT線用來訪問寄存器里的數據。SCLK是串行時鐘輸入,所有的數據傳輸都和SCLK信號有關,對于與單片機的接口,為確保芯片數據轉換可靠,在兩次相鄰的數據傳輸之間,應將本SCLK置為高電平。DRDY-線作為狀態信號,表示數據什么時候準備好以便從寄存器讀取數據。數據寄存器中有新的數據字的時候,DRDY-腳變為低電平。如果在數據寄存器數據更新之前,若DRDY-腳變為高電平,提示這時候不要讀數據,避免在數據寄存器更新的過程中讀出不可靠的數據。
AD770的讀寫操作嚴格按照時序進行,圖4給出AD7705讀和寫時序。
圖4 AD7705讀、寫時序
4.實際應用電路設計
我們設計的是一個氣象探測儀器的實際應用電路,專門用于溫度和濕度的模數轉換。因為實時性要求不太高,因此數據讀取采用了查詢方法,這種方法對一般的應用是可以滿足要求的。在圖3電路中,CLCK、DIN、DOUT和DRDY-引腳直接連接80C52的P1.0-P1.3引腳。由CC3和RC5成的復位電路,通電時,輸入引腳RESET-處于低電平,復位所有的邏輯、數據濾波器和模擬調試器,將所有的片內寄存器設置到其默認狀態。使用芯片REF195產生+5V基準電壓供給AD7705作為參考電壓,同時作為溫度傳感器的激勵電流源。注意基準電壓輸出端應該并聯10μ和1000p去耦電容CC4和CC8,因為微小的噪聲電平都會影響轉換精度。實際上,由于AD7705的功耗很小(最大1.1mA),所以在設計中作者將AD7705的電源輸入端VDD直接連接到REF195基準電壓輸出端第6腳上,從而大大減少了電源干擾造成的轉換誤差。第一通道的輸入端加入去耦電路,3個1000p的去耦電容CC5、CC6、CC7和兩個10k電阻,因為引入了大電容去耦電路,因此需要AD7705工作于緩沖模式。通道2作為供電電壓的監測。
從圖5可以看出,AD7705輸入基準電壓等于+5V,被y輸入端input2輸入電壓負端接地,正端最大輸入幅度+0.3V,故增益可以選擇8或者16。input1是從+12V電源分壓得到2.0V左右,可以選擇增益2。注意輸入信號幅度與增益關系,通道增益太大放大結果會超過基準電壓+5V,造成轉換結果錯誤。
AD7705內部只有一套模數轉換電路,通道1和通道2的選擇通過軟件設置進行切換,實際應用中往往需要對不同通道采取不同的增益,動態地對AD7705進行增益、通道設置,很靈活方便地達到這一目的。
圖5氣象探測儀電路圖
5.軟件設計
使用AD7705之前,首先要對所有寄存器進行設置,才能保證器件正常工作。在實際使用中,首先選擇模擬輸入模式(單極性還是雙極性)、是否需要緩沖、時鐘分頻和輸出更新速率;根據外部輸入信號的幅度來決定設置器件的增益值,本實例里通道1和通道2輸入信號都是單極性,但幅度不同,所以循環選擇通道,選擇相應參數,應用中選擇輸入通道單極性、初始增益等于8、數據更新速率為250Hz。根據實際確定所有參數以后,對AD7705芯片進行設置,參數設置方法比較獨特,在設置參數之前,首先對通信寄存器進行一次寫操作,來決定下一個是什么樣的寄存器和什么樣的操作內容,再進行下一步的參數寫入,讀者可參考下面的AD7705初始化程序InitADC()。
模擬輸入電路前端加入了一個簡單的R、C濾波器,會在輸入電壓中引起增益誤差,必須對器件進行校準,因為每次系統校準可以對系統的增益、偏移誤差、以及器件本身的內部誤差進行補償,所以參數設置完畢以后,應該對器件進行一次系統校準,寫入設置寄存器位MD1和MD0分別為0和1完成系統自校準,自校準后自動返回正常模數轉換工作模式。實際中各路輸入信號幅度往往不完全相同,因此每轉換一路就需要一次參數設置和系統校準。還需注意的是,在非緩沖模式下使用時,系統校準還可以消除模擬輸入端由電源阻抗引起的任何誤差。
下面是用C51語言編寫的初始化程序:
voidInitADC(void)
{unsignedchari;
ADC-CLK=1;ADC-DIN=1;
for(i=0;i<40;i++){ADC-CLK=0;ADC-CLK=1;}//防止接口迷失,通信寄存器返回到等待寫狀態
WriteToReg-ADC-Init(0x20);//通道1,下一個寫時鐘寄存器
WriteToReg-ADC-Init(0x06);//寫時鐘寄存器設置更新速率為250Hz
WriteToReg-ADC-Init(0x10);//通道1,下一個寫設置寄存器
WriteToReg-ADC-Init(0x5c);//寫設置寄存器,設置成單極性、無緩沖、增益為8、濾波器工作、自校準
Delay-1ms(50);//延時
unsignedintWriteToReg-ADC(unsignedintbyteword)
{unsignedintAD16bit,Token;
unsignedchari;
ADC-CLK=1;ADC-CS=0;/*開始*/
Token=0x80;AD16bit=byteword;
for(i=0;i<8;i++)
{if(AD16bit&Token)ADC-DIN=1;/*輸入數據位*/
elseADC-DIN=0;
ADC-CLK=1;ADC-CLK=0;ADC-CLK=1;
Token=Token>>1;
}
ADC-CLK=1;ADC-DIN=1;/*結束*/
return(TRUE);}
初始化以后,CPU就可以從模數轉換器中讀數據,讀取數據之前必須確定數據寄存器的狀態,有兩種不同的方式查詢,第一種是查詢DRDY-引腳,如果DRDY-引腳處于低電平,這表示數據已經轉換完成,可以讀取。第二種是查詢通信寄存器中的DRDY-位,如果是“0”表示數據可以讀取。本例使用前者。讀數據流程圖如圖6所示,讀數據的頻率為大約每分鐘60次,遠小于數據寄存器更新速率,確保了避免在數據寄存器更新的過程中讀出不可靠的數據。
圖6 讀數據流程圖
為了便于讀者理解,給出讀數據寄存器的函數原代碼如下:
unsignedintReadADC-16BitValue(unsignedcharchannel)
{unsignedintAD16bit,Token;
unsignedchari;
WriteToReg-ADC(0x38|channel);//設置讀當前通道數據
while(ADC-DRDY==1){;}//等待數據準備好
ADC-CLK=1;ADC-CS=0;
AD16bit=0x00;
for(i=0;i<16;i++)
{AD16bit=AD16bit<<1;
ADC-CLK=0;
if(ADC-DOUT==1)AD16bit=AD16bit|0x01;//讀取數據位
ADC-CLK=1;
}
ADC-CLK=1;ADC-DIN=1;
return(AD16bit);
}
6.系統設計時值得注意的問題
AD7705功能獨特,具有分辨率高、接口簡單等特點,實際應用有時會遇到一些問題,只要注意是完全可以避免的,下面提供幾點實際應用經驗供參考:
(1)在實際應用中,由于強電磁場、系統中的閃爍信號干擾或者軟件錯誤,不可避免會造成接口迷失,一旦接口迷失,就無法對AD7705進行正常操作,數據也無法從中正常讀出。因此,在系統軟件設計中應當定時復位系統接口,使通信寄存器回到等待寫狀態,這一過程可以通過向DIN輸入端寫入至少32個串行時鐘周期的邏輯“1”以復位串行接口。同時也應當注意,由于接口出現迷失,寫入任何寄存器的信息都是不可預料的,所以接口復位后建議將所有的寄存器重新設置一次。
(2)輸出數據可以從串行口上隨機地或周期性地讀出,讀出速率應不超過預設的輸出寄存器更新速率。讀數據的例程里面不應該加入太多的其它操作,確保在下一次輸出數據更新之前讀操作已經完成,這樣才能避免連續兩次從數據寄存器讀到同樣的數據(沒有被更新數據)。
(3)在設計AD7705印刷板電路必須講究布線技巧,布線的好壞直接影響數據轉換精度,甚至會引起芯片工作失常。經驗表明,AD7705應該布設在一個相對獨立和集中的區域,器件面用覆銅作接地平面,起到屏蔽作用。
數字區和模擬區盡可能在底面分開布線,模擬接地與數字接地應只在一個點連接在一起,以避免出現接地環路,并用屏蔽網格技術加以屏蔽,最后要以星型結構接入系統公共接地點。所有電源都要加電容去耦電路,電容器盡可能靠近芯片的電源輸入端。
深圳壹芯微科技,20年專業生產“二極管、三極管、場效應管、橋堆”等,專業生產管理團隊對品質流程嚴格管控,超過4800家電路電器生產企業選用合作,價格低于同行(20%),更具性價比,提供選型替代,送樣測試,數據手冊,技術支持,售后FEA,如需了解更多詳情或最新報價,歡迎咨詢官網在線客服!
手機號/微信:13534146615
QQ:2881579535
工廠地址:安徽省六安市金寨產業園區
深圳辦事處地址:深圳市福田區寶華大廈A1428
中山辦事處地址:中山市古鎮長安燈飾配件城C棟11卡
杭州辦事處:杭州市西湖區文三西路118號杭州電子商務大廈6層B座
電話:13534146615
企業QQ:2881579535
深圳市壹芯微科技有限公司 版權所有 | 備案號:粵ICP備2020121154號