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