新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 一種高精度智能毫秒計的設計

一種高精度智能毫秒計的設計

作者: 時間:2006-05-07 來源:網絡 收藏

毫秒計時的啟、??刂七壿?/b>

毫秒計在電力行業(yè)中通常用于測量繼電器或某個控制裝置從發(fā)出啟動指令到實際執(zhí)行完成的間隔時間,因其間隔時間為毫秒級,故計時器通常采用毫秒計。在實際使用中,計時器的啟動與停止控制不是僅僅由一級開關量(某一個單獨的開關)所控制,而常常是由二級開關量控制,即先由兩個開關量決定計時器的啟、??刂七壿?,再由這個啟、??刂七壿嬁刂朴嫊r器的啟動與停止。

設啟動開關量為A,停止開關量為B,啟、停控制邏輯為C(C=“1”為計時,C=“0”為停止計時),則有:

其中;開關量A可有兩個邏輯狀態(tài)(“1”或“0”),同樣開關量B也可有兩個邏輯狀態(tài)(“1”或“0”),這樣,計時器的啟、??刂七壿嬘邢铝姓嬷当?。

本文引用地址:http://m.butianyuan.cn/article/255659.htm
狀態(tài)啟動(C=“1”)停止(C=“0”)
1A=“1”∧B=“0”B=“1”vA=“0”
2A=“1”∧B=“1”B=“0”vA=“0”
3A=“0”∧B=“0”B=“1”vA=“1”
4A=“0”∧B=“1”B=“0”vA=“1”

為了精確地獲得控制邏輯C,我們必須通過硬件邏輯電路,將A、B兩個開關量轉換成控制邏輯C。利用TTL集成電路工作電壓為+5V時,其邏輯“1”的電平為+3V~+5V、邏輯“0”的電平為0V~+2V的特性,并設開關量“閉合”為“1”、“斷開”為“0”。則對控制邏輯C 可作如下(圖2)設計:

在“狀態(tài)1”圖中,R1的作用是當A、B都閉合時作限流之用,R2的作用是當A、B都斷開時作下拉電阻之用。因此,R1、R2應滿足5V×R2/(R1+R2)>3.0V;5V/R12mA。同樣,在“狀態(tài)2”圖中,R1、R2應滿足5V×R2/(R1+R2)>3.0V;5V/(R1+R2)2mA。在“狀態(tài)3”圖中,R1應滿足5V/R12mA。在“狀態(tài)4”圖中,R1、R2應滿足5V×R2/(R1+R2)>3.0V;5V/R12mA。

受單片機控制的啟、停控制邏輯實際電路

在MCS-51系列單片機中,其CTC(定時/計數器)的工作方式寄存器中有一GATE位,該位為“1”時所對應CTC的啟動與停止可由特定的外部引腳上的邏輯電平所控制,“1”為啟動,“0”為停止。有了這個控制邏輯C,我們就可以將它引入單片機,由單片機作精確計時。四種計時狀態(tài)也可由單片機來選擇。為了簡化設計并方便使用,筆者采用了四片4066(四雙向模擬開關)對圖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”有效)。當4066的第5、6、12、13腳為高電平(“1”)時,則1~2、3~4、8~9、10~11引腳連通,為低電平(“0”)時則斷開。這樣,任一時刻就只能有一片4066有效。實際中,A、B開關的一端通常是要接地的,所以筆者使用了兩片4N30對開關量A、B的接法作了一個轉換,當開關閉合時c、e連通,反之,則c、e斷開。當P3.0為“1”時,4066(1)被選中,其它無效。此時,A、B開關量與計時器啟、停控制邏輯的關系就是圖2中的狀態(tài)1(此時R1=2kΩ、R2=3.3kΩ)。同樣,當4066(2)、4066(3)、4066(4)分別被選中時,就分別對應圖2中的狀態(tài)2至狀態(tài)4。圖3中的74LS04是對啟、??刂七壿嬰娖竭M行整形,使8031的P3.2引腳獲得標準的邏輯電平。

軟件設計

軟件任務主要有三個:①鍵盤掃描,確定計時方式;②精確計時;③顯示計時結果。為節(jié)省篇幅,在此僅介紹軟件的關鍵之處和特色部分。

現對8031的資源作如下分配:T0用作計時器;8位初值自動裝入;定時方式(計算8031的機器周期);門控(P3.2為高電平計數);初值9CH(-100 MHz);5位BCD碼顯示窗口;顯示緩沖區(qū)為R7、R6、R5(R7為高位字節(jié),但最高四位不是顯示緩沖區(qū)的一部分);軟計數器為R4、R3、R2(R4為高位字節(jié))。

為了做到精確計時,其設計原則是計時器的啟、停控制及計時過程中無需軟件干涉,以克服由指令的延時所帶來的誤差。上述提到的啟、??刂七壿嬕约癟0的初值自動裝入就是為滿足這個設計原則而設置的。由于8031的晶振頻率為12MHz,故每個機器周期為1μs。T0的初值為-100,每當T0歸零并產生中斷時,即表示到達100μs(0.1ms)的計時時間。

由于T0是每100μs中斷一次,所以T0的中斷服務程序的執(zhí)行時間必須要在100μs以內。T0的中斷服務如下:

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,符合計數要求。T0的中斷服務程序在計數的過程中已將計數結果調整成BCD碼,從而使顯示程序在顯示這部分數據時無需進行從二進制到BCD碼的轉換。

結束語

以上述設計制成的毫秒計,其精度取決于8031的晶振的精度以及4N30的延時特性,實際誤差僅在2μs以內。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

液位計相關文章:磁翻板液位計原理




評論


相關推薦

技術專區(qū)

關閉