一種高精度智能毫秒計的設計
毫秒計時(shí)的啟、??刂七壿?/b>
毫秒計在電力行業(yè)中通常用于測量繼電器或某個(gè)控制裝置從發(fā)出啟動(dòng)指令到實(shí)際執行完成的間隔時(shí)間,因其間隔時(shí)間為毫秒級,故計時(shí)器通常采用毫秒計。在實(shí)際使用中,計時(shí)器的啟動(dòng)與停止控制不是僅僅由一級開(kāi)關(guān)量(某一個(gè)單獨的開(kāi)關(guān))所控制,而常常是由二級開(kāi)關(guān)量控制,即先由兩個(gè)開(kāi)關(guān)量決定計時(shí)器的啟、??刂七壿?,再由這個(gè)啟、??刂七壿嬁刂朴嫊r(shí)器的啟動(dòng)與停止。
設啟動(dòng)開(kāi)關(guān)量為A,停止開(kāi)關(guān)量為B,啟、??刂七壿嫗镃(C=“1”為計時(shí),C=“0”為停止計時(shí)),則有:
其中;開(kāi)關(guān)量A可有兩個(gè)邏輯狀態(tài)(“1”或“0”),同樣開(kāi)關(guān)量B也可有兩個(gè)邏輯狀態(tài)(“1”或“0”),這樣,計時(shí)器的啟、??刂七壿嬘邢铝姓嬷当?。
狀態(tài) | 啟動(dòng)(C=“1”) | 停止(C=“0”) |
1 | A=“1”∧B=“0” | B=“1”vA=“0” |
2 | A=“1”∧B=“1” | B=“0”vA=“0” |
3 | A=“0”∧B=“0” | B=“1”vA=“1” |
4 | A=“0”∧B=“1” | B=“0”vA=“1” |
為了精確地獲得控制邏輯C,我們必須通過(guò)硬件邏輯電路,將A、B兩個(gè)開(kāi)關(guān)量轉換成控制邏輯C。利用TTL集成電路工作電壓為+5V時(shí),其邏輯“1”的電平為+3V~+5V、邏輯“0”的電平為0V~+2V的特性,并設開(kāi)關(guān)量“閉合”為“1”、“斷開(kāi)”為“0”。則對控制邏輯C 可作如下(圖2)設計:
在“狀態(tài)1”圖中,R1的作用是當A、B都閉合時(shí)作限流之用,R2的作用是當A、B都斷開(kāi)時(shí)作下拉電阻之用。因此,R1、R2應滿(mǎn)足5V×R2/(R1+R2)>3.0V;5V/R12mA。同樣,在“狀態(tài)2”圖中,R1、R2應滿(mǎn)足5V×R2/(R1+R2)>3.0V;5V/(R1+R2)2mA。在“狀態(tài)3”圖中,R1應滿(mǎn)足5V/R12mA。在“狀態(tài)4”圖中,R1、R2應滿(mǎn)足5V×R2/(R1+R2)>3.0V;5V/R12mA。
受單片機控制的啟、??刂七壿媽?shí)際電路
在MCS-51系列單片機中,其CTC(定時(shí)/計數器)的工作方式寄存器中有一GATE位,該位為“1”時(shí)所對應CTC的啟動(dòng)與停止可由特定的外部引腳上的邏輯電平所控制,“1”為啟動(dòng),“0”為停止。有了這個(gè)控制邏輯C,我們就可以將它引入單片機,由單片機作精確計時(shí)。四種計時(shí)狀態(tài)也可由單片機來(lái)選擇。為了簡(jiǎn)化設計并方便使用,筆者采用了四片4066(四雙向模擬開(kāi)關(guān))對圖2中的R1、R2進(jìn)行了四種組合(見(jiàn)圖3),以滿(mǎn)足四種狀態(tài)的邏輯要求。計時(shí)器為8031的T0,故計時(shí)器的啟動(dòng)與停止由P3.2引腳上的邏輯電平所控制。
圖中4066(1)~4066(4)分別由P3.0、P3.1、P3.4、P3.5控制,P3.0、P3.1、P3.4、P3.5在任一時(shí)刻僅有其中的一個(gè)有效(“1”有效)。當4066的第5、6、12、13腳為高電平(“1”)時(shí),則1~2、3~4、8~9、10~11引腳連通,為低電平(“0”)時(shí)則斷開(kāi)。這樣,任一時(shí)刻就只能有一片4066有效。實(shí)際中,A、B開(kāi)關(guān)的一端通常是要接地的,所以筆者使用了兩片4N30對開(kāi)關(guān)量A、B的接法作了一個(gè)轉換,當開(kāi)關(guān)閉合時(shí)c、e連通,反之,則c、e斷開(kāi)。當P3.0為“1”時(shí),4066(1)被選中,其它無(wú)效。此時(shí),A、B開(kāi)關(guān)量與計時(shí)器啟、??刂七壿嫷年P(guān)系就是圖2中的狀態(tài)1(此時(shí)R1=2kΩ、R2=3.3kΩ)。同樣,當4066(2)、4066(3)、4066(4)分別被選中時(shí),就分別對應圖2中的狀態(tài)2至狀態(tài)4。圖3中的74LS04是對啟、??刂七壿嬰娖竭M(jìn)行整形,使8031的P3.2引腳獲得標準的邏輯電平。
軟件設計
軟件任務(wù)主要有三個(gè):①鍵盤(pán)掃描,確定計時(shí)方式;②精確計時(shí);③顯示計時(shí)結果。為節省篇幅,在此僅介紹軟件的關(guān)鍵之處和特色部分。
現對8031的資源作如下分配:T0用作計時(shí)器;8位初值自動(dòng)裝入;定時(shí)方式(計算8031的機器周期);門(mén)控(P3.2為高電平計數);初值9CH(-100 MHz);5位BCD碼顯示窗口;顯示緩沖區為R7、R6、R5(R7為高位字節,但最高四位不是顯示緩沖區的一部分);軟計數器為R4、R3、R2(R4為高位字節)。
為了做到精確計時(shí),其設計原則是計時(shí)器的啟、??刂萍坝嫊r(shí)過(guò)程中無(wú)需軟件干涉,以克服由指令的延時(shí)所帶來(lái)的誤差。上述提到的啟、??刂七壿嬕约癟0的初值自動(dòng)裝入就是為滿(mǎn)足這個(gè)設計原則而設置的。由于8031的晶振頻率為12MHz,故每個(gè)機器周期為1μs。T0的初值為-100,每當T0歸零并產(chǎn)生中斷時(shí),即表示到達100μs(0.1ms)的計時(shí)時(shí)間。
由于T0是每100μs中斷一次,所以T0的中斷服務(wù)程序的執行時(shí)間必須要在100μs以?xún)?。T0的中斷服務(wù)如下:
CTC0:PUSH PSW
PUSH A
MOV A,R2
ADD A,#01
DA A
MOV R2,A
MOV A,R3
ADDC A,#00H
DA A
MOV R3,A
MOV A,R4
ADDC A,#00H
DA A
MOV R4,A
POP A
POP PSW
RETI
通過(guò)查表得知,執行以上程序所需時(shí)間為22μs,小于100μs,符合計數要求。T0的中斷服務(wù)程序在計數的過(guò)程中已將計數結果調整成BCD碼,從而使顯示程序在顯示這部分數據時(shí)無(wú)需進(jìn)行從二進(jìn)制到BCD碼的轉換。
結束語(yǔ)
以上述設計制成的毫秒計,其精度取決于8031的晶振的精度以及4N30的延時(shí)特性,實(shí)際誤差僅在2μs以?xún)取?/p>
液位計相關(guān)文章:磁翻板液位計原理
評論