基于MSP430單片機(jī)的智能溫度檢測(cè)系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要: 論述了一種以16 位單片機(jī)MSP430F149 為控制核心, 利用數(shù)字化溫度傳感器DS18B20實(shí)現(xiàn)溫度測(cè)量的智能溫度檢測(cè)系統(tǒng)。詳細(xì)論述了該系統(tǒng)的硬件組成和軟件設(shè)計(jì), 給出了關(guān)鍵部分的電路圖及相應(yīng)的MSP430F149單片機(jī)溫度測(cè)量程序。實(shí)驗(yàn)結(jié)果表明, 該智能溫度檢測(cè)系統(tǒng)具有低成本、可靠性高、結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定、經(jīng)濟(jì)實(shí)用等特點(diǎn), 可根據(jù)不同需要應(yīng)用于多種工農(nóng)業(yè)溫度檢測(cè)領(lǐng)域。
1 引言
隨著設(shè)備的電氣化和自動(dòng)化程度不斷提高, 對(duì)設(shè)備和環(huán)境進(jìn)行實(shí)時(shí)監(jiān)控顯得尤為重要。傳統(tǒng)的測(cè)溫器件熱敏電阻測(cè)出的一般是電壓, 需要再轉(zhuǎn)化為相應(yīng)的溫度, 這就要有其它外部硬件的支持。因此硬件電路比較復(fù)雜, 設(shè)計(jì)成本也比較高。智能溫度檢測(cè)系統(tǒng)采用的是一種改進(jìn)型智能溫度傳感器DS18B20, 數(shù)字溫度傳感器通過(guò)單總線與單片機(jī)連接, 系統(tǒng)結(jié)構(gòu)簡(jiǎn)單, 抗干擾能力強(qiáng), 適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量, 也可應(yīng)用于倉(cāng)庫(kù)測(cè)溫、高層空調(diào)控制和農(nóng)業(yè)生產(chǎn)過(guò)程監(jiān)控等領(lǐng)域。
2 溫度檢測(cè)系統(tǒng)硬件構(gòu)成
該溫度檢測(cè)系統(tǒng)由主控制器MSP430F149、存儲(chǔ)模塊CAT24WC64、液晶顯示模塊HTM1602A、語(yǔ)音報(bào)警模塊ISD1420、矩陣鍵盤(pán)和單總線接若干溫度傳感器DS18B20組成。系統(tǒng)硬件框圖如圖1所示。由圖可見(jiàn), 多點(diǎn)溫度測(cè)量電路只占用了MSP430F149 的一個(gè)普通IO口, 系統(tǒng)資源利用率較高。
圖1 系統(tǒng)硬件總體電路圖
2. 1 DS18B20
2. 1. 1 DS l8B20的內(nèi)部結(jié)構(gòu)
DS18B20的內(nèi)部結(jié)構(gòu)如圖2 所示, 主要由四部分組成: 光刻ROM、溫度傳感器、非易失性的溫度報(bào)警觸發(fā)器TH 和TL 配置寄存器。DS18B20 可以有多種封裝形式, 在TO - 92封裝中, 如圖2 ( a )所示, GND 為接地引腳, DQ 為數(shù)據(jù)輸入/輸出引腳,VDD為可選的外部電源供電引腳, 在寄生電源工作方式下接地。光刻ROM中的64位序列號(hào)是出廠前被光刻好的, 它可以看作是該DS18B20的地址序列碼。64位光刻ROM 的排列是: 開(kāi)始8位( 28H )是產(chǎn)品類型標(biāo)號(hào), 接著的48 位是該DS18B20自身的序列號(hào), 最后8位是前面56位的循環(huán)冗余校驗(yàn)碼。
光刻ROM 的作用是使每一個(gè)DS18B20 都各不相同, 這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。
圖2 DS18B20整體結(jié)構(gòu)圖
2. 1. 2 DS18B20的工作過(guò)程
訪問(wèn)DS18B20的工作順序通常為: 初始化, 發(fā)送ROM 操作命令, 發(fā)送RAM 操作命令。通過(guò)初始化復(fù)位工作使主設(shè)備知道傳感器DS18B20存在并準(zhǔn)備工作。通過(guò)發(fā)送ROM 命令可以知道某個(gè)特定的DS18B20是否存在并且是否超過(guò)溫度警界值。
共有5種ROM操作命令, 分別是讀ROM ( 33H )、匹配ROM ( 55H )、搜索ROM ( FOH )、跳過(guò)ROM( CCH)、告警搜索命令( ECH )。通過(guò)發(fā)送RAM 操作命令, 可以設(shè)定電源供電方式, 啟動(dòng)溫度轉(zhuǎn)化, 讀寫(xiě)DS18B20的暫存區(qū)。共有6種功能命令, 分別是轉(zhuǎn)換溫度( 44H )、讀暫存區(qū)( BEH )、寫(xiě)暫存區(qū)( 4EH )、復(fù)制暫存區(qū)( 48H )、重調(diào)EEPROM ( B8H )、讀電源供電方式( B4H )。每條命令有不同代碼, 在總線上傳送時(shí), 由器件根據(jù)接收的命令代碼完成相應(yīng)的操作。因此DS18B20的單線通信功能是分時(shí)完成的, 它有嚴(yán)格的時(shí)序要求。
2. 2 MSP430F149
本設(shè)計(jì)的主控芯片采用美國(guó)德州儀器公司的16位帶FLASH 單片機(jī)MSP430F149。它具有處理能力強(qiáng)、運(yùn)行速度快、功耗低等優(yōu)點(diǎn)。其工作電壓為1. 8V ~ 3. 6V; CPU 運(yùn)行正交的精簡(jiǎn)指令集。片內(nèi)寄存器數(shù)量多。存儲(chǔ)器可實(shí)現(xiàn)多種運(yùn)算。
MSP430F149中斷源較多并可任意嵌套, 系統(tǒng)處于省電狀態(tài), 用中斷請(qǐng)求喚醒只需6 微秒。它還具有豐富的外圍器件。其16位定時(shí)器T imerA具有4種工作模式, 可同時(shí)進(jìn)行多個(gè)捕獲/比較功能; 48個(gè)可獨(dú)立編程的I /O 口; 2 個(gè)串行通信接口微秒ART0與微秒ART1; FLASH 存儲(chǔ)器多達(dá)60KB, 擦寫(xiě)次數(shù)可達(dá)10萬(wàn)次。該款芯片的超低功耗和良好的性能價(jià)格比使其非常適合工業(yè)監(jiān)控領(lǐng)域。
2. 3 語(yǔ)音報(bào)警模塊
對(duì)于溫度的超限情況進(jìn)行報(bào)警, 系統(tǒng)采用語(yǔ)音報(bào)警方式。語(yǔ)音報(bào)警由ISD1420 芯片控制, 它具有分段錄放功能, 每次錄放時(shí)間為20S。預(yù)先錄制好的溫度語(yǔ)音, 由MSP430單片機(jī)判斷被測(cè)溫度, 當(dāng)測(cè)量值高出或低于標(biāo)準(zhǔn)值時(shí)放出各自相應(yīng)的錄音, 從而實(shí)現(xiàn)溫度的報(bào)警功能。
2. 4 溫度顯示模塊
液晶顯示模塊HTM 1602A 是基于S6A0069 芯片構(gòu)建的2行l(wèi)6列字符型的LCD 液晶顯示模塊, 其字符顯示的分辨率是5 ×8 (即每個(gè)字符是由一個(gè)5× 8的點(diǎn)矩陣構(gòu)成)。基于S6A0069所編寫(xiě)的控制程序亦可以很方便地應(yīng)用于其它大部分字符型液晶顯示模塊。因此選用HTM 1602A 模塊顯示系統(tǒng)的測(cè)溫結(jié)果。
2. 5 數(shù)據(jù)存儲(chǔ)模塊
系統(tǒng)采用CAT24WC64 作為存儲(chǔ)芯片。
CAT24WC64是一個(gè)64k位串行CMOS EEPROM, 內(nèi)部含有8192個(gè)8位字節(jié), 具有一個(gè)32 字節(jié)寫(xiě)緩沖器, 該器件通過(guò)I2C 總線接口進(jìn)行操作, 有專門(mén)的寫(xiě)保護(hù)功能。測(cè)溫系統(tǒng)采用CAT24WC64用來(lái)集中記錄單總線上所有溫度傳感器的注冊(cè)信息, 即按地址順序存放DS18B20 的64位光刻ROM 序列碼。每個(gè)序列碼占用8字節(jié)空間, 系統(tǒng)管理程序會(huì)以8字節(jié)為基數(shù)計(jì)算傳感器注冊(cè)碼的地址序號(hào), 并反饋給用戶作為傳感器的標(biāo)識(shí)號(hào)。
2. 6 串口通信接口電路設(shè)計(jì)
將MSP430F149單片機(jī)采集的溫度數(shù)據(jù)傳輸?shù)缴衔粰C(jī), 利用MSP430 單片機(jī)的通訊接口連接到RS232串行口接收或發(fā)送數(shù)據(jù)和指令, 但是單片機(jī)的TTL電平和RS232不兼容, 因此使用MAX232進(jìn)行電平轉(zhuǎn)換, 其接口電路圖如圖3所示。
圖3 MSP430F149與PC機(jī)的串行接口電路
MSP430 有兩組通訊接口, UTXD0、URXD0 和UTXD1、URXD1, 這里用的是第一組。MSP430F149單片機(jī)3. 3V 的信號(hào)由UTXD0出來(lái)輸入到MAX232的T1 IN 腳, 轉(zhuǎn)換成±15V的信號(hào)由T1OUT 送到通訊標(biāo)準(zhǔn)接頭的2腳( RXD) , ±15V 的信號(hào)由通訊標(biāo)準(zhǔn)接頭的3腳( TXD )出來(lái)輸入到MAX232 的R1 IN腳, 轉(zhuǎn)換成±15V 的信號(hào)由R10UT 送到單片機(jī)的URXDO。
3 溫度檢測(cè)系統(tǒng)軟件設(shè)計(jì)
MSP430系列是一種具有集成度高、功能豐富、功耗低等技術(shù)特點(diǎn)的16位單片機(jī), 它采用c語(yǔ)言完成程序設(shè)計(jì), 大大提高了開(kāi)發(fā)調(diào)試的工作效率; 同時(shí)用c語(yǔ)言所產(chǎn)生的文檔資料也容易理解, 便于移植。
3. 1 下位機(jī)編程
系統(tǒng)程序設(shè)計(jì)包括主程序, 復(fù)位子程序, 報(bào)警和分辨率設(shè)置子程序, 溫度轉(zhuǎn)換子程序, 讀溫度子程序, 計(jì)算溫度和顯示溫度子程序等等。MSP430F149對(duì)DS18B20的訪問(wèn)流程是: 先對(duì)DS18B20初始化,再進(jìn)行ROM 操作命令, 最后才能對(duì)存儲(chǔ)器RAM 操作。程序流程圖如圖4 所示。下面就簡(jiǎn)要介紹MSP430系列單片機(jī)C 語(yǔ)言的幾個(gè)主要子程序。
圖4 程序流程圖
3. 1. 1 復(fù)位子程序
該程序的主要功能是負(fù)責(zé)DS18B20的復(fù)位, 以方便進(jìn)行以后的操作。復(fù)位要求主CPU 將數(shù)據(jù)線下拉500微秒, 然后釋放, DS18B20收到信號(hào)后等待16~ 60微秒左右, 后發(fā)出60 ~ 240微秒的存在低脈沖, 主CPU 收到此信號(hào)表示復(fù)位成功。
bit ResetDS18B20( )
{ unsigned char ;i
bit flag;
DS18B20= 0:
for( i= 0; i< 200; i+ + ) ; / /保持低電平500微秒
DS18B20= 1:
for( i= O; i< 30; i+ + ) ; / /等60微秒
flag= DS18B20; / /取DS18B20狀態(tài)
for( i= 0; i< 100; i+ + ) ; / /等300微秒
return flag; / / flag= 0復(fù)位成功, flag= 1, 復(fù)位不成功
}
3. 1. 2 寫(xiě)一個(gè)字節(jié)子程序:
CPU 將數(shù)據(jù)線從高電平拉至低電平, 產(chǎn)生寫(xiě)起始信號(hào); 15 微秒之內(nèi), 將所寫(xiě)的位送到數(shù)據(jù)線上;DS18B20在之后15~ 60微秒接收位信息; 寫(xiě)下一個(gè)位之前要有1秒以上的高電平恢復(fù); 將以上過(guò)程重復(fù)8次, 即完成一個(gè)字節(jié)的寫(xiě)操作。
vo idWRDS18B20( unsigned char data0)
{ unsigned char ,i ;j
for( j= 0; j< 8; j+ + )
{
DS18B20= 0; / /高電平拉到低電平, 產(chǎn)生寫(xiě)起始信號(hào)
for( i= 0; i< 1; i+ + ) ;
DS18B20 = da ta0& 0x01; / /15微秒內(nèi)寫(xiě)一位
for( i= 0; i< 20; i+ + ) ; / /等60微秒, DS18B20完成采樣
DS18B20= 1; / /高電平恢復(fù)
data0= data0> > 1; / /右移, 為下一位準(zhǔn)備}
}
3. 1. 3 讀一個(gè)字節(jié)子程序
CPU 將數(shù)據(jù)線從高電平拉到低電平1微秒以上, 再拉到高電平, 產(chǎn)生讀起始信號(hào); 15微秒之內(nèi),CPU 讀一位; 讀周期為60微秒, 讀下一個(gè)位之前要有1微秒以上的高電平恢復(fù); 將以上過(guò)程重復(fù)8次,即完成一個(gè)字節(jié)的讀操作。
unsigned charRDDS18B20( )
{ unsigned char ,i ,j data0= 0;
bit temp;
for( j= 0; j< 8; j+ + )
{ DS18B20= 0; / /高電平拉到低電平1微秒以上
for( i= 0; i< ;l i+ + ) ;
DS18B20= 1; / /再拉到高電平, 產(chǎn)生讀起始信號(hào)
for( i= 0; i< 1; i+ + );
temp= DS18B20; / /15微秒之內(nèi)讀一位
for( i= 0; i< 20; i+ + ); / /等60微秒
data0= dataO > > 1; / /為下一位準(zhǔn)備
if( temp= = 1) data0= dataO |0x80;
else data0= data0& 0x7;f
DS18B20= 1; / /高電平恢復(fù)
for( i= O; i< 1; i+ + ); }
return data0; }
3. 2 上位機(jī)軟件編程
系統(tǒng)采用MSCOMM 控件實(shí)現(xiàn)VC ++ 與單片機(jī)之間的數(shù)據(jù)交換, 具有程序?qū)崿F(xiàn)簡(jiǎn)便、程序模塊化、工作可靠等優(yōu)點(diǎn), 并能滿足多數(shù)情況下的工控要求。
使用MSCOMM控件主要是通過(guò)事件來(lái)處理串行口的交互??丶腗SCOMM 事件負(fù)責(zé)捕獲或處理這些通訊事件和通訊錯(cuò)誤。
4 結(jié)束語(yǔ)
測(cè)溫系統(tǒng)采用了集成度高、功耗低的MSP430F149 為核心微處理器, 通過(guò)傳感器DS18B20實(shí)現(xiàn)對(duì)溫度測(cè)量, 并進(jìn)行存儲(chǔ)和顯示。實(shí)驗(yàn)表明: 當(dāng)外界溫度試驗(yàn)的范圍設(shè)定在0℃ ~ 50℃ ,可確保測(cè)量誤差不超過(guò)±0. 5℃ , 在試驗(yàn)板上顯示溫度精確到0. 0625℃, AD轉(zhuǎn)換的時(shí)間是750ms, 傳輸?shù)木嚯x是40m。另外, 在該系統(tǒng)的基礎(chǔ)上也可以擴(kuò)展其他信號(hào), 如濕度, 壓力等。