1.引言
溫度是一個十分重要的物理量,對它的測量與控制有十分重要的意義。隨著現(xiàn)代工農業(yè)技術的發(fā)展及人們對生活環(huán)境要求的提高,人們也迫切需要檢測與控制溫度:如大氣及空調房中溫度的高低,直接影響著人們的身體健康;在大規(guī)模集成電路生產線上,環(huán)境溫度不適當,會嚴重影響產品的質量。由此作者提出設計一種基于工業(yè)通用的CAN總線標準的嵌入式測溫系統(tǒng),該系統(tǒng)能自動監(jiān)測被測對象的溫度,并且能通過CAN總線對溫度進行遠程監(jiān)視和網絡控制的智能測溫系統(tǒng)。
2.整體系統(tǒng)設計
根據所給的設計要求,即具有數(shù)字顯示、鍵盤輸入、溫度自動采樣、能通過CAN(Controller Area Network)總線與上位機進行通信、異常情況自動報警等功能。我們可以構架出此智能溫度儀表的整體設計框圖如下圖1所示。從圖中可以看出整體硬件電路設計主要包括:微處理器8051部分、電源電路部分、溫度信號輸入部分、鍵盤輸入部分、CAN總線通信部分、LED顯示部分[1]。限于篇幅原因,作者在本文將重點介紹溫度信號輸入和CAN總線通信部分的具體電路設計。
?
?
?
3.溫度輸入電路設計
MAX6675是MAXIM公司生產的基于SPI(Serial Peripheral Interface) 串行外設接口總線的專用芯片,它不僅能對K型熱電偶進行冷端溫度補償,還能對熱電勢信號進行數(shù)字化處理。可廣泛用于工業(yè)、儀器儀表、自動化等領域[2]。
3.1 MAX6675的結構及工作原理
MAX6675的具體內部結構框圖如圖2所示。GND為地。UCC接電源的正極,該端需經外部0.1μF電容接地。T-接K型熱電偶的冷端,并從外部接地。T+接熱電偶的熱端。SCK為串行輸入端,SO為串行輸出端。 為片選端,當 =0(低電平)時,串行接口有效。NC為空腳。主要包括8個部分:①低噪聲電壓放大器A1;②電壓跟隨器A2;③冷端溫度補償二極管;④基準電壓源;⑤數(shù)字控制器;⑥12位ADC;⑦SPI串行接口(SCK、SO、 );⑧模擬開關(S1—S5)。其工作原理如下:K型熱電偶產生的熱電勢(e)經過A1、A2得到放大后的熱電勢信號U1,再經過S4送給ADC。有公式:
U1=αTΔT=αT(T-T0)
其中:αT為K型熱電偶的電壓溫度系數(shù)。αT=41μV/℃。T和T0分別為被測溫度、冷端的環(huán)境溫度。與此同時,冷端溫度補償二極管將T0轉換成補償電壓U2,有公式:U2=αTT0,U2通過S5送給ADC。在數(shù)字控制器的控制下,ADC首先將U1、、U2轉換成數(shù)字量,再將U1、和U2相加并除以αT,即獲得輸出電壓UO的數(shù)據,該數(shù)據就代表測量點的實際溫度值T。需要指出,U2為毫伏級信號,e為微伏級信號,因此e必須首先放大成U1,二者才能相加。
?
圖2? MAX6675的內部框圖
3.2由MAX6675構成的測溫系統(tǒng)
由MAX6675構成的測溫系統(tǒng)電路如圖3所示。將K型熱電偶KH1的T+和T-分別接到MAX6675芯片的T+和T-的引腳上。MAX6675的 為片選端口接到CPU的P1.2引腳、SO輸出端口接到CPU的P1.0引腳、SCK輸入端口接到CPU的P1.1引腳[3]。
?
?
?
4.CAN總線通信電路及程序設計
4.1 CAN硬件電路設計
采用AT89C51單片機微控制器、獨立CAN通信控制器SJA1000、CAN總線驅動器PCA82C250及復位電路IMP708組成的CAN應用節(jié)點具體電路如下圖4所示[4]。為了提高系統(tǒng)的抗干擾能力,本設計在SJA1000和CAN總線驅動器PCA82C250之間增加了光電隔離器6N137。
?
?
?
4.2 CAN通信程序設計
CAN應用節(jié)點的通信程序設計主要包括三部分:初始化子程序、發(fā)送子程序、接收子程序,各個部分的具體程序如下[5]:
(1)CAN總線初始化子程序
NODE??? EQU??? 30H ;節(jié)點號緩沖區(qū)
NBTR0?? EQU??? 31H ;總線定時寄存器0緩沖區(qū)
NBTR1?? EQU??? 32H ;總線定時寄存器1緩沖區(qū)
…;定義RAM內發(fā)送TXBF、接收RXBF緩沖區(qū),即40H與50H
…;再定義相應的控制CR、命令CMR、狀態(tài)SR、中斷IR寄存器,即0BF00H-0BF04H
AMR???? EQU?? 0BF05H ;接收碼屏蔽寄存器
BTR0??? EQU??? 0BF06H ;總線定時寄存器0
BTR1??? EQU??? 0BF07H ;總線定時寄存器1
OCR???? EQU??? 0BF08H ;輸出控制寄存器
CDR???? EQU??? 0BF1FH ;時鐘分頻寄存器
… ;定義接收RXB、發(fā)送TXB緩沖器,即0BF14H與0BF0AH
CANINI: MOV?? DPTR,#CR?? ;寫控制寄存器
MOV?? A,#01H????? ;置復位請求為高
MOVX? @DPTR, A
CANI1: MOVX? A, @DPTR???? ;判斷復位請求有效
JNB???? ACC.0, CANI1
MOV??? DPTR,? #ACR? ;寫接收碼寄存器
MOV??? A, NODE?????? ;設置節(jié)點號
MOVX?? @DPTR,? A
MOV???? DPTR, #AMR? ;寫接收碼屏蔽寄存器
MOV??? A, #00H
MOVX?? @DPTR, A
MOV???? DPTR, #BTR0? ;寫總線定時寄存器0
MOV??? A ,? NBTR0??? ;設置波特率
MOVX?? @DPTR, A
… ;同上三行進行寫總線定時寄存器1并設置好波特率
MOV??? DPTR, #OCR?? ;寫輸出控制寄存器
MOV???? A, #OFAH
MOV???? @DPTR, A
MOV???? DPTR, #CDR? ;寫時鐘分頻寄存器
MOV???? A, #00H??? ;將CAN工作模式設為BasicCAN模式時鐘2分頻
MOVX??? @DPTR, A
MOV???? DPTR, #CR? ;寫控制寄存器
MOV???? A, #0EH???? ;開放中斷源
MOVX??? @DPTR, A
(2)CAN總線接收子程序
RXSB: MOV???? DPTR, #SR? ;讀狀態(tài)寄存器判斷接收緩沖區(qū)滿
MOVX?? A, @DPTR
JNB????? ACC.0, RXSB
RXSB1: MOV???? DPTR, #RXB? ;將接收的數(shù)據放在CPU RAM區(qū)
MOV????? R0, #RXBF
MOVX???? A, @DPTR
MOV????? @R0, A
INC????? R0
INC????? DPTR
MOVX??? A, @DPTR
MOV???? @R0, A
MOV???? B, A
RXSB2: INC????? DPTR
INC????? R0
MOVX?? A, @DPTR
MOV???? @R0, A
DJNZ???? B, RXSB2
MOV???? DPTR, #CMR? ;接收完畢釋放接收緩沖區(qū)
MOV???? A, #04H
MOVX??? @DPTR, A
MOV????? DPTR, #SR? ;讀此狀態(tài)寄存器
MOVX??? A, @DPTR
…;判斷ACC.1、ACC.7、ACC.6,分別跳到DATAOVER、BUSWRONG、CNTWRONG
SJMP?? RECEEND
DATAOVER:做相應的數(shù)據益處錯誤處理后直接跳到RECEEND
BUSWRONG:做總線錯誤處理后直接跳到RECEEND
CNTWRONG:做數(shù)據錯誤處理
RECEEND: ;接收任務結束
(3)CAN總線發(fā)送子程序
TXSB: MOV???? DPTR, #SR?? ;讀狀態(tài)寄存器
MOVX??? A, @DPTR?? ;判斷發(fā)送緩沖區(qū)狀態(tài)
JNB?????? ACC.2, TXSB
MOV????? R1, #TXBF
MOV????? DPTR, #TXB
TX1: MOV????? A, @R1?????? ;向發(fā)送緩沖區(qū)10填入標示符
MOVX??? @DPTR, A
INC?????? R1
INC?????? DPTR
MOV????? A, @R1?????? ;向發(fā)送緩沖區(qū)11填入數(shù)據長度
MOVX???? @DPTR, A
MOV????? B, A
TX2:? INC?????? R1
INC?????? DPTR
MOV????? A, @R1??? ;向發(fā)送緩沖區(qū)12到19送數(shù)據
MOVX???? @DPTR, A
DJNZ????? B, TX2
MOV????? DPTR, #CMR? ;置CMR.0為1請求發(fā)送
MOV????? A, #01H
MOVX??? @DPTR, A
5.設計總結
根據上述的嵌入式溫度測量系統(tǒng)設計出的測溫系統(tǒng)能通過熱電偶實現(xiàn)自動溫度信號采集,再由MAX6675將此信號轉換成12位的數(shù)字信號輸入到微處理器,讓微處理器對它進行自動處理后送到LED顯示器顯示出來,也可以通過CAN總線送向上位機,實現(xiàn)遠程測量溫度和網絡監(jiān)視控制的功能。整個系統(tǒng)采用12位的高速的模數(shù)轉換系統(tǒng),使其溫度測量誤差可以達到小于0.1°C,同時系統(tǒng)也具有良好的實時性[6]。本文作者創(chuàng)新點:運用嵌入式系統(tǒng)設計思想和方法、結合相應的測溫精度和實時性、采用CAN工業(yè)通信總線標準,設計出一種基于CAN總線的嵌入式測溫系統(tǒng),此系統(tǒng)可以作為一種通用的小型測溫系統(tǒng)使用也可以嵌入到其他大型的工業(yè)檢測與控制系統(tǒng)中。
評論
查看更多