溫度測量是鋁水平溫度測量過程的最后一個環(huán)節(jié),在系統(tǒng)測量完鋁水平后,開始進行溫度測量,這一部分程序作為一個獨立的程序段,
定時調用,主要包括MAX6675數(shù)據(jù)讀取、開路判斷、數(shù)據(jù)處理和碼制轉換等幾個部分。程序流程如下:
下面給出MAX6675溫度值讀取程序設計:
;溫度值讀取程序
;位定義
CS BIT P1.0 ;數(shù)據(jù)輸入
SCK BIT P1.1 ;片選
SO BIT P1.2 ;時鐘
;數(shù)據(jù)字節(jié)定義
DATAH DATA 40H ;讀取數(shù)據(jù)高位
DATAL DATA 41H ;讀取數(shù)據(jù)低位
TDATAH DATA 42H ;溫度高位
TDATAL DATA 43H ;溫度低位
CLR CS ;CS低電平,停止數(shù)據(jù)轉換,輸出數(shù)據(jù)D15
CLR CLK ;時鐘置為低電平
MOV R7, #08H
RD_DATAH: ;讀數(shù)據(jù)高位字節(jié)D15-D8
MOV C,SO ;讀SO端數(shù)據(jù)
RLC A ;累加器左移一位
SETB SCK
NOP
CLR SCK
DJNZ R7,RD_DATA
MOV DATAH,A ;將數(shù)據(jù)高位移入緩沖區(qū)
MOV R7,#08H
RD_DATAL: ;讀數(shù)據(jù)低位字節(jié)D7-D0
MOV C,SO ;讀SO端數(shù)據(jù)
RLC A ;累加器左移一位
SETB SCK
NOP
CLR SCK
DJNZ R7,RD_DATAL
MOV DATAL,A ;將數(shù)據(jù)低位移入緩沖區(qū)
SETB CS ;CS高電平,停止數(shù)據(jù)輸出,啟動新的數(shù)據(jù)轉換;數(shù)據(jù)轉換子程序,將讀得的16位數(shù)據(jù)轉換為12位溫度值,去掉無用
的位
MOV A,DATAL
RLC A
MOV DATAL,A
MOV A,DATAH
RLC A ;整個數(shù)據(jù)位左移一位,去掉D15位
SWAP A ;將DATAH中的高低4位數(shù)據(jù)互換
MOV B,A ;數(shù)據(jù)暫存于B中
ANL A,#0FH ;得到溫度數(shù)據(jù)高位字節(jié)部分D14 ~D11
MOV TDATAH,A ;將溫度值高位字節(jié)保存
MOV A,B
ANL A,#0F0H ;得到溫度數(shù)據(jù)低位字節(jié)部分D10 ~D7
MOV B,A
MOV A,DATAL ;
ANL A,#0FH ;得到溫度數(shù)據(jù)低位字節(jié)部分D6 ~D3
ORL A,B ;合并的溫度低位字節(jié)
MOV TDATAL,A ;將溫度值低位字節(jié)保存
3 應用中注意的幾個問題
在鋁水平溫度測量儀的設計和調試過程中遇到諸多問題,現(xiàn)將與MAX6675相關的幾個問題和使用心得摘錄如下,以供參考。
1)MAX6675芯片對電源噪聲較為敏感,盡量將MAX6675布置在遠離其他I/O芯片的地方。
2)MAX6675芯片T-必須接地,并使接地點盡可能接近GND腳,否則讀出數(shù)據(jù)為無規(guī)律的亂碼。
3)MAX6675是通過冷端補償來校正周圍溫度變化的。該器件將周圍溫度通過內部的溫度檢測二極管轉換為溫度補償電壓,該器件內部電路
將二極管電壓和熱電偶電壓送到ADC中轉換,以計算熱電偶的熱端溫度。當熱電偶的冷端與芯片溫度相等時,MAX6675可獲得最佳的測量精度。
因此在實際測溫應用時,應盡量避免在MAX6675附近放置發(fā)熱器件或元件,例如7805等帶散熱片的穩(wěn)壓器件。
4)盡量采用大截面積的熱電偶導線,長距離傳輸時,可采用雙絞線作為信號傳輸線。
5)根據(jù)應用場合的不同,可通過相應的數(shù)字濾波器進行數(shù)據(jù)處理,以提高所需要某一段測量數(shù)據(jù)的準確性。
4 結束語
MAX6675將熱電偶測溫應用時復雜的線性化、冷端補償及數(shù)字化輸出等集中在一個芯片上解決,簡化了鋁水平溫度測量儀中熱電偶測溫
電路的設計,實際運行結果表明,該測溫系統(tǒng)抗干擾能力強、結構簡單、可靠性高,測量精度滿足要求。因此,在基于微處理器的單片機嵌入
式工業(yè)測溫系統(tǒng)中,由MAX6675構成的單片熱電偶測溫解決方案,具有良好的實用價值