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