基于TMP04的PIC單片機測溫設(shè)計
1 引言
在大多數(shù)測控系統(tǒng)中,溫度都是必不可少的檢測量,溫度傳感器也是測控系統(tǒng)中十分重要的傳感器件。隨著數(shù)字 化傳感器技術(shù)的不斷發(fā)展,出現(xiàn)了各種類型的數(shù)字溫度傳感器。數(shù)字溫度傳感器可以直接將被檢測的溫度信息以數(shù)字化形式輸出,與傳統(tǒng)的模擬式溫度傳感器相比,具有測量精度高、功耗低、穩(wěn)定性好、外圍接口電路簡單特點。而單片機微處理器越來越豐富的外圍功能模塊,更加方便了數(shù)字式溫度傳感器輸出信號的處理。數(shù)字式溫度傳感器主要的輸出模式有PWM、SPI、I2C、SMBus等,當(dāng)今主流的單片機幾乎都支持這種接口方式,文中以PWM輸出模式為例,討論了PIC單片機對于這種輸出模式的測溫方案。PWM模式輸出的數(shù)字溫度傳感器如TMP03/04、TPM05/06等,都是將傳感器件測得的溫度信息數(shù)字化后,經(jīng)過一定的輸出編碼,調(diào)制成占空比與溫度成正比的數(shù)字脈沖信號單線輸出。輸出信號接入微處理器后,只需測得數(shù)字脈沖信號的占空比就可由軟件運算得到相應(yīng)的溫度信息。而對于微處理器來說,輸入信號占空比的計算方式多種多樣以PCI系列單片機為例,在PIC16、PIC17、PIC18中均可由CCP模塊的捕捉功能、RB端口電平變化中斷功能,外部中斷功能等多種方法實現(xiàn)。以下將分別作以介紹。
2 硬件設(shè)計
由于數(shù)字式溫度傳感器直接輸出數(shù)字脈沖信號,無需后續(xù)的AD轉(zhuǎn)換和溫度補償,所以基于數(shù)字式溫度傳感器的測溫電路硬件非常簡單,僅需要單片機微處理器和傳感芯片就可實現(xiàn)。除了個別集電極開路輸出的傳感芯片在接入單片機時需要外加上拉電阻以外,其余的傳感芯片可與單片機直接相連。在此選用PCI系列單片機作為微處理器,ADI公司的TMP04數(shù)字式溫度傳感器作為傳感芯片。
2.1 PIC系列單片機簡介
PIC系列單片機是美國微芯(Microchip)公司生產(chǎn)的8位COMS單片機,它內(nèi)部采用哈佛總線結(jié)構(gòu),使得全部指令單字節(jié)、單周期化,有利于提高CPU執(zhí)行搜集的速度,從而提高單片機的運行速度。它的指令系統(tǒng)采用精簡指令集(R1SC)技術(shù),尋址方式非常簡單,便于程序的編寫與調(diào)試。它豐富的外部功能模塊更是為外設(shè)提供了極其方便的接口,使得許多外部設(shè)備可以直接與微處理器進(jìn)行通信。本設(shè)計采用的PIC18F458具有最大25mA的拉/灌電流、3個外部中斷、4個定時器/計數(shù)器、2個捕捉/比較/脈沖調(diào)制(CCP)模塊、SPI和I2C二種工作方式的主同步串行模塊(MSSP)、可尋址的USART模塊、高級10位8通道模數(shù)轉(zhuǎn)換器以及集成的CAN總線模塊等多種外圍功能模塊。
2.2 數(shù)字式溫度傳感器TMP04簡介
TMP04是ADI公司生產(chǎn)的一款低功耗、高精度、寬動態(tài)輸入范圍的PWM模式輸出的數(shù)字式溫度傳感器。TMP04是三端單線式器件,其總體功能框圖如圖1所示,測量結(jié)果以PWM編碼式數(shù)字脈沖信號在DOUT引腳輸出,輸出信號的占空比與所測溫度成正比,其輸出編碼格式以及具體的溫度計算公式如圖2所示。其中,T1一般為10ms,最大不趕12ms,T2隨著溫度的變化而變化,輸出不同占空比的數(shù)字脈沖信號時表示不同的溫度.
TMP04內(nèi)部含有一個由輸入采樣器、模擬求和器、積分器、比較器、1位DAC以及數(shù)字濾波器構(gòu)成的∑-Δ型模數(shù)轉(zhuǎn)換器,如圖3所示。該模數(shù)轉(zhuǎn)換器具有分辨率高、線性度好、抗混疊哭聲和量化噪聲能力強等諸多優(yōu)點,非常適用于數(shù)字式溫度傳感器等微傳感系統(tǒng)。由于∑-Δ型模數(shù)轉(zhuǎn)換器的作用,TMP04的最大功耗不超過6.5mW,全程線性誤差只有0.5℃,穩(wěn)定性非常高。同時TMP04的動態(tài)輸入范圍比較大,精度也比較高,在-25℃~125℃溫度范圍內(nèi)誤差僅為1.5℃。TMP04還有一個與其結(jié)構(gòu)、功能很類似的同類產(chǎn)品TMP03,二者唯一的區(qū)別就是TMP03的輸出級采用集電極開路電路,輸出電流可達(dá)5mA,驅(qū)動能力強,可驅(qū)動光耦實現(xiàn)遠(yuǎn)程測溫,接入單片機時需要外接上拉電阻,而TMP04的輸出級采用互補型MOSFET電路,其輸出電平與COMS/TTL電路兼容,可直接接入單片機。
3 軟件設(shè)計
由PWM編碼的原理可知,要測出PWM數(shù)字脈沖信號所攜帶的溫度信號,只要檢測出數(shù)字脈沖信號的占空比即可,以PIC18系列為例,一個單片機有9個不同的端口(2個CCP模塊端口、4個RB電平變換中斷端口、3個外部中斷INT端口),可以測出TMP04的輸出溫度,這為PWM編碼式溫度數(shù)字傳感器提供了相當(dāng)靈活的接口方式和更為廣闊的應(yīng)用空間。
3.1 由CCP模塊的捕捉功能實現(xiàn)
捕捉/比較/脈寬調(diào)制CCP模塊是PIC單片機特有的外圍功能模塊,它與TMR1和TMR2配合使用實現(xiàn)輸入捕捉、輸出比較和脈寬調(diào)制輸出等功能。其中輸入捕捉模式用于測量引腳輸入信號的周期、頻率、脈寬、信號的到達(dá)時刻以及消失時刻等。結(jié)合TMP04輸出信號的特點,可以利用CCP模塊分別測量出TMP04輸出信號的高電平脈寬T1和低脈寬T2,然后間接算出信號的占空比,從而得到TMP04輸出的溫度信息。詳細(xì)的程序流程圖如圖4所示。
與其它單片機不同,PIC單片機的RB4-RB7端口具有輸入電平變化中斷功能,當(dāng)RB4-RB7任意一個引腳上的輸入電平發(fā)生變化(由高變低或由低變高)時,都可以引起CPU中斷,執(zhí)行中斷處理程序。因此,可以將TMP04的輸出信號輸入RB4,當(dāng)輸入RB4的信號發(fā)生跳變時,利用RB4的電平變換中斷調(diào)用中斷處理程序分別對信號高低電平的脈寬進(jìn)行測量,從而間接算出信號的占空比,最終得到TMP04輸出的溫度信息。程序流程圖如圖5所示。
由外部中斷INT實現(xiàn)與由RB端口電平變化中斷實現(xiàn)的設(shè)計方案類似,都是由單片機響應(yīng)電平變化產(chǎn)生中斷,再通過中斷服務(wù)程序計算高低脈寬,從而得到TMP04輸出信號的占空比和所攜帶的溫度信息。所以由外部中斷INT實現(xiàn)和由RB端口電平變化中斷實現(xiàn)程序類似,只是將中斷源改為INT0(INT1,INT2均可)中斷,使能INT0中斷使能位INT0IE,判斷INT0中斷標(biāo)志位INT0IF,由于INT0輸入為RB0引腳,上例中設(shè)RB0為輸入,并由INTEDG0判斷高低電平即可,注意要啟動RB口的弱上拉功能,其總體的程序流程程圖類似圖5。
4 實驗數(shù)據(jù)對比
利用簡單的電路及以上軟件程序在室溫為24.1℃時,筆者用三種方法測量溫度,為了得到更好的精度,每種分別設(shè)計了泄編和C評議二種測溫程序,其結(jié)果與平均值如表1所示。
表1 測試結(jié)果與平均值
方 法 | 測 溫 結(jié) 果 | 平均值 | |
匯編程序 | C程序 | ||
CCP捕捉模塊 | 23.9 | 23.9 | 23.9 |
RB電平變化中斷 | 24.5 | 24.1 | 24.3 |
INT0外部中斷 | 24.4 | 24.4 | 24.4 |
5 結(jié)束語
設(shè)計基于PWM模式輸出的數(shù)字式溫度傳感器的測溫系統(tǒng)時,關(guān)鍵是對傳感器輸出的脈沖信號高低電平脈寬的測量。由于測量脈寬是由定時器在高電平(低電平)期間計數(shù)實現(xiàn)的,所以單片機的指令周期將直接影響到測量的精度,指令周期越短精度越高。但是如果指令周期短而晶振頻率高,將會引入高頻干擾,所以晶振要根據(jù)系統(tǒng)實現(xiàn)情況選取。此外還要注意PIC單片機定時器預(yù)分頻比的設(shè)定,應(yīng)在保證測量傳感器信號脈寬進(jìn)不會發(fā)生溢出的情況下使分頻比最小,這樣有利于提高測量精度。
評論