用傳統的水銀或酒精溫度計來測量溫度,不僅測量時間長、讀數不方便、而且功能單一,已經不能滿足人們在數字化時代的要求。本文提出了一種新型的數字式溫度測量電路的設計方案,該方案集成了溫度測量電路和實時日歷時鐘電路。 溫度測量電路的測溫范圍在-20℃~50℃之間,分辨率為1℃,測溫時間小于1秒。電路中采用凌特公司的電阻可編程振蕩器LT1799來實現電阻值到頻率的轉換,然后根據預先存儲在ROM中的參數值進行比較映射得到待測溫度值。實時日歷時鐘電路能顯示年、月、日、星期、時、分、秒七種時鐘信號,用戶可以對時間進行設定或修改。整個電路用Altera 公司的ACEX1K系列的FPGA進行了硬件仿真實現,電路設計靈活,便于修改。 1 測溫原理 溫度監測主要是利用溫度傳感器來實現。本設計的溫度傳感器采用的是NTC熱敏電阻,即具有負溫度系數的熱敏電阻,其電阻值(RT)隨溫度(T)的升高而迅速減小。阻值溫度關系表達式為: 式中,A、B是由半導體材料和加工工藝所決定的兩個常數,B值為熱敏指數。設計中選用的是R25℃為100kΩ的MF58高精度測溫熱敏電阻,熱敏指數為3 650K。 LTC1799是一種電阻可編程振蕩器,可以產生占空比為50%的方波,并具有溫度穩定和電源電壓穩定的特性,是一種低功率器件,外圍僅需一個元件,即設置電阻和旁路電容。LTC1799標準電路如圖1所示,圖中0.1μF的電容接在電源引腳與地之間,可以將電源噪聲降至最低。第1、3引腳之間連接設置電阻,用來控制輸出頻率,本設計中用熱敏電阻替代設置電阻。第4引腳是一個三態分頻引腳,決定主控時鐘在輸出前是被1、10或100分頻,設計中將該引腳接地,即輸出分頻系數為1。第5引腳為輸出引腳,輸出頻率與設置電阻之間的關系為: 由于熱敏電阻的阻值隨溫度的變化而改變,這樣便可以通過LTC1799建立溫度和頻率之間的關系,以實現對溫度的測量。 由(1)、(2)式可知電路設計中存在兩種非線性關系:一是熱敏電阻的阻值和溫度之間的非線性關系,二是阻值頻率轉換時的非線性。對非線性問題,可以用數學方法進行處理,但算法比較繁瑣,而且要占用大量的硬件資源。因此設計中采用了另外一種方法進行處理,即利用ROM預先存儲頻率—溫度的數據,通過查表法進行溫度映射。這樣既避免了非線性問題的影響又節省了硬件資源。 圖1 LTC1799標準電路 2 硬件電路設計 從功能上劃分,硬件電路分為溫度測量電路和實時日歷時鐘電路兩大部分。 2.1 溫度測量電路 2.1.1頻率測量電路 頻率測量電路主要是采用頻率計數的方法,外部晶體振蕩器分頻后通過門控電路得到周期為2T的采樣基準信號count_en和計數復位信號count_clr,在采樣基準信號正半周計數器計數使能,計數模塊開始對輸入信號的頻率進行測量,測量時間恰為T,并在采樣基準信號的下降沿將采樣的數據結果鎖存。若在時間T內計數器測得信號脈沖個數為N,則被測信號的頻率為:FX=N/T。 計數復位信號用于每一次測量開始時對計數模塊進行復位,以清除上次測量的結果。各信號之間的時序關系如圖2所示。 圖2 采樣控制信號之間的時序關系 另外,由于測量過程中被測頻率信號與采樣控制信號之間沒有同步鎖定關系,在計數的末尾將產生±1的附加誤差,即參考文獻中所提到的量化誤差。所以采樣時間T和計數器的位數一定要選擇合理。在本設計中,測量的頻率在10kHz~300kHz的范圍內變化,在待測的溫度范圍內溫度每變化1℃,則阻值最小變化0.5828kΩ。當取T=20ms,R=100kΩ時,N=1000,則±1的量化誤差的影響幾乎可以忽略不計。 2.1.2 數據處理電路 由于在頻率測量電路中必然會存在測量誤差,所以必須對這些測量數據結果進行處理。本設計針對數據處理提出了一種新的思路,其數據處理流程如圖3所示。如圖中所示,將頻率測量電路中的數據結果N’先通過若干個寄存器移位寄存,然后利用比較器對寄存的數據進行比較,去除最大和最小值后將剩下的中間值相加,最后通過除法器得到平均值N! 圖3 數據處理流程框圖 采用該處理方法處理數據的優點為: (1) 有效降低了測量誤差的影響。通過比較器可以將突發的偶然錯誤數據排除。根據隨機誤差的補償性原理,對于有限次測量,可以近似認為多次測量的算術平均值即為真值的最佳估計值。 (2) 可以動態地反映被測信號變化趨勢。這種方法適用于很多對實時性測量要求較高的場合中。 2.1.3 溫度映射電路 溫度映射電路框圖如圖4所示。由圖4可知,地址計數器和溫度值計數器都是通過有限狀態機來控制的。狀態1:計數器清空;狀態2:計數器計數;狀態3:鎖存計數結果;狀態4:計數器結果輸出。反復執行以上四種狀態可實現溫度的實時測量控制。 圖4 溫度映射電路框圖 由于溫度測量范圍是-20℃~50℃,分辨率僅為1℃,所以ROM中只需存儲70個數據,選用128×12位的ROM即可滿足要求。同時,ROM中存儲的不是如1℃、2℃、3℃等整數點的值,而是1.5℃、2.5℃、3.5℃時的值,這樣既可以保證精度的要求又可以起到四舍五入的作用。初始狀態,溫度計數器中存儲的是-20℃的最低溫度值,地址計數器的值清零。來一次CLK信號,地址計數器和十進制計數器的值都加1;然后取得ROM中相應地址的標準脈沖值,與輸入的實際采樣脈沖值N進行比較。若小于實際輸入值則比較器輸出S=1,2個計數器繼續計數;反之,計數器停止計數。此時溫度計數器的值即為實際測量的溫度值。 采用ROM進行溫度映射除了具有前面提到的優點以外,還使其設計靈活通用,在此電路中只需更改ROM中存儲的數據就可以適用于多種類型的溫度傳感器。 圖5 時鐘計時顯示框圖 圖6 時鐘工作模式 2.2 實時日歷時鐘電路 2.2.1 時鐘計時顯示 時鐘計時顯示功能框圖如圖5所示。各主要模塊的功能如下: (1) 由外部晶振分頻產生1Hz的SEC信號,輸入到模為60的分頻計秒電路,待計數器計數至60的瞬間,進位至計數60的分頻計分電路加1,而計秒電路也清除為0,重新計秒。 (2) 除日計數器外,計分、計時、計月、計星期、計年電路功能類似。 (3) 日計數器分為四種情況:閏年2月份29天;平年2月份28天;1、3、5、7、8、10、12月份31天;其余月份30天。 (4) 七組計數電路的輸出分別是DBS、DBM、DBH、DBD、DBW、DBN、DBY。它們同時只會有一組出現,控制輸出的ENB信號是由掃描電路信號S衍生而來的。 (5) 掃描電路的掃描頻率必須超過人的眼睛視覺暫留頻率24Hz,才可以達到點亮單個七段顯示器,卻享有13個同時顯示的視覺效果。 (6) 由于除了星期外,其余數據都是由2位十進制數來表示,所以先將以二進制表示的BIN碼改成兩個位數的BCD碼,然后經過七段譯碼電路送至七段顯示器顯示。 2.2.2 時鐘設定 時鐘計時和時鐘調整模式通過外部按鍵K1來實現切換,其工作模式如圖6所示的由八種狀態變量組成。在時鐘調整模式(即除去111計時狀態)的任意情況下通過按鍵K2進行時間調整。 各種調整方式的操作類似,以計秒的同步控制信號ECS為例,其組成如下: ECS = (SEC & SC) (ADJ & "STATE & "STATE & "STATE[0]); 其中:SC=STATE& STATE & STATE[0]; ADJ=SEC & ("SC) &"K2; (1) SC表示正常計時狀態,SEC和SC共同負責時鐘計時動作,STATE為狀態變量。 (2) 在時鐘調整秒數的工作模式下(即STATE為000),由STATE和K2控制的ADJ信號負責手動調整秒數。 本設計基于topdown的設計思想,進行合理模塊劃分,在數字電路設計部分運用硬件語言Verilog及Quartus工具進行了仿真、綜合、適配、下載,最后通過Altera公司的FPGA進行硬件測試,實現了設計要求。該電路可廣泛應用在家用電器及辦公自動化設備的溫度監測和控制領域中。 |