引言
很多應(yīng)用場(chǎng)合需要調(diào)節(jié)、控制溫度,例如,當(dāng)環(huán)境溫度過(guò)低時(shí),利用一個(gè)燈泡即可提升一個(gè)封閉的小空間的溫度或烘干未干的油漆等類(lèi)似物品。多數(shù)情況下,利用溫度檢測(cè)、電源開(kāi)關(guān)和加熱源即可構(gòu)成一個(gè)閉環(huán)溫控系統(tǒng)。本應(yīng)用筆記說(shuō)明了如何使用MAXQ微控制器設(shè)計(jì)這樣的控制系統(tǒng)或溫度監(jiān)控器。考慮到MAXQ3212所具備的功能及其設(shè)計(jì)簡(jiǎn)單、價(jià)格低廉和隨處可得的低價(jià)位開(kāi)發(fā)環(huán)境,MAXQ3210評(píng)估板(MAXQ3210-KIT),我們選擇這款器件作為系統(tǒng)控制器。本文例程所使用的開(kāi)發(fā)環(huán)境是MAX-IDE 1.0版和MAXQ3210仿真開(kāi)發(fā)板A版。
系統(tǒng)設(shè)計(jì)詳細(xì)說(shuō)明
概述
這個(gè)數(shù)字溫度監(jiān)控系統(tǒng)的實(shí)施非常簡(jiǎn)單,圖1是系統(tǒng)的電路圖。DS18B20 1-Wire?數(shù)字溫度傳感器用來(lái)檢測(cè)環(huán)境溫度,系統(tǒng)把這個(gè)溫度與用戶(hù)設(shè)置的溫度門(mén)限進(jìn)行比較,如果溫度低于用戶(hù)設(shè)置的門(mén)限,繼電器將產(chǎn)生控制信號(hào)。通常情況下系統(tǒng)通過(guò)4位LED顯示器指示環(huán)境溫度,當(dāng)用戶(hù)設(shè)置溫度時(shí),LED用來(lái)顯示用戶(hù)的設(shè)置值。MAXQ3212用作系統(tǒng)控制器,將兩個(gè)按鍵開(kāi)關(guān)連接到處理器配置為輸入端口的引腳,實(shí)現(xiàn)用戶(hù)接口功能(設(shè)置上、下調(diào)節(jié))。另外一個(gè)微處理器端口用作信號(hào)輸出,控制繼電器動(dòng)作。
圖1. 系統(tǒng)電路圖
利用一個(gè)4位、7段LED顯示器作為系統(tǒng)顯示,確保其在各種照明環(huán)境下提供有效顯示,不需要額外的系統(tǒng)背光。
為簡(jiǎn)化處理器與顯示器之間的接口設(shè)計(jì),提供必要的驅(qū)動(dòng)電流和多路復(fù)用開(kāi)關(guān),本系統(tǒng)選用了Maxim的8位LED顯示驅(qū)動(dòng)器ICM7218AIPI。該器件包含了所有與微控制器、共陽(yáng)極LED顯示器直接連接的電路。LED驅(qū)動(dòng)器可以最多驅(qū)動(dòng)8位數(shù)字,但本系統(tǒng)只使用了4位顯示器。無(wú)需使用外部限流電阻即可驅(qū)動(dòng)7段顯示器的每一段。
系統(tǒng)輸出控制標(biāo)準(zhǔn)電機(jī)繼電器,把交流電切換到任意負(fù)載,可以按照負(fù)載的供電要求進(jìn)行設(shè)置。系統(tǒng)采用了一個(gè)可以切換8A電流、線圈電壓恰好是5V系統(tǒng)供電電壓的繼電器。當(dāng)然,該繼電器可以工作在任何不超過(guò)最終驅(qū)動(dòng)FET (BS170)額定電壓或電流的條件下。
考慮到這個(gè)系統(tǒng)實(shí)施的可行性,不需要進(jìn)行精確地系統(tǒng)仿真或優(yōu)化系統(tǒng)的閉環(huán)性能。實(shí)際溫度與所要求溫度門(mén)限的簡(jiǎn)單比較是唯一的輸出切換規(guī)則。為了達(dá)到實(shí)際系統(tǒng)的要求,可以修改軟件子程序Relay_Switch。
用簡(jiǎn)單的DS18B20-PAR測(cè)量環(huán)境溫度,在-10°C至+85°C溫度范圍內(nèi)可以提供±0.5°C的測(cè)試精度。本系統(tǒng)中,所要求的工作溫度范圍為+12°C至+38°C (+55°F至+100°F)。芯片的溫度測(cè)試分辨率是9至12位,可由用戶(hù)選擇,關(guān)于分辨率的選擇可參考下述內(nèi)容。其它應(yīng)用中,每個(gè)DS18B20所包含的唯一的64位ID可以支持1-Wire網(wǎng)絡(luò)中掛接多個(gè)DS18B20。
1-Wire接口
Maxim的1-Wire總線采用獨(dú)特的串行通信接口,只需要一條信號(hào)線和地線進(jìn)行通信。這種接口通過(guò)微控制器的一個(gè)引腳即可實(shí)現(xiàn)與1-Wire器件的通信。接口還具有供電功能,稱(chēng)為寄生電源,利用1-Wire信號(hào)線能夠在沒(méi)有1-Wire器件本地供電的情況下進(jìn)行工作。該系統(tǒng)設(shè)計(jì)中,接口設(shè)計(jì)并不重要,關(guān)鍵在于遠(yuǎn)端溫度的測(cè)量。雖然系統(tǒng)中只用到了一個(gè)1-Wire器件,但是,1-Wire總線設(shè)計(jì)工作在一個(gè)主機(jī)和多個(gè)從機(jī),即多點(diǎn)工作,本應(yīng)用中選用了一片DS18B20進(jìn)行溫度測(cè)量,Maxim還可提供多款具有類(lèi)似功能的器件。例如,需要檢測(cè)多個(gè)位置的溫度時(shí),可以使用DS28EA00,它可以簡(jiǎn)化1-Wire器件在1-Wire網(wǎng)絡(luò)中的物理位置識(shí)別。
在溫度監(jiān)控應(yīng)用中,通過(guò)一條口線進(jìn)行逐位控制,實(shí)現(xiàn)1-Wire總線的通信。實(shí)現(xiàn)這一功能的軟件請(qǐng)參考應(yīng)用筆記3769,"用MAXQ3210構(gòu)建1-Wire溫度記錄儀"。這個(gè)軟件專(zhuān)為MAXQ3210和DS1822 Econo 1-Wire數(shù)字溫度計(jì)編寫(xiě)。本應(yīng)用中只需把原來(lái)軟件里的9位分辨率更該成10位,應(yīng)用筆記3769也提供了1-Wire及其應(yīng)用的參考設(shè)計(jì)。
MAXQ3212 I/O引腳
MAXQ3212共有15個(gè)端口引腳可以使用:端口0有8條口線,端口1有7條口線。與ICM7218顯示驅(qū)動(dòng)器通信最少需要10條信號(hào)線(引腳),4個(gè)引腳用于溫度設(shè)置的上、下調(diào)節(jié),繼電器驅(qū)動(dòng)以及DS18B20的通信,共占用14個(gè)引腳。默認(rèn)情況下,MAXQ3212 15個(gè)引腳中的4個(gè)用于JTAG接口(P1.0、P1.2、P1.3、P1.4),1個(gè)用于做復(fù)位輸入(P1.1)。雖然這5個(gè)信號(hào)控制調(diào)試功能,但也用作其它功能。在整個(gè)調(diào)試過(guò)程中需要特別考慮。將控制位TAP和RSTD設(shè)置到相應(yīng)電平(分別為0和1),這5個(gè)引腳的默認(rèn)調(diào)試功能可以被禁,可作為普通引腳使用,不再用于調(diào)試功能。本設(shè)計(jì)中,最終調(diào)試的應(yīng)用程序是顯示部分,因?yàn)樗鼈冃枰罅康腎/O引腳,但功能比較簡(jiǎn)單,僅需要少量的調(diào)試工作。
匯編程序在指令禁止這五個(gè)調(diào)試控制信號(hào)之前插入較長(zhǎng)的時(shí)間延時(shí)(大約5秒鐘),這個(gè)延時(shí)允許調(diào)試板在禁止調(diào)試控制之前仍然具有處理器的控制權(quán)。由此,調(diào)試板能夠在必要時(shí)對(duì)器件進(jìn)行控制。
顯示器選擇
對(duì)顯示器的選擇主要考慮溫度監(jiān)控器用于室內(nèi)還是室外,光線的亮暗程度。這樣做的目的是希望在除了強(qiáng)光照射情況(比如陽(yáng)光直射的室外)以外,在各種光照條件下都能看清LED的顯示結(jié)果。通常采用簡(jiǎn)單的彩燈就可以提供必要的顯示對(duì)比度和可見(jiàn)性。LED顯示器不再需要額外電路,比如背光電路。本應(yīng)用中不使用多路復(fù)用器,需驅(qū)動(dòng)4位、每位7段的LED。不包括小數(shù)點(diǎn)位,共需要28條獨(dú)立的信號(hào)線(4位 x 7段)。顯然,如果沒(méi)有其它電路的話,MAXQ3212無(wú)法提供這么多端口信號(hào)。所以,我們選用了ICM7218解決這個(gè)問(wèn)題,其內(nèi)部多路復(fù)用器可以提供最多8位顯示,不需要額外的限流電阻可直接驅(qū)動(dòng)LED顯示。簡(jiǎn)單通過(guò)8位信號(hào)和2路控制(模式、寫(xiě)操作)就可以與處理器連接。
用戶(hù)輸入門(mén)限設(shè)置
鑒于MAXQ3212的端口資源,不可能為用戶(hù)輸入溫度門(mén)限提供一個(gè)并行接口。所以,采用簡(jiǎn)單的上、下調(diào)節(jié)鍵增大或降低溫度門(mén)限。在系統(tǒng)初始上電時(shí),軟件會(huì)把溫度默認(rèn)值設(shè)置為+72.5°F,并把這個(gè)值存儲(chǔ)到MAXQ3212 EEPROM內(nèi)。如果用戶(hù)增大或降低溫度設(shè)置點(diǎn),新的溫度值就會(huì)存進(jìn)這個(gè)EEPROM。由于EEPROM為非易失存儲(chǔ)器,即使在掉電情況下數(shù)據(jù)也不會(huì)丟失。檢測(cè)到按鍵動(dòng)作時(shí)候,LED會(huì)顯示當(dāng)前的設(shè)置點(diǎn)。為了幫助指示正在顯示的是溫度門(mén)限,微控制器會(huì)打開(kāi)最后一位小數(shù)點(diǎn) (通常為關(guān)閉狀態(tài))。如果按鍵保持足夠的時(shí)間,溫度會(huì)以大約每秒0.5°F的速度遞增或遞減。達(dá)到所要求的溫度時(shí),用戶(hù)可釋放按鍵,立即建立新的溫度門(mén)限。顯示器隨后返回到環(huán)境溫度值,最后一位小數(shù)點(diǎn)關(guān)閉。
溫度轉(zhuǎn)換
這個(gè)應(yīng)用中,利用軟件把溫度從攝氏度轉(zhuǎn)換到華氏度。執(zhí)行DS18B20的“溫度轉(zhuǎn)換”命令,16位(帶符號(hào)位)結(jié)果按照以下方式儲(chǔ)存到溫度傳感器的寄存器中。溫度高有效位
Bit 15 | Bit 14 | Bit 13 | Bit 12 | Bit 11 | Bit 10 | Bit 9 | Bit 8 |
Sign | Sign | Sign | Sign | Sign | 26 | 25 | 24 |
溫度低有效位
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 |
這個(gè)溫度傳感器的分辨率可以由用戶(hù)配置為9、10、11或12位,對(duì)應(yīng)的溫度分辨率為0.5°C、0.25°C、0.125°C、0.0625°C。DS18B20上電時(shí)的默認(rèn)分辨率是12位,本應(yīng)用中被初始化為10位,此時(shí),第1位和第0位(2-3,2-4)沒(méi)有意義,可以分辨最小溫度值是0.25°C。
在這個(gè)應(yīng)用里,以華氏溫度為單位顯示溫度。利用下列方程進(jìn)行轉(zhuǎn)換:
華氏溫度 = (攝氏溫度 × 1.8) + 32(式1)
因?yàn)闇囟纫孕?shù)形式表示,而且轉(zhuǎn)換時(shí)需要乘以1.8,所以用二進(jìn)制數(shù)進(jìn)行計(jì)算。進(jìn)行實(shí)數(shù)乘法運(yùn)算時(shí),需要在不浪費(fèi)處理器資源的情況下盡量減小計(jì)算誤差。DS18B20初始化時(shí),溫度值的分辨率設(shè)置成10位,所以第1位和第0位沒(méi)有意義。在溫度小數(shù)部分的其余2位(第3位和第2位)提供0.25°C (0.45°F)的分辨率。因?yàn)镸AXQ3212累加器的字節(jié)寬度為8位,可以方便地用一個(gè)字節(jié)作為溫度換算的小數(shù)部分,乘法器可以包含6位小數(shù)信息。從下面可以看出,可以用6位小數(shù)近似表示到0.8至0.8的99.61%。
2-1 = 0.500000 => 0.8的62.50%
2-2 = 0.250000 + 0.50000 = 0.750000 => 0.8的93.7%
2-5 = 0.031250 + 0.0750000 = 0.781250 => 0.8的97.65%
2-6 = 0.015625 + 0.781250 = 0.796875 => 0.8的99.61%
用這個(gè)精度的數(shù)值轉(zhuǎn)換華氏度數(shù)據(jù),足以滿(mǎn)足這個(gè)溫度傳感器的精度要求。
作為一個(gè)例子,我們可以計(jì)算測(cè)量溫度+24.2510,(018.116)攝氏度,可表示為:
溫度高有效位
Bit 15 | Bit 14 | Bit 13 | Bit 12 | Bit 11 | Bit 10 | Bit 9 | Bit 8 |
0 (sign) | 0 (sign) | 0 (sign) | 0 (sign) | 0 (sign) | 0 | 0 | 1 |
溫度低有效位
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
1 | 0 | 0 | 0 | 0 | 1 | x | x |
換一種方式表示,上面的數(shù)值可以表示為00000001 1000.01xx2,這個(gè)數(shù)乘以1.810。把1.810轉(zhuǎn)換成二進(jìn)制數(shù),用6位表示小數(shù),結(jié)果轉(zhuǎn)換成常數(shù)0001.1100112。這種轉(zhuǎn)換方法如下:
???0000s0 011000.012 = 006116
× 00000000 01.1100112 = 007316
-----------------------
???00101011 .100100112 = 2B9316
+ 00100000 .000000002 = 32.010
-----------------------
???01001011 .100100112 = 4B9316 = 75.57421910
可以看出,75.574219是精確的計(jì)算結(jié)果。如果把這個(gè)結(jié)果去掉2位小數(shù),得到75.5°F,可以達(dá)到用計(jì)算器進(jìn)行浮點(diǎn)運(yùn)算時(shí)的0.15°F精度。如此精確的結(jié)果足以滿(mǎn)足這種應(yīng)用的要求。
評(píng)論
查看更多