江漢大學物理與信息工程學院 艾紅朝 漆為民 段金杰
基于VB和MSP430FG4618的溫度智能監測系統
江漢大學物理與信息工程學院 艾紅朝 漆為民 段金杰
本文以16位超低功耗MSP430系列單片機為下位機處理核心,研制一套溫度監控系統。該系統采用具有16位分辨率的DS18B20作為溫度傳感器,能夠很精確的采集溫度信號。通過串口將采集到的數據在LCD上顯示出來,并且發送給上位機,上位機利用VB6.0設計出一套監測界面,能夠實時的觀測到當前溫度值以及歷史溫度值,最終實現人機交互。通過現場調試結果證明,該系統通訊可靠性高,且節約資源,在現實生活中有一定的利用價值。
DS18B20;MSP430FG4618;PC機
溫度是基本的物理量之一,不管是工農業領域還是在日常生活中都是需要經常測試的重要參數[1],常用的測溫方法有電阻式、熱電偶式、輻射式等等,但檢測電路復雜且結果精確度不高。而有些環境對溫度的要求則非常高[2]。比如化工過程控制領域、生物反應領域等。傳統的測溫已經不能滿足要求,而DS18B20溫度傳感器分辨率能夠達到0.0625,測溫范圍為-55--125oC,在溫度為-10--85oC時精度為±0.5oC[3]。以MSP430為下位機作為核心控制系統,負責處理現場溫度值,上位機通過串口與MSP430進行通信聯絡以及人機交互,從而對溫度做到實時的監控。
該系統控制核心采用的是德州儀器公司的MSP430FG4618單片機,該單片機內部具有80個通用I/O 引腳、12位 A/D 轉換器、16位定時器、同步/ 異步通訊接口(USART)、DMA等。能夠滿足數據采集和處理要求[4]。該嵌入式系統總體設計如圖1所示。系統由LCD顯示部分、溫度采集部分、報警處理部分、MSP430核心部分、PC機等共同構成。溫度傳感器DS18B20獲取溫度值。單片機對數據進行處理,一方面與DS18B20內部事先設定的最高和最低溫度比較,如果所測溫度高于或者低于設定值,則進行報警處理,并把當前溫度通過LCD顯示出來;另一方面通過MAX232將數據分高八位和低8位發送給PC機,VB先對數據進行計算,然后通過界面顯示,能夠非常清楚的觀測到溫度變化情況。

圖1 系統總體設計
下位機采用MSP430為主控制核心,MSP430是一種性價比非常高的單片機,采用簡單易懂的C語言來編寫程序,大大縮短了開發時間。軟件設計過程中用模塊化設計方法,便于調試以及后期對系統做進一步的擴展。軟件編程由主程序、LCD顯示程序、溫度復位程序、報警程序、溫度讀取程序,串口通信等構成,下位機軟件設計如圖2所示,下面簡要介紹溫度連接電路和溫度轉換部分程序。

圖2 下位機軟件設計
DS18B20只有三個引腳,其中VCC接地,VDD接3.3V電壓,通過單總線端口DQ進行數據的傳輸,對時序的精確要求比較高,硬件連接十分簡潔,MSP430FG4618的P1.6端口與DS18B20的DQ口連接。溫度連接電路如圖3所示。

圖3 溫度連接電路
Reset_18B20(); //初始化
WriteSkip_18B20(0xcc); //發送跳過讀取產品ID號命令
WriteConvert_18B20(0x44); //發送溫度轉換命令
Delay();
Reset_18B20();
WriteSkip_18B20(0xcc);
WriteRead_18B20(0xbe); //發送溫度轉換命令
上位機采用VisualBasic6.0進行界面設計,用Frame將界面分塊處理,在工程中添加MSFlexGrid控件用來顯示歷史數據、兩個Text框顯示當前溫度值和系統狀況、串口設置、MSComm控件實現與下位機之間的數據傳輸[5]等。
MSComm控件是微軟公司提供的一種通信控件,部分屬性如下:
(1)ComPort 通信端口的設置。本系統設其為5。
(2)Settings 串口相關設置,其格式為:“BBBB,P,D,S”其中,BBBB表示波特率;P表示奇偶位判斷方法;D表示數據位;S表示停止位。本系統設其為“9600,N,8,1”。
(3)Input 讀取接收緩沖區的數據。
(4)Potropen 通信串口的狀態。Potropen=True(打開):Potropen=Fasle(關閉)
(5)InputLen用于設置一次性從接收緩沖區讀取字節數。
(6)RThreshold為一閾值。控制接收緩沖區字符的多少,當達到設定值時產生OnComm事件。
上位機程序設計主要負責與下位機進行串口的通信設置以及對接收到的數據進行處理。上位機程序設計如圖4所示。下面簡要介紹串口初始化程序和上位機通信程序。

圖4 上位機軟件設計
3.2.1 串口初始化程序
該程序主要用于串口部分的初始化,如通信端口的選擇、串口的設置、數據接收類型等等。部分程序的代碼如下:
With MSComm1
.CommPort = 5 ‘
.Settings = “9600,N,8,1” ‘
.InputMode = comInputModeBinary
.RThreshold =1 ‘接收一個字節后產生OnComm事件,處理相關事件
.SThreshold = 0
.PortOpen = True ’打開端口
End With
3.2.2 上位機通信程序
inbuf = MSComm1.Input
onbuf = MSComm1.Input
num = UBound(inbuf)
ReDim indata(0 To num) As Long
For i = 0 To num
indata(i) = inbuf(i) * 256 + onbuf(i) ‘合并高低8位
Next
系統上電后,點擊“運行”按鈕即可出現溫度監測系統界面,如圖5所示。顯示當前日期,進行相應的端口設置后點擊“開始接收”按鈕,下位機通過串口將數據送給上位機,通過監測系統界面能夠及時了解溫度的情況,點擊“開始記錄”按鈕,則會保存歷史溫度值,記錄溫度值的時間間隔可通過VB6.0中的Timer控件來設置,也可以停止記錄,點擊“清空數據”按鈕,則會清空歷史溫度值。經過調試,該系統能夠達到預期結果。

圖5 溫度監測系統界面
VB是一種簡單易懂而高效地開發應用軟件的工具,只需在設計工程中對不同的控件寫入少量的程序即可,廣泛地運用在PC機和單片機之間的通信,MSP430系列單片機最顯著的特點就是其超低功耗,且功能十分強大,該系統根據不同的需要可以運用到多種溫度監測系統中。
[1]鄭惟輝.單片機智能溫度控制系統的設計[J].黃山學院學報,2008,10(5):23-24.
[2]張軍,陳慧麗.基于MSP430單片機和DS18B20的數字溫度計[J].電子設計工程,2010,18(11):106-107.
[3]江太輝,鄧展威.DS18B20數字式溫度傳感器的特性與應用[J].電子技術,2003,(12):46-48.
[4]王曉銀,王彥瑜,蔣鋒.基于MSP430F149單片機的溫度監測系統的設計[J].微計算機信息,2006,22(72):77-78
[5]郭武滔.基于VB和PLC溫度循環測試系統的研究與實現[D].上海:東華大學出版社,2014.25-30
[6]吳愛萍.基于VB與單片機的溫度測控系統的設計[J].現代電子技術,2010,8(319):207-209
江漢大學研究生科研創新基金項目(008-2015-03)。
艾紅朝(1990—),男,研究生,研究方向:化工過程檢測及自動化。
艾紅朝。