在野外以及一些沒有市電或者不適宜使用市電的應用場合,自動化儀表通常要采用電池供電,這就要求儀表中的電子元器件的功耗要低,A/D轉換器作為自動化儀表的重要組成部份更不例外。筆者采用ADS7844和PIC16C64構成的數據采集系統便具有功耗極低、結構簡單等優點,完全可以適應電池供電系統的要求。 1 ADS7844的結構及工作原理 ADS7844是Burr-Brown公司推出的一種高性能、寬電壓、低功耗的12-bit串行模數轉換器。它有8個模擬輸入端,可用軟件編程為8通道單端輸入A/D轉換器或4通道差分輸入A/D轉換器,其轉換率高達200kHz,而線性誤差和差分誤差最大僅為%26;#177;1LSB。ADS7844在電源電壓為2.7V~5V之間均能正常工作,最大工作電流為1mA,進入低功耗狀態后的耗電僅3μA。ADS7844通過6線串行接口與CPU進行通信,而且接口簡單方便。 1.1 ADS7844的引腳功能 ADS7844的引腳排列如圖1所示。它有20個引腳,各引腳的功能如下: CH0~CH7:模擬輸入端,當器件被設置為單端輸入時,這些引腳可分別與信號地COM構成8通道單端輸入A/D轉換器;當器件被設置為差分輸入時,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可構成4通道差分輸入A/D轉換器 COM:信號地 VREF:參考電壓輸入端,最大值為電源電壓 CS:片選端,低電平有效,該腳為高電平時,其它數字接口線呈三態 DCLK:外部時鐘輸入端,在時鐘作用下,CPU將控制字寫入ADS7844,并將轉換結果從中讀出 DIN:串行數據輸入端,在片選有效時,控制字在DCLK上升沿被逐位鎖入ADS7844 DOUT:串行數據輸出端,在片選有效時,轉換結果在DCLK的下降沿開始被逐位從ADS7844移出 BUSY:“忙”信號輸出端,在接收到控制字的第一位數據后變低,只有在轉換結束且片選有效時,該腳才輸出一個高脈沖 SHDN:電源關閉端,低電平有效。當SHDN為低電平時,ADS7844進入低功耗狀態 VCC,GND:分別為電源端和數字地。 1.2 ADS7844的控制字及轉換時序 ADS7844的控制字如表1所列。 表1 ADS7844的控制字含義 Bit7(MSB) Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0(LSB) S A2 A1 A0 - SGL/DIF PD1 PD0 ADS7844的控制字共有8位,其中S是起始位?控制字的起始位總為“1”。A2~A0是通道選擇位,在單端輸入時分別對應8個通道,而對于差分輸入,000~011分別對應CH0~CH1、CH2~CH3、CH4~CH5、CH6~CH7,而100~111則分別對應CH0~CH1、CH1~CH0、CH3~CH2、CH5~CH4、CH7~CH6。Bit3沒有定義。SGL/DIF是模式控制位,該位為“1”時是單端輸入模式,為“0”時是差分輸入模式。D1和PD0是電源關閉模式控制位,若為“00”,則表示ADS7844在不進行數據轉換時自動進入電源關閉模式,若為“11”,芯片則始終處于電源開啟模式。 ADS7844有多種轉換時序,其基本轉換時序如圖2所示。從圖中可見,一個轉換周期需要24個時鐘周期,其中8個用于輸入控制字,16個用于讀取轉換結果。控制字的所有位在時鐘上升沿被鎖入芯片,轉換結果在時鐘的下降沿被逐位移出。所有移入和移出的數據都是高位在前、低位在后。需要說明的是,ADS7844是12位A/D轉換器,其轉換結果只有12位,故在移出12位結果后,還需送入4個時鐘來完成整個轉換過程,這4個多余的時鐘移出的數據為“0”,使用時不應作為轉換結果處理。 2 低功耗數據采集系統的硬件電路 要設計一個低功耗數據采集系統,只有A/D轉換器是低功耗器件還不夠。IC16C64是美國MI-CROCHIP公司生產的高性能單片機,它有許多優點:寬電壓?2.7V~5V ,其工作電流只有1mA?3.3V@32kHz時 ,進入休眠狀態后只有幾微安且可以用中斷將其從休眠狀態喚醒等。低功耗數據采集系統的硬件電路如圖3所示,其中CS、DCLK、DIN和DOUT必須與CPU連接,而BUSY則可以不用,在轉換時稍加延時等待即可。控制AD7844進入低功耗狀態有兩種方式:一是直接控制SHDN端;二是將SHDN接在電源上,它們均可在控制字中設置。為了節省口線,可采用第二種方式。采樣控制可以使用外部中斷,如外部中斷INT0、串行口中斷和PB口電平變化引起的中斷等,也可以使用內部定時中斷。 3 軟件程序 下面給出該系統的主程序部分流程圖和匯編程序。該設計假設用外部中斷INT0喚醒CPU來進行數據采集,且A/D轉換程序就是中斷服務子程序。 ORG 000H GOTO MAIN ORG 004H GOTO INT PRO ORG 010H MAIN MOVLW 10H 關閉總中斷控制位, 但開放INT0 MOVWF INTCON BSF STATUS RP0 初始化A口 MOVLW 0F8H MOVWF TRISA A口D0-D2為輸 出,D3為輸入 BCF STATUS,RP0 BSF PORTA,1 使片選無效 ... BSF INTCON,GIE 開放總中斷控制位 LOOP SLEEP 等待中斷 NOP ... 數據采集完成后進行其他處理 GOTO LOOP INT_PRO BCF PORTA,0 時鐘置低電平 BCF PORTA,2 數據輸入置低 MOVLW 08H 置送控制字所需時鐘數 MOVWF NUM MOVLW 8CH 控制字,假設轉換CH0, 單端輸入,自動進入低功耗狀態 BCF PORTA,1 片選有效 ... 送控制字 LCALL DELAY 調用延時子程序 MOVLW 10H 置讀轉換結果所需 時鐘數 MOVWF NUM ... 讀轉換結果 BSF PORTA,1 結束轉換并返回 RETFIE 4 結束語 由于PIC16C64和ADS7844都是低功耗器件,且都有低功耗狀態,因而用其設計的數據采集系統功耗是很低的。經實測,當電源電壓為3.3V、時鐘為32.76kHz時,該電路的正常工作電流為2mA,而進入低功耗狀態后的系統消耗電流最大為4μA,因而完全適合于電池供電。另外,PIC16C64和ADS7844都是寬電壓器件,并且PIC16C64還有許多功能可以開發利用。如果在本系統基礎上做必要的功能擴展,便可用于其它工業控制系統的現場控制等領域。 |