基于CS5550的工業測量儀表設計
如圖6所示,rx為待測電阻,溈流經rx的電流,所產生的壓降為u,由歐姆定律得到式(1)、(2)。本文引用地址:http://www.104case.com/article/195507.htm
整理后得式(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進行硬件核心電路設計,性價比極高,使用簡單的配置實現一表多用,體積小、集成度高、運行可靠,有很好的推廣價值。
評論