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