基于CS5550的工業(yè)測量儀表設(shè)計
摘要:針對現(xiàn)行工控儀表的種類繁多、功能各異、專用性強等問題,本文介紹了一種高精度、多用途的智能工業(yè)測量儀表設(shè)計方案。本設(shè)計采用CS5550高性能A/D轉(zhuǎn)換芯片,以單片機作為系統(tǒng)控制中心,實現(xiàn)了多種信號的采集與變換。詳細介紹了電壓、電流、電阻信號采集測量電路的原理。該系統(tǒng)成本低,結(jié)構(gòu)簡單,使用方便,抗干擾能力強,適用于各類微弱信號的采集與變換。
關(guān)鍵詞:CS5550A/D轉(zhuǎn)換器;測量儀表;函數(shù)指針
0 引言
現(xiàn)代工業(yè)測量儀表以單片機為核心,具有數(shù)字顯示、開關(guān)量輸出、超限報警和通信等功能。用于測量各類工業(yè)現(xiàn)場的檢測信號,是工業(yè)控制自動化必不可少的重要檢測和控制裝置。廣泛應(yīng)用于電力、化工、冶金等部門。
隨著元件生產(chǎn)工藝、自動化水平的提高,對測量裝置的要求越來越高。為實現(xiàn)低漂移、高穩(wěn)定、高分辨率,使用了CS5550 A/D轉(zhuǎn)換器。本系統(tǒng)通過簡單的跳線,實現(xiàn)了單一儀表對電壓、電流、電阻等各信號的采集,通過強大的程序?qū)崿F(xiàn)各種信號的變換,真正達到了一表多用的智能型儀表。
1 硬件電路設(shè)計
儀表各種輸入信號經(jīng)跳線選擇,切換測量電路后直接送入CS5550 A/D轉(zhuǎn)換器,轉(zhuǎn)換成數(shù)字量送入CPU處理,輸入信號經(jīng)線性化、冷端補償、外線電阻補償?shù)冗\算后,得到測量值送LED顯示或經(jīng)RS-232傳給上位機或其它控制器,同時與用戶設(shè)定的報警值進行比較,從而驅(qū)動繼電器報警輸出。
系統(tǒng)結(jié)構(gòu)如圖1所示,測量電路與A/D轉(zhuǎn)換的模擬電路部分是系統(tǒng)設(shè)計的關(guān)鍵,直接影響到測量結(jié)果的精確程度。軟件的核心部分是將采集到的數(shù)字信號量轉(zhuǎn)換成準確測量結(jié)果,如將熱電偶的微弱電壓信號轉(zhuǎn)換成對應(yīng)的溫度值。
1.1 A/D轉(zhuǎn)換電路
本系統(tǒng)的A/D轉(zhuǎn)換采用Cirrus Logic公司的兩通道、低成本Delta-Sigma模數(shù)轉(zhuǎn)換器CS5550芯片,是一種便于設(shè)計、性價比高的小體積高集成解決方案。
CS5550集放大器、A/D轉(zhuǎn)換器、數(shù)字濾波器、基準電壓電路和雙向串口于一身。具有方便的片上偏移和增益校準功能,通過串口可重新設(shè)置完成初始化,可直接輸出精確測量結(jié)果。它是一個雙通道解決方案。
CS5550的模擬電源與數(shù)字電源分開提供,模擬電源部分使用了RC低通濾波電路,增強了系統(tǒng)的穩(wěn)定性。使用片上提供的基準電壓源,簡化電路設(shè)計。通過SPI接口與單片機進行通信。CS5550的外圍參考電路如圖2所示。
1.2 測量電路
測量電路如圖3所示,信號輸入接在接線端子上,通過跳線選擇輸入信號的測量電路。這里,跳線可以使用模擬開關(guān)替代,通過單片機控制進行切換。
當跳線1、2短接時,測量輸入電壓信號,可接熱電偶的信號輸入。
當跳線5、6短接時,測量輸入電流信號,電流經(jīng)過精密電阻r產(chǎn)生壓降,這樣只需知道電阻r的阻值,便可測得電流值,可接0~10mA、4~20mA標準信號。
當跳線3、4短接時,測量輸入電阻信號。電阻測量法可以采用恒流源法,它既可以消除引線電阻的影響,輸出電壓又不存在非線性,但是造價比較昂貴。
本系統(tǒng)采用三線式電阻測量法,如圖3中虛線部分為測量電阻的兩根信號線,電阻接地線為第三根線。因為引線通常采用的是同種材料、同等長度,所以引線上電阻產(chǎn)生的壓降、溫度漂移相互抵消。通過LM336提供穩(wěn)定的基準電壓源,消除電源不穩(wěn)定對電阻測量的影響。這種方案成本低、測量準確、穩(wěn)定。
1.3 鍵盤和LED顯示
本系統(tǒng)提供四個按鍵,接在單片機的P1.0~P1.3上,其功能分別為”菜單”、”+”、”一”、”確定”。按鍵信息通過定時掃描進行讀取,具有軟件去抖動,提高穩(wěn)定性。通過按鍵對系統(tǒng)進行控制,執(zhí)行校準、設(shè)定值、信號變換類型的切換等。LED顯示通過定時中斷來進行實時掃描,無閃爍,通過緩沖區(qū)機制存取,數(shù)據(jù)變化時只需更新緩沖區(qū)即可。
1.4 EEPROM存儲系統(tǒng)
EEPROM用于產(chǎn)品出廠時,系統(tǒng)校準參數(shù)永久保存,這樣系統(tǒng)上電工作時,首先從EEPROM中讀取系統(tǒng)的參數(shù)數(shù)據(jù)。在系統(tǒng)運行長時間后,系統(tǒng)參數(shù)可進行重新校準,確保測量的精確性。
1.5 RS-232通信接口
RS-232是系統(tǒng)與上位機或其它控制器的通信接口。通過RS-232可實時地輸出測量數(shù)據(jù)或報警信號數(shù)據(jù),作為其它控制器的輸入,并可通過RS-232對運行模式進行設(shè)定,為工業(yè)控制自動化和組態(tài)提供了方便。
1.6 開關(guān)量輸出電路
該電路作為控制器向外輸出信號之用。利用鍵盤將最高、最低設(shè)定值置入內(nèi)存,并保存到EEPROM中長久保存。儀表隨時比較采樣值和設(shè)定值,并把比較結(jié)果以開關(guān)量方式輸出,達到控制外設(shè)的目的。開關(guān)量輸出電路由光電耦合電路和輸出繼電器組成,如圖4所示。
2 軟件設(shè)計
軟件部分采用模塊化編碼,主要模塊有:系統(tǒng)參數(shù)校準模塊、數(shù)據(jù)計算與變換模塊、鍵盤和LED顯示模塊、CS5550操作模塊、93C46 EEPROM存儲模塊、RS-232通信模塊、開關(guān)量輸出控制模塊等。軟件系統(tǒng)的總體流程如圖5所示。
系統(tǒng)開機后,首先進行初始化,將校準過的系統(tǒng)參數(shù)從EEPROM中載入,對I/O、A/D等進行初始化。接下來進入程序主循環(huán),執(zhí)行鍵盤掃描,當有按鍵按下時,進行按鍵處理,根據(jù)按鍵組合,進行CS5550參數(shù)校準、測量電路校準、信號變換類型的切換或參數(shù)值設(shè)定等。若無按鍵按下,則對輸入信號采樣,計算,并根據(jù)設(shè)定的變換類型進行數(shù)據(jù)變換后得到信號的測量值,然后刷新顯示緩沖區(qū),更新顯示。得到的測量值再與開關(guān)量的高低設(shè)定值比較,輸出設(shè)定的相應(yīng)電平,達到控制的目的。最后如有通信要求,執(zhí)行相應(yīng)的子程序后回到循環(huán)起點。
2.1 校準模塊
首先短接圖3測量電路中跳線1、2,輸入相應(yīng)的基準信號,進行CS5550的偏移和增益系數(shù)校準。然后短接跳線5、6,輸入標準電流i后,如取10mA,讀取實際的測量值,即電阻r上的壓降Ur,則r的阻值為Ur/i,并將該結(jié)果保存到EEPROM中作為系統(tǒng)參數(shù)之一。最后,短接跳線3、4,下面詳細介紹電阻測量電路中參數(shù)V,R的校準,待測電阻rx的計算,其等效電路如圖6 所示。
如圖6所示,rx為待測電阻,溈流經(jīng)rx的電流,所產(chǎn)生的壓降為u,由歐姆定律得到式(1)、(2)。
整理后得式(3),其中V,R為未知數(shù),u是由本系統(tǒng)測得的數(shù)據(jù)。通過連接精密電阻箱來取代待測電阻,取定rx兩個值,如100Ω和400Ω。代入式(3),解方程組可得V和R的校準值,并存入EEPROM中作為系統(tǒng)參數(shù)。
經(jīng)校準后便可根據(jù)式(4)精確地計算出待測電阻rx的值。
2.2 計算與變換模塊
經(jīng)校準和初始化后,CS5550進入測量階段,通過最新獲得的N個瞬時測量值計算出轉(zhuǎn)換有效值后,以滿量程的相對百分比方式提供所有的測量結(jié)果。其中通道1具有可編程放大器增益選擇,當工作在增益為10的情況下,如果測量結(jié)果低于10%,則系統(tǒng)將其增益切換成增益為50;反之,當工作在增益為50的情況下,如果測量結(jié)果高于90%,則系統(tǒng)將其增益切換成10。這樣不僅測量的信號范圍寬,而且提高了系統(tǒng)測量的精確性。
從CS5550讀取測量結(jié)果轉(zhuǎn)化成相對百分比后,乘上相應(yīng)的滿量程值就可以得出實際測得的電壓值u,如果輸入的是電流值,則除以系統(tǒng)參數(shù)r即為所測得的電流值,如果是測量輸入電阻,則根據(jù)式(4)計算所測得的電阻值。
得到相應(yīng)測量信號的實際值后需再進一步地變換。如熱電偶輸入的是電壓信號,需變換成相對應(yīng)的溫度信號,而且電壓一溫度之問不是線性的變換關(guān)系。變換方法可以采用多項式曲線擬合方法或者小區(qū)間線性化處理方法。
本系統(tǒng)可進行十幾種的信號變換,真正做到一表多用,下面介紹信號變換切換的C語言實現(xiàn)方法,這是通過函數(shù)指針來實現(xiàn)的。首先聲明函數(shù)指針,
typedef float,(*convert_t)(float val);
然后定義該函數(shù)指針的一個變量,
convert_tconvert:
下面是一些信號變換的函數(shù)原形聲明,函數(shù)中的參數(shù)是測量的電壓值,函數(shù)返回的是變換后的值,
float lkConvert(float val): //熱電偶K級
float lsConveit(float val)://熱電偶S級
float Pt100Convert(float val)://熱電阻Pt100
float Cu50Conveit(float val): //熱電阻Cu50
信號變換切換方法示例如下,
SWitch(opNum){
case 1: //熱電偶K級
convert=lkConvert:
break:
……
}
確定了信號變換函數(shù),最后是函數(shù)調(diào)用,舉例如下,
unsigned long temp;
float result;
//從CS5550中讀取通道1數(shù)據(jù)
temp=read(Ox16);
//轉(zhuǎn)換成百分比
result=temp/(float)0x0l000000;
//乘上滿量程值
result*=fullScale;
//執(zhí)行信號變換
result=convert(result);
這樣result變量就是傳感器對應(yīng)的信號值,如溫度。
3 結(jié)束語
本系統(tǒng)使用CS5550進行硬件核心電路設(shè)計,性價比極高,使用簡單的配置實現(xiàn)一表多用,體積小、集成度高、運行可靠,有很好的推廣價值。