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