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