國(guó)建嶺
(太原科技大學(xué) 電子信息工程學(xué)院,太原030024)
在工農(nóng)業(yè)生產(chǎn)中,經(jīng)常要對(duì)實(shí)時(shí)溫度進(jìn)行檢測(cè)。在溫度數(shù)據(jù)的采集領(lǐng)域,傳統(tǒng)的方式主要是在多點(diǎn)放置溫度測(cè)量?jī)x器或者是放置溫度計(jì),進(jìn)行人工讀取實(shí)際數(shù)值。這樣不僅操作維護(hù)不方便,而且還浪費(fèi)大量的人力物力去采集溫度。另外,在一些惡劣的工業(yè)現(xiàn)場(chǎng),以人工方式直接去讀取測(cè)量?jī)x器的溫度也不現(xiàn)實(shí)。本文提出了一種基于單片機(jī)技術(shù)和集成溫度傳感器DS 18 B 20的多路溫度測(cè)試儀,該系統(tǒng)可以方便地實(shí)現(xiàn)多路溫度數(shù)據(jù)的遠(yuǎn)程實(shí)時(shí)采集。并且該系統(tǒng)可以與上位機(jī)實(shí)現(xiàn)通信,以便數(shù)據(jù)報(bào)表的生成與打印,提供良好的人機(jī)界面。該系統(tǒng)具有抗干擾性強(qiáng)、測(cè)量精度高等優(yōu)點(diǎn)。
系統(tǒng)以高性能、低功耗單片機(jī) MSP430F1232為核心控制器,集成多路溫度傳感器DS18B20、數(shù)據(jù)存儲(chǔ)器、LCD液晶顯示模塊、RS232以及電源模塊。單片機(jī)負(fù)責(zé)接收來(lái)自溫度傳感器的實(shí)時(shí)溫度數(shù)據(jù),將需要顯示的溫度數(shù)據(jù)傳輸?shù)絃CD顯示模塊進(jìn)行顯示,同時(shí)對(duì)采集到的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),并且還可以通過(guò)RS232接口將采集到的溫度數(shù)據(jù)傳輸給上位機(jī);溫度傳感器DS18B20采集現(xiàn)場(chǎng)溫度,并將數(shù)據(jù)通過(guò)數(shù)據(jù)線輸出到單片機(jī);LCD液晶顯示模塊用來(lái)顯示需要顯示的數(shù)據(jù)。系統(tǒng)可以通過(guò)鍵盤(pán)設(shè)置溫度報(bào)警預(yù)定值,如果采集到的溫度達(dá)到預(yù)先設(shè)定的溫度值時(shí),單片機(jī)啟動(dòng)報(bào)警程序進(jìn)行報(bào)警。電源模塊采用LM2574降壓型DC-DC電源變換器。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
硬件電路的設(shè)計(jì)以MSP 430 F 1232為核心控制器[1],P 1口和 P 3口控制顯示電路(12864);P 2口的(P 2.2、P 2.3、P 2.4、P 2.5)分別外接8路溫度傳感器,構(gòu)成多路溫度采集系統(tǒng),負(fù)責(zé)溫度數(shù)據(jù)的采集;通用串口 UATR0(P 3.4、P 3.5)外接 RS232與上位機(jī)進(jìn)行數(shù)據(jù)通信;P 3.6、P 3.7模擬串行通信接口與存儲(chǔ)器進(jìn)行數(shù)據(jù)傳輸;LM 2574為系統(tǒng)提供3.3 V的工作電壓。通過(guò)按鍵K 1、K 2可以預(yù)先設(shè)定各溫度采集點(diǎn)的報(bào)警溫度值。系統(tǒng)硬件電路圖如圖2所示。
MCU采用德州儀器(TI)的MSP 430 F 1232單片機(jī),此單片機(jī)是一種超低功耗微控器,采用16位的體系結(jié)構(gòu),16位的CPU集成寄存器和常數(shù)發(fā)生器,實(shí)現(xiàn)了最大化的代碼效率。包括1個(gè)內(nèi)置16位的定時(shí)器、一個(gè)快速12位A/D轉(zhuǎn)換器,一個(gè)通用串行同步異步通訊接口和22個(gè)I/O端口。它的主要特性:低電源電壓輸入范圍,DC 1.8~3.6 V;超低功耗,2.5 u A @4 k Hz,2.2 V;具有5種節(jié)電模式;喚醒時(shí)間小于6 us;12位200 Ksps的A/D轉(zhuǎn)換器,自帶采樣保持;一路串行通訊接口可用于異步通信模式或者同步通信模式;2個(gè)8位并行端口,1個(gè)6位并行端口;片內(nèi)包含8 KB FLASH ROM和256 RAM;1個(gè)通用的16位定時(shí)器,并具有片內(nèi)溫度傳感器。
單片機(jī)是整個(gè)系統(tǒng)的核心控制器,負(fù)責(zé)溫度數(shù)據(jù)的采集、存儲(chǔ)、控制液晶模塊內(nèi)容的顯示、與上位機(jī)通訊等。
圖2 系統(tǒng)硬件電路圖
DS18B20是美國(guó)DALLAS公司生產(chǎn)的單總線數(shù)字溫度傳感器芯片,采用3引腳T 0-92小體積封裝;它的測(cè)溫范圍為-55~+125℃,具有9~12位A/D轉(zhuǎn)換精度,最小溫度分辨率可達(dá)0.062 5℃,以16位補(bǔ)碼方式串行輸出所測(cè)量的環(huán)境溫度;DS18B20的工作電源既可由遠(yuǎn)端引入,也可采用寄生電源方式;多個(gè)DS18B20可以并聯(lián)到2或3根線上,此時(shí)CPU只需用一根端口線就可以實(shí)現(xiàn)與多個(gè)DS18B20傳感器的通信,這樣占用微處理器的端口也比較少,可廣泛用于多路溫度檢測(cè)與控制中[2]。
DS18B20中的溫度傳感器可以實(shí)現(xiàn)對(duì)環(huán)境中溫度的測(cè)量,當(dāng)溫度轉(zhuǎn)換指令出現(xiàn)后,轉(zhuǎn)換后的環(huán)境溫度以補(bǔ)碼的形式存放在高速暫存存儲(chǔ)器的第0個(gè)和第1個(gè)字節(jié)中。下面以l2位轉(zhuǎn)化為例具體說(shuō)明:用16位擴(kuò)展的二進(jìn)制補(bǔ)碼形式提供,以0.062 5℃/LSB的形式表示,其中S為符號(hào)位。表XX是12位轉(zhuǎn)化后所得到的12位數(shù)據(jù),高字節(jié)的前面5位為符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,此時(shí)只要將數(shù)據(jù)乘以0.062 5便可以得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘以0.062 5即可得到實(shí)際溫度[3]。
例如,+125℃的數(shù)字輸出為07D0H;25.062 5℃的數(shù)字輸出位0191 H;-55℃的數(shù)字輸出為FC90 H。
DS18B20與單片機(jī)的接口電路。DS18B20常采用內(nèi)部寄生電源和外部電源供電兩種方式供電,在連接方式上可分為單片連接和多片連接。前者形成單點(diǎn)測(cè)溫系統(tǒng),后者構(gòu)成多點(diǎn)測(cè)溫系統(tǒng)[4]。本次設(shè)計(jì)中DS 18 B 20與單片機(jī)連接方式為外部電源供電方式:P 2口的(P 2.2、P 2.3、P 2.4、P 2.5)分別外接8路DQ 18 B 20溫度測(cè)試器,組成32路溫度測(cè)試系統(tǒng);VCC接3.3 V電源供電。外部電源供電的優(yōu)點(diǎn)是電源穩(wěn)定、抗干擾性強(qiáng)、操作方便。
為方便溫度信息的顯示,直觀地了解各溫度測(cè)試點(diǎn)的具體溫度,以及溫度測(cè)試點(diǎn)的報(bào)警狀況,本多路溫度測(cè)試儀在設(shè)計(jì)時(shí)集成了帶中文字庫(kù)的液晶顯示模塊。
液晶顯示模塊采用清達(dá)光電公司的HG1286412,它具有8位并行和2線串行接口方式,可以通過(guò)設(shè)置液晶模塊的PSB管腳的電平高低來(lái)控制液晶模塊工作并行或者串行模式,在多路溫度測(cè)試儀中采用單片機(jī)的P1口并行數(shù)據(jù)傳輸方式與液晶顯示模塊相連。它內(nèi)置ST 7920漢字字庫(kù),可以提供8 192個(gè)16×16點(diǎn)的中文漢字和128個(gè)16×8點(diǎn)ASCII字符。每屏可顯示4行8列共32個(gè)16×16點(diǎn)陣的漢字和64個(gè)16×8的ASCII字符。只需要向液晶模塊寫(xiě)入相應(yīng)的讀寫(xiě)命令和數(shù)據(jù)就可以將需要顯示的內(nèi)容在液晶模塊上顯示出來(lái)。液晶模塊可以根據(jù)不同的輸入命令分別在液晶屏上顯示中文、ASCII碼字庫(kù)或者自己定義的內(nèi)容。該液晶顯示模塊工作電壓為DC 3.3 V,具有接口方式靈活,控制操作指令簡(jiǎn)單、方便等特點(diǎn)。
HG12864的數(shù)據(jù)輸入輸出端口(DB0~DB7)與單片機(jī)的并行端口P1相連接;RS引腳為指令/數(shù)據(jù)選擇信號(hào)端口,RS為高電平時(shí)單片機(jī)向LCD寫(xiě)入數(shù)據(jù),RS為低電平時(shí)單片機(jī)向LCD寫(xiě)入指令;R/W引腳為L(zhǎng)CD的讀寫(xiě)選擇信號(hào)端口,R/W高電平時(shí)單片機(jī)讀出LCD端口數(shù)據(jù),R/W低電平時(shí)單片機(jī)向LCD端口寫(xiě)入數(shù)據(jù);E引腳為L(zhǎng)CD模塊的使能信號(hào),高電平有效;分別通過(guò)單片機(jī)的P3.2、P3.1、P3.0引腳進(jìn)行控制。LCD模塊與單片機(jī)的電路連線圖如圖3所示。
圖3 LCD模塊與MSP430F1232的連接原理圖
系統(tǒng)采用LM2574高性能電壓變換器提供工作電壓。LM2574技術(shù)參數(shù)如下:具有寬電壓輸入范圍(DC7 V~DC40 V);該芯片可以輸出固定電壓或者可調(diào)電壓;最大輸出電流為0.5 A;外圍電路簡(jiǎn)單,只需外接4個(gè)電子元器件;內(nèi)置固定頻率(52 KHz)振蕩器;轉(zhuǎn)換效率高;具有過(guò)熱及過(guò)負(fù)載保護(hù)功能。
為方便系統(tǒng)維護(hù)與升級(jí),系統(tǒng)軟件設(shè)計(jì)采用模塊化程序結(jié)構(gòu),主要由主程序、溫度采集定時(shí)器程序、數(shù)據(jù)顯示程序、溫度設(shè)定程序、數(shù)據(jù)存儲(chǔ)程序以及通信程序等組成。
主程序在完成系統(tǒng)初始化后,進(jìn)入上位機(jī)通信查詢、顯示子程序以及數(shù)據(jù)存儲(chǔ)程序循環(huán),同時(shí)等待定時(shí)器中斷的發(fā)生,溫度采集采用定時(shí)中斷方式來(lái)實(shí)現(xiàn)。主程序流程圖如圖4(a)所示。
單片機(jī)與DS18B20之間由單總線連接,空閑時(shí)單總線狀態(tài)為高電平,傳感器處于既可以寫(xiě)入又可以讀取數(shù)據(jù)的狀態(tài)。對(duì)DS18B20的操作主要包括2類:讀取數(shù)據(jù)與寫(xiě)入數(shù)據(jù),以ROM操作命令或存儲(chǔ)操作命令的形式出現(xiàn)。常用的命令組成:[F0H]識(shí)別總線上的所有傳感器;[33H]讀單個(gè)傳感器的序列號(hào);[55H]定位某個(gè)傳感器;[CCH]跳過(guò)ROM操作;[4EH]寫(xiě)存儲(chǔ)器;[BEH]讀存儲(chǔ)器;[44H]完成溫度轉(zhuǎn)換。
溫度采集中斷程序通過(guò)定時(shí)器中斷來(lái)實(shí)現(xiàn),當(dāng)定時(shí)器達(dá)到預(yù)定值時(shí)產(chǎn)生中斷,系統(tǒng)便進(jìn)入溫度采集程序。進(jìn)入溫度采集程序后,系統(tǒng)將對(duì)需要采集的溫度采集點(diǎn)進(jìn)行選擇,相應(yīng)的溫度傳感器對(duì)單片機(jī)的請(qǐng)求做出響應(yīng),當(dāng)溫度傳感器完成溫度采集后,單片機(jī)對(duì)采集完成的數(shù)據(jù)讀取。單片機(jī)對(duì)讀取的數(shù)據(jù)進(jìn)行相應(yīng)的轉(zhuǎn)換后得到溫度數(shù)值,并且將溫度數(shù)值進(jìn)行存儲(chǔ)。溫度采集中斷程序流程圖如圖4(b)所示。
圖4 程序流程圖
單片機(jī)技術(shù)和集成溫度傳感器設(shè)計(jì)的多路溫度測(cè)試儀,具有成本低、精度高、響應(yīng)速度快等特點(diǎn)。系統(tǒng)硬件以及軟件均采用模塊化設(shè)計(jì),易于升級(jí)與維護(hù)。經(jīng)過(guò)實(shí)際運(yùn)行,采集數(shù)據(jù)準(zhǔn)確可靠,為多點(diǎn)溫度采集應(yīng)用場(chǎng)合提供了一款全新的測(cè)試儀器。避免了以往人工記錄存在較大誤差的缺點(diǎn),該系統(tǒng)具有良好的推廣價(jià)值和應(yīng)用前景。
[1] 薛小鈴,劉志群,賈俊榮.單片機(jī)接口模塊應(yīng)用與開(kāi)發(fā)實(shí)例詳解[M].北京:北京航空航天出版社,2010.
[2] 明德剛.DS18B20在單片機(jī)溫控系統(tǒng)中的應(yīng)用[J].貴州大學(xué)學(xué)報(bào),2006,23(1):106-110.
[3] 金偉正.單線數(shù)字溫度傳感器的原理與應(yīng)用[J].電子技術(shù)應(yīng)用,2000(6):66-68.
[4] 沙占友.智能化集成溫度傳感器原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2002.