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