基于單片機(jī)控制的DDZ型熱工儀表檢測儀的設(shè)計
引言
傳統(tǒng)的DDZ型熱工儀表檢測儀以模擬顯示為主,有性能不穩(wěn)定、誤差較大等缺點(diǎn)。針對這一問題研制了基于單片機(jī)控制的熱工儀表檢測儀,它不僅能在DDZ 型熱工儀表的設(shè)計、校正、維修中提供信號源,而且能把某些儀表端口的信號采集到計算機(jī)上處理并且打印出數(shù)據(jù),以便相關(guān)人員分析處理并作出相應(yīng)的反應(yīng)。
儀表的功能
本儀表不僅能測量和產(chǎn)生DDZ型熱工儀表統(tǒng)一的聯(lián)絡(luò)信號,而且能數(shù)字化并顯示信號大小,具有動態(tài)顯示、性能穩(wěn)定等優(yōu)點(diǎn)。概括起來,儀表具有如下功能:
(1) 可以測量和產(chǎn)生DDZ-Ⅱ型儀表間的聯(lián)絡(luò)信號:0~10mA DC。
(2) 可以測量和產(chǎn)生DDZ-Ⅲ型儀表間的聯(lián)絡(luò)信號:4~20mA DC,1~5V DC。
(3) 具有RS-232串行通信口,可以和上位機(jī)進(jìn)行通信。
(4) 通過按鍵設(shè)定信號輸出值,信號輸出和顯示的整個過程在毫秒內(nèi)完成。
(5) 4位數(shù)碼管動態(tài)地顯示測量和產(chǎn)生信號值大小。
儀表的硬件結(jié)構(gòu)
本儀表主要由PIC16F877單片機(jī)和外圍器件及其相應(yīng)的軟件編程構(gòu)成,如圖1所示。可分為7大模塊:輸入模塊、A/D轉(zhuǎn)換模塊、數(shù)碼顯示模塊、串口通信模塊、鍵盤設(shè)置模、D/A轉(zhuǎn)換模塊和電源模塊。
本文主要介紹輸入模塊、通信模塊、A/D轉(zhuǎn)換模塊、及鍵盤設(shè)置模塊,以便更好地說明該儀表的硬件電路和軟件編程。
關(guān)鍵芯片和技術(shù)
輸入模塊
輸入模塊設(shè)計了三路模擬量輸入電路:一路輸入0~10mA DC電流信號,通過500?的精密電阻轉(zhuǎn)化為0~5V DC電壓信號;一路輸入1~5V DC 電壓信號;另一路輸入4~20mA電流信號,經(jīng)過250?的精密電阻轉(zhuǎn)化為1~5V DC電壓信號。由于使用OP07運(yùn)放器構(gòu)成電壓跟隨器,顯著提高了抗干擾能力和精度,輸入模塊的硬件電路圖如圖2所示。
OP07運(yùn)放器后接了一個超量程報警系統(tǒng),它由穩(wěn)壓管、報警器、過電壓繼電器和動斷觸點(diǎn)組成。穩(wěn)壓管和過電壓繼電器的額定電壓都是+5V,當(dāng)輸入電壓值超過該值時,過電壓繼電器就會使動斷觸點(diǎn)斷開從而自動切斷電路,與此同時穩(wěn)壓管導(dǎo)通,報警器產(chǎn)生一個報警信號。
由于測量現(xiàn)場往往有磁干擾和火花干擾,所以本設(shè)計選用低通濾波器用于對現(xiàn)場強(qiáng)電磁和火花干擾的抑制和消除,同時除掉直流信號中混入的交流信號。
A/D轉(zhuǎn)換模塊
本設(shè)計采用PIC16F877單片機(jī)作為核心芯片,其A/D轉(zhuǎn)換值為10位,可設(shè)置1~8個A/D轉(zhuǎn)換通道。本儀表將A口的RA0引腳設(shè)定為模擬電壓輸入,進(jìn)行A/D轉(zhuǎn)換后先將A/DRESH和A/DRESL寄存器中的值經(jīng)數(shù)據(jù)處理變?yōu)榕c實(shí)際模擬量相對應(yīng)的二進(jìn)制數(shù),再變換成對應(yīng)的BCD碼,最后送到與C口相連的數(shù)碼顯示模塊上進(jìn)行顯示。
設(shè)置輸入/輸出引腳
由于PIC16F877的引腳同時具備輸入/輸出的功能,因此使用前必須進(jìn)行設(shè)置,其初始化引腳的命令如下:
banksel TRISC ;選擇TRISC寄存器所在的數(shù)據(jù)存儲體
clrf TRISC,3:0> ;設(shè)定C口的RC3:RC0為數(shù)據(jù)輸出口
bsf TRISA,0 ;設(shè)定A口的RA0為輸入口
進(jìn)行A/D轉(zhuǎn)換的步驟
(1) A/D轉(zhuǎn)換的初始設(shè)定:對A/DCON1和A/DCON0寄存器中的位進(jìn)行設(shè)置。
(2) 選擇A/D轉(zhuǎn)換的模擬輸入端:A/DCON0寄存器的5:3>位設(shè)為000,表示選擇A口0>位RA0為模擬輸入端。
(3) 啟動A/D轉(zhuǎn)換:A/DCON0寄存器的2>位GO/DONE為1時,表示正開始進(jìn)行A/D轉(zhuǎn)換。
(4) 查看A/D轉(zhuǎn)換是否完成:GO/DONE同時作為A/D轉(zhuǎn)換的標(biāo)志信號,若為1時,表示正在進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換工作尚未結(jié)束;若為0時,表示A/D轉(zhuǎn)換已完成,可以讀取轉(zhuǎn)換結(jié)果。
(5) 存放A/D轉(zhuǎn)換的結(jié)果:把A/D轉(zhuǎn)換的結(jié)果存放在A/DRESH和A/DRESL寄存器中。
RS-232 串口通信
PIC16F877與PC之間的雙向RS-232通信的目的是把A/DRESH、A/DRESL中的數(shù)據(jù)傳到上位機(jī)(計算機(jī)),上位機(jī)采用C語言編輯的接收軟件接收數(shù)據(jù),并進(jìn)行更進(jìn)一步的處理。
選擇波特率
在PIC16F877的UART模塊中,8位寄存器SPBRG的值X和寄器TXSTA中的BRGH位決定通信時的波特率。當(dāng)BRGH=1 時,由于該儀器的波特率設(shè)為9600bit/s, Fosc=4MHz,通過計算可以得到X=25.042≈25,此時其誤差僅為:(9615-9600)/9600=0.16%,表示波特率選擇合適。
評論