岳 洋,焦運良,邢計元
(華北計算機系統工程研究所,北京 100083)
智能數據采集是將被采集對象的特征量通過相應的傳感器做適當變換后,再經過信號調理等步驟,最終送到處理器中去進行處理的一個過程。它是計算機在檢測、管理和控制的過程中取得原始數據的主要手段[1]。雖然市面上有很多關于數據采集系統成熟的解決方案,但是往往價格很高,而且在采集數據的過程中,又會遇到不同的使用環境。所以低功耗、便攜化和高性能的要求是必需的。單片機具有良好的開發環境和成熟的外圍電路資源,它對數字電路和模擬電路都有很好的處理能力。所以課題使用單片機作為主控芯片,發揮其低功耗的特點,并且適合在多種測量環境下使用。
數據采集系統由數據采集部分、數據傳輸部分、數據處理部分以及顯示部分組成。電壓電流等模擬量由A/D將其轉換成數字信號再傳輸到單片機進行數據處理,最后顯示采集結果。系統設計框圖如圖1所示。

圖1 系統流程圖
信號輸入部分包括傳感器采集輸出的電壓、電流以及八路開關量。信號調理部分主要是對輸入信號進行調理,使其在A/D的輸入范圍之內。A/D模塊主要是對采集的模擬信號轉化為數字信號,其中A/D的工作電壓范圍和位數決定了采樣的精度。傳輸通道是把A/D轉化輸出的數字信號傳輸到單片機進行數據處理。數據處理部分是對數字信號進行處理,還原出調理前的原始數據。數據顯示部分是將處理后的數據顯示出來。
系統硬件模塊主要由主控模塊、開關量采集模塊、模擬量采集模塊和顯示模塊四部分組成。
系統采用MSP430單片機作為主控模塊,其外圍電路如圖2所示。晶振對單片機的正常運行起著至關重要的作用。方案中采用雙晶振配合使用,其中Y2為8 MHz的高速晶振,如果將其直接加到單片機上,雖然單片機能工作,但是會產生干擾信號,對系統的穩定性產生影響,所以在其兩端增加兩個電容已達到穩頻的效果[2];Y1為32 768 Hz的低速晶振,其內部的雜散電容構成回路可以看做是已經加過電容,所以可以將其直接接入單片機。

圖2 MSP430原理圖
此外,因為MSP430單片機內置了ADC12模塊,所以選擇ADC12作為模數轉換器。ADC12具有諸多優點,完全能夠滿足本次采集系統的需求。它的分辨率能夠達到1/212,采樣的速度為200 kbit/s;而且ADC12中還內置了采樣保持電路,節省了外部電路成本;它還有四種轉換模式,支持超低功耗模式,能夠關閉其內核[3]。
本系統的模擬量采集中擬采集4~20 mA的電流信號、1~5 V和0~10 V的電壓信號。因為4~20 mA、1~5 V信號是我國使用最廣泛的DDZ-III型電動儀表所采用的標準,它是沿用的國際電工委員會(IEC)規定的過程控制系統模擬信號標準[4]。模擬量采集電路如圖3所示。

圖3 模擬量采集電路
對于電壓量,首先數據采集系統要求電壓的輸入量程為兩擋:0~10 V擋和1~5 V擋,所以在設計中通過控制雙路選擇開關選出要采集的擋位。當0~10 V電壓輸入時,電壓應從規定好的10 V輸入口P4輸入,然后通過電阻分壓為原信號的1/2后送入后級電路。當1~5 V電壓輸入時,電壓應從AIN+和AIN-端接入,以實現對不同量程電壓的測量。
對于電流信號,4~20 mA電流信號同樣從AIN+和AIN-端接入,通過R11將其轉換為電壓量后送入后級電路。同時,為使轉換的電壓量符合輸入量程,由歐姆定律可得出R11的阻值應該被設計為250 Ω。
考慮到阻抗會對電路產生一定的影響,甚至可能會影響到信號采集電路的準確性,所以在電路中加入了兩級跟隨器電路來對電路進行阻抗變換,以提高電路的驅動能力和穩定性[5]。在電路末端反向串聯了兩個二極管,形成保護電路,將電壓鉗制在安全的范圍內,以免出現意外燒壞內部器件的情況。
開關量采集電路是以光電耦合器為核心,采集通、斷信號并將其傳輸到單片機的I/O口線中。如圖4所示,開關量采集使用TLP521-4光電耦合器。開關量由P3和P5輸入,有信號輸入時,光電耦合器一側導通,點亮發光二極管促使光敏三極管基極導通,從而使光電耦合器另一側有高電平輸出[6]。

圖4 開關量采集電路原理圖
同時,光電耦合器在電路中也起到了隔離作用。如果沒有加光電耦合器而是直接把開關量接到單片機上,可能會由于開關量輸出的電壓或電流超過單片機的正常工作電壓從而對單片機造成損傷。
LCD分為段碼型和點陣型兩種,點陣型又分為字符點陣型和圖形點陣型。因為LCD1602型液晶屏幕是字符型液晶,顯示內容豐富,而且具有較小的體積,接口方便使用,故選擇它作為顯示模塊。
LCD1602有16個接口,在本系統中采用3.3 V電壓驅動,所以不需要其他電源電路;而且MSP430單片機的I/O接口較為充裕,所以選擇將LCD1602的接口直接與單片機I/O接口相連[7]。
系統要具體實現所需功能,不僅僅要搭建好硬件電路基礎,而且還需要對所需軟件程序進行良好的設計。本系統軟件設計部分主要有主程序、開關量采集程序、A/D轉換程序和LCD顯示程序四個部分。
主程序負責其余三個程序的調配和數據交換工作,主程序流程圖如圖5所示。首先應對整個系統進行復位,再初始化主程序;然后初始化各模塊子程序,隨后打開系統中斷,利用中斷的方式調用其余子程序。

圖5 系統軟件模塊流程圖
A/D轉換子程序負責將采集到的模擬信號進行模數轉換。首先初始化A/D轉換模塊,等待系統打開中斷后開始對采集的數據進行A/D轉換。其中初始化部分主要完成A/D轉換和定時器的初始化功能設置,如參考電壓、模擬量的輸入口等。
LCD顯示程序負責對LCD的初始化和液晶模塊操作。其中LCD初始化包括造作控制引腳置高或置低,使控制指令和數據能夠正常寫入顯示模塊;液晶模塊操作包括發送指令、顯示數據、顯示位置設置、顯示內容設置等。
由于開關量經過光電耦合器之后可以直接接到單片機,單片機只需判斷引腳的高低電平就可以讀取數據。所以開關量采集程序相對簡單,只需將單片機相應引腳置為輸入,然后讀取數據即可。
在系統設計之前,對電路進行了模擬仿真;在系統設計完成之后,對系統進行了調試。
在硬件電路仿真時使用Multisim軟件,分別對模擬量采集電路進行了仿真,仿真結果均表明電流量、5 V電壓量和10 V電壓量輸入電路后,電路輸出端接收到的電壓量均為理想值,其中5 V電壓量仿真結果如圖6所示。電路能夠正常運行,并完成系統所需的采集任務。

圖6 5 V電壓仿真
在本系統的調試中,對系統功能進行了測試,結果如表1、表2、表3所示。其中電流的單位為毫安(mA),電壓的單位是伏特(V)。

表1 1~5 V電壓測量結果

表2 0~10 V電壓測量結果

表3 4~20 mA電流測量結果
由于測量部分都是模擬電路,因此與實際的電壓值相比會存在一定的誤差,經過分析可能有以下幾方面因素導致誤差:
(1)電阻值精度不高,與標值之間會有一定的誤差。因為電路中采用了多個分壓電阻,所以導致在分壓過程中產生一定的誤差。
(2)穩定誤差及干擾誤差等[8]。
(3)器件誤差,如在電路中運用到的二極管、三極管等計算時的誤差。
模擬電路中遇到誤差是常見的,而經過分析,測量電路誤差較小,基本能夠滿足本系統的采集需求。