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