基于MSC1210的多路高精度溫度采集系統(tǒng)模塊
在被測溫度變化緩慢的情況下,可以使用多路掃描開關配以一個高精度測溫表進行多路溫度測量以及數(shù)據(jù)采集。但在溫度測量點數(shù)目較多、被測溫度變化較快的場合,如大量熱電阻、熱電偶的自動計量檢定系統(tǒng)以及高溫滅菌箱自動驗證系統(tǒng)中,傳統(tǒng)的掃描式多路溫度測量系統(tǒng)就無法滿足要求了。近年來,隨著高精度A/D轉換器件價格的不斷下降以及A/D轉換器件功能的不斷完善,研制廉價的多路、快速、高精度溫度采集系統(tǒng)成為可能。
美國德州儀器公司(TEXAS INSTRUMENTS)新近推出了一種功能很強的帶24位A/D轉換器的微處理器MSC1210。MSC1210具有一些增強特性,特別適合測量高精度溫度、壓力傳感器等輸出的微弱信號。
本文介紹以MSC1210作為測量、信號處理以及通訊核心的多路高精度溫度采集系統(tǒng)模塊。該系統(tǒng)測量通道易于擴充,溫度測量精度高,可以快速地進行多路高精度溫度測量。
1 多路高精度測溫系統(tǒng)框架
系統(tǒng)由主機與多個智能測溫模塊組成。模塊與主機之間通過光電隔離的SPI接口進行通訊,使用帶有CRC糾錯的自定義指令集控制數(shù)據(jù)傳輸,主機帶有計算機接口(RS232串口以及USB接口)。系統(tǒng)框架參見圖1。
智能測溫模塊由MSC1210微轉換器構成,模塊本身具有完整的信號調理、A/D轉換、數(shù)據(jù)修正計算及變換、內部校準等功能。為了避免外部干擾對A/D轉換的影響,SPI接口使用高速光電耦合電路,并采用模塊自帶的穩(wěn)壓電路供電。由于一個模塊只能處理1~4路溫度,因此可以同步進行多組模塊的溫度測量,大大加快了多點溫度測量的速度。主機用來控制測溫模塊,從測溫模塊中讀取溫度數(shù)據(jù)并處理,同時完成人機接口以及其它功能。視應用場合的不同,主機可以使用多種類型的單片機,這里選用ATMEL公司的ATmega128。該款CPU采用Harvard流水線結構以及RISC指令,并具有較大程序容量(128KB)的FLASH,在16MHz主頻下可以達到16MIPS的處理速度。
2 MSC1210的增強功能及使用注意事項
作為智能高精度測溫模塊的核心,MSC1210完成了微弱信號的多路切換、信號緩沖、PGA編程放大、24位Σ-ΔA/D轉換、數(shù)字濾波、數(shù)據(jù)處理、信號校準以及SPI通訊等功能。
MSC1210集成了一個8通道24位Σ-ΔA/D轉換器,采用8051兼容內核。與筆者之前使用的ADuC824相比,其有如下增強的功能:
(1)CPU工作頻率可達33MHz,每條指令只需4個時鐘周期,運算速度較快。
(2)采用非常靈活的FLASH與SRAM存儲器配置,可以對片上FLASH進行分區(qū),根據(jù)需要設定程序FLASH與數(shù)據(jù)SRAM所占的比例。讀寫次數(shù)可達一百萬次,數(shù)據(jù)可保存100年。
(3)片上RAM為1280B,有34個高電流驅動I/O,可以設定外部存儲器的存取時間,使用雙數(shù)據(jù)指針提高存取速度,具有完善的節(jié)電功能,還有電壓監(jiān)視器、21個中斷源、3個16位定時計數(shù)器以及內部時間間隔計數(shù)器(TIC)。
(4)自帶BOOT ROM,可以調試使用或在程序中調用內置固化程序,完成在線調試、數(shù)據(jù)采集、UART通訊以及讀寫FALSH等工作,方便了編程以及調試。
(5)片上24位Σ-ΔADC具有一些增強特性:8路輸入通道可以任意配置為單端或差分輸入;有快速、Sinc2、Sinc3 三種數(shù)字濾波,同時有自動數(shù)字濾波功能,可以加快A/D轉換輸出;帶PGA偏置DAC,可以不引入額外誤差而擴大測量范圍;自帶一個32位累加器,可以對ADC輸出數(shù)據(jù)作快速平均處理。
(6)自帶高精度電壓標準,精度為0.2%,漂移為
5ppm/°C,可以節(jié)省空間以及器件成本,也可輸出該電壓標準或外接電壓標準。
(7)片上16位PWM,可以作為DAC輸出來源。
(8)增強的SPI接口可以使用DMA方式傳輸數(shù)據(jù),在DMA方式下,可以間接尋址RAM,設定多達128B的發(fā)送接收FIFO;具有完整的端口驅動以及發(fā)送接收中斷設定,適合大批量的數(shù)據(jù)傳輸,同時占用CPU資源較少。
MSC1210功能較強且易于使用,但因為是新器件,參考資料較少。筆者在使用過程中發(fā)現(xiàn)需要注意如下問題:
(1)MSC1210片內FLASH分區(qū)只能通過對HCR0以及HCR1這兩個硬件配置寄存器事先編程來進行,在程序運行過程中無法設定或更改分區(qū)比例。在程序運行中讀寫FLASH時,要注意讀寫地址與調試時的地址不同,具體應參考存儲器分配表;用戶程序無法直接讀寫FLASH,需要調用BOOT ROM中的讀寫函數(shù)來進行;與AVR等芯片的EEPROM不同,寫入FLASH之前必須先進行擦除操作,BOOT ROM中有可調用的塊擦除子程序,可以在匯編或C程序中調用。
(2)在做A/D轉換時,每次更改PGA放大倍數(shù)需要重新校準,在需要頻繁切換輸入通道的場合,建議設定特殊寄存器ADCON1的SM1~0位為00,即進入自動模式數(shù)字濾波。這樣當通道切換后,隨著A/D采樣次數(shù)的增加,數(shù)字濾波依次為快速轉換、Sinc2、Sinc3數(shù)字濾波,可以最大限度地提高轉換速度和轉換精度。
(3)BOOT ROM中固化的程序對于MSC1210的編程和調試非常關鍵,其中部分程序可以在用戶程序中直接調用,完成數(shù)據(jù)采集、UART輸入輸出等重要功能??梢酝ㄟ^串口或并口進行編程。
(4)使用TI提供的下載工具及調試終端,可以對MSC1210實現(xiàn)在線調試。這種調試會占用UART0資源,同時輔助中斷的入口地址也有變化,這在編程時需要注意。也可以利用Windows自帶的超級終端進行調試。與TI終端不同,Windows超級終端不能自動初始化MSC1210使之進入調試狀態(tài),需要人工進行調試復位。
3 高精度測溫模塊的硬件描述
MSC1210最多可以配置4組差分輸入通道:對于標準四線熱電阻的測量,需要兩組通道來分別測量驅動電流及電壓;對于標準熱電偶的測量,如果采用冰點作為冷端補償,需要一組差分通道;如果采用自帶冷端測量,則往往需要另外兩組通道測量冷端熱電阻的溫度。因此,對于標準熱電阻測量,同一個模塊最多有兩路測溫通道;對于標準熱電偶測量,如果采用統(tǒng)一的冷端補償,最多可以有4路測溫通道。同一模塊的不同測溫通道的切換需要時間穩(wěn)定信號以及重新建立ADC測量輸出,在有速度要求或需要進行多值平均的情況下,為了得到較快的測溫速度,每個模塊的測溫路數(shù)會相應減少。這里介紹單通道標準熱電阻測溫模塊,其硬件框圖如圖2所示。
模塊采用獨立的模擬供電(5V)和數(shù)字供電(3V)。在印制板設計上,數(shù)字地與模擬地分離,在MSC1210芯片下相連。同樣,為了進一步減少外界和數(shù)字電路對模擬電路部分的干擾,SPI接口與外部之間采用高速光電耦合連接。所有的電源以及信號接口采用統(tǒng)一的兩邊插針形式,便于直接插入主機母板。這里將比較有特色的標準熱電阻測量以及信號調理電路繪出,如圖3所示。
在圖3中,分壓電阻R12與R13為運算放大器U2提供一個參考電壓,在R10上產生一個恒定的電流,經(jīng)Q1輸出。為了減少高精度低溫漂電阻的使用數(shù)量,R10、R12、R13均采用普通電阻。使用高精度低溫漂電阻Rr作為電流檢測電阻,將輸出電壓信號經(jīng)R2、R3送往MSC1210的一組差分輸入端,恒定電流通過四線標準鉑電阻Rs,將產生電壓經(jīng)R4、R5送入MSC1210的另一組差分輸入端,經(jīng)MSC1210進行四線法測量電阻的計算,以消除鉑電阻溫度計引線的影響。R2、R3、R4、R5是限流電阻,防止輸入電壓過高損壞MSC1210;D1、R6、C12提供一個參考電壓,使MSC1210有合適的差分電壓輸入。由于使用MSC1210的內置電壓標準輸出,電容C9、C10、C11是不可缺少的。MSC1210具有內置PGA(1~128),因此無需放大電路即可直接測量微弱信號。
4 高精度測溫模塊軟件的描述
在多路高精度測溫系統(tǒng)中,測溫模塊能獨立進行數(shù)據(jù)采集、擬合修正、分度轉換、與下位機的數(shù)據(jù)通訊,并通過SPI接口向上位機(主機)發(fā)送測量到的溫度數(shù)據(jù),接收上位機發(fā)來的控制指令,進行參數(shù)設置及校準操作。與上位機通訊的指令采用不定長的ASC代碼指令,用不同的信令頭(SOT)代表不同的控制,并有CRC糾錯以保證數(shù)據(jù)正確傳輸,信令有統(tǒng)一的結束碼(EOT)。
在測溫模塊的MSC1210的程序功能中,分度轉換是重要的組成部分,也是耗時較多的計算過程,這里簡要說明一下。
對于高精度溫度測量,需要考慮的一個重要問題是溫度傳感器的選擇。對于熱電阻與熱電偶,有標準傳感器與工業(yè)傳感器之分,這里選擇精度較高的標準傳感器,并根據(jù)ITS-90國際溫標以及中國相關計量檢定規(guī)程進行分度轉換。
與工業(yè)熱電阻、熱電偶不同,標準熱電阻或熱電偶的分度計算是一個比較復雜的問題,簡單的查表計算或曲線擬合一般很難達到分度轉換的精度要求。以標準鉑電阻溫度計為例,它使用一組規(guī)定的定義固定點和參考函數(shù)以及相應的差值函數(shù)內插,在0~419.527°C溫區(qū)內,溫度t由下列公式確定:
其中,Wr(t)為參考函數(shù),Ci與Di為系數(shù),ΔW8(t)為差值函數(shù),W(t)為電阻比,a8與b8為具體標準鉑電阻溫度計的分度系數(shù),可以通過具體溫度計校準結果WZn、WSn、W100等參數(shù)計算得到。在選擇了相應的熱電阻之后,將該參數(shù)通過SPI接口的通訊控制指令輸入測溫模塊。
可以看到,MCU只有具有較快的運算速度,才能在每次ADC輸出數(shù)據(jù)后及時將電阻值轉換為溫度值,分度計算、誤差修正、數(shù)值處理以及通訊控制等均由MSC1210完成。輸出到上位機的是測量得到的溫度值,這樣上位機即使在配置多個測溫模塊的情況下也能從容完成處理工作。
MSC1210是較有特色、功能較強的一種新器件,特別適合于智能變送器、高精度測量儀器儀表等應用領域。這套多路高精度溫度采集系統(tǒng)充分利用了MSC1210的新功能、新特性,采用智能測溫模塊與主機通訊的設計方式,以較少的成本完成了多點快速溫度測量。筆者使用這套多路高精度溫度采集系統(tǒng)作為基礎硬件,配以PC機的控制軟件,完成了多套應用于不同場合的自動溫度測量及控制系統(tǒng),實際應用情況良好。