復(fù)智能光電旋鈕的設(shè)計(jì)
引言
目前,在設(shè)計(jì)儀器的控制面板時(shí),主要采用各種按鍵,通過(guò)檢測(cè)按鍵是否被按下產(chǎn)生控制信號(hào)。但是,在一些需要連續(xù)產(chǎn)生控制信號(hào)的場(chǎng)合,使用按鍵可能帶來(lái)操作上的不便。而且,長(zhǎng)期高頻率使用的按鍵極易損壞。如果使用光電旋鈕,根據(jù)其旋轉(zhuǎn)速率和旋轉(zhuǎn)方向產(chǎn)生控制信號(hào),就能提高使用的靈活性和可靠性。市場(chǎng)上的此類產(chǎn)品很少,且價(jià)格昂貴。經(jīng)過(guò)多次試驗(yàn),筆者成功地設(shè)計(jì)出采用單片機(jī)作為控制核心的智能光電旋鈕。
智能光電旋鈕按硬件結(jié)構(gòu)可分為機(jī)械部分和硬件電路部分。
機(jī)械部分
機(jī)械部分的主要功能是完成機(jī)械旋轉(zhuǎn)到電信號(hào)的轉(zhuǎn)換。如圖1所示,機(jī)械部分由一個(gè)可任意旋轉(zhuǎn)的旋鈕、與旋鈕相連的遮光片及兩對(duì)光電收發(fā)器組成。遮光片的邊緣設(shè)計(jì)成如圖1所示的齒輪形,并定位于兩對(duì)光電收發(fā)器之間。當(dāng)遮光片旋轉(zhuǎn)時(shí),其邊緣交替遮蔽兩對(duì)光電收發(fā)器,光電收發(fā)器就將間斷的光脈沖信號(hào)轉(zhuǎn)換為兩路電脈沖信號(hào),供硬件電路部分處理。
硬件電路
硬件電路部分主要由脈沖整形電路和intel8031單片機(jī)為核心的單片機(jī)系統(tǒng)構(gòu)成(見(jiàn)圖2)。圖2中:整形電路將光電收發(fā)器產(chǎn)生的兩路脈沖信號(hào)整形后,送入intel8031單片機(jī)的P1.0、P1.1口。單片機(jī)通過(guò)內(nèi)部定時(shí)器中斷,對(duì)P1.0、P1.1 口輸入的脈沖信號(hào)進(jìn)行采樣。采樣數(shù)據(jù)經(jīng)處理程序處理后,生成代表旋轉(zhuǎn)速率的脈沖信號(hào)和代表旋轉(zhuǎn)方向的方向信號(hào),并由P1.2、P1.3口串行輸出。也可根據(jù)實(shí)際需要,將識(shí)別到的旋轉(zhuǎn)速率、旋轉(zhuǎn)方向等信息通過(guò)并行接口輸出到其它顯示、控制設(shè)備。
圖2中的整形電路由兩個(gè)如圖3所示的模塊構(gòu)成,分別對(duì)應(yīng)兩對(duì)光電收發(fā)器。555定時(shí)器構(gòu)成單穩(wěn)態(tài)觸發(fā)器,對(duì)光電收發(fā)器發(fā)送的脈沖信號(hào)進(jìn)行整形。當(dāng)光線照射時(shí),光電收發(fā)器的收端處于導(dǎo)通狀態(tài),則單穩(wěn)態(tài)觸發(fā)器的輸入引腳為一高電平。當(dāng)光線被遮住時(shí),光電收發(fā)器的收端處于截止?fàn)顟B(tài)。此時(shí),單穩(wěn)態(tài)觸發(fā)器的輸入端被電阻R2下拉為低電平。適當(dāng)調(diào)節(jié)電阻R2,使高電平大于2/3 Vcc,低電平小于1/3 Vcc,單穩(wěn)態(tài)觸發(fā)器就能對(duì)輸入脈沖信號(hào)進(jìn)行整形,并將整形信號(hào)輸出至8031單片機(jī)系統(tǒng)。
8031單片機(jī)系統(tǒng)采用外置程序存儲(chǔ)器的典型應(yīng)用電路,這里不再贅述。
軟件設(shè)計(jì)
智能光電旋鈕的軟件主要是設(shè)計(jì) 8031單片機(jī)系統(tǒng)的定時(shí)器中斷,判別遮光片的旋轉(zhuǎn)方向和旋轉(zhuǎn)速率。設(shè)計(jì)難點(diǎn)在于旋轉(zhuǎn)方向識(shí)別。
旋轉(zhuǎn)方向識(shí)別原理
將兩對(duì)光電收發(fā)器的接收部分近似為A、B兩個(gè)點(diǎn),當(dāng)遮光片旋轉(zhuǎn)時(shí),如圖4所示。
圖中,設(shè)A、B兩點(diǎn)間距為“e”,遮光片的遮光區(qū)長(zhǎng)度為“d”。旋鈕制作時(shí)使遮光片的遮光區(qū)長(zhǎng)度和非遮光區(qū)長(zhǎng)度相等,且“d”大于“e”。遮光片旋轉(zhuǎn)時(shí),其運(yùn)動(dòng)圖像可近似為周期性占空比為1:1的矩形脈沖(凸部代表遮光區(qū),凹部代表透光區(qū))。這樣,當(dāng)遮光片向箭頭方向移動(dòng)時(shí),必然循環(huán)處于:A、B被完全遮蔽;A 未遮蔽而B(niǎo)被遮蔽兩種狀態(tài)。當(dāng)遮光片反向移動(dòng)時(shí),則循環(huán)處于:A、B被完全遮蔽;B未遮蔽而A被遮蔽兩種狀態(tài)。
光電收發(fā)器收端處于遮蔽狀態(tài)時(shí),單穩(wěn)態(tài)觸發(fā)器輸出高電平,反之,則輸出低電平。所以,單片機(jī)只需定時(shí)采集輸入的電平,將“檢測(cè)到A、B被完全遮蔽”作為判決起始點(diǎn),然后根據(jù)是否緊接著出現(xiàn)“A 未遮蔽而B(niǎo)被遮蔽”或“B 未遮蔽而A被遮蔽”這兩種狀態(tài)來(lái)判斷其旋轉(zhuǎn)方向。
旋轉(zhuǎn)速率識(shí)別原理
旋轉(zhuǎn)速率的識(shí)別實(shí)質(zhì)上是識(shí)別“A、B完全遮蔽”和“A、B之一未遮蔽”這兩種狀態(tài)轉(zhuǎn)換的頻率。同樣,如果將“A、B被完全遮蔽”作為判決起始點(diǎn),然后根據(jù)是否緊接著出現(xiàn)“A 未遮蔽而B(niǎo)被遮蔽”或“B 未遮蔽而A被遮蔽”這兩種狀態(tài)之一,無(wú)論哪種狀態(tài)一出現(xiàn),都在脈沖輸出端產(chǎn)生一脈沖信號(hào)。同時(shí),對(duì)產(chǎn)生的脈沖信號(hào)記數(shù),脈沖的總個(gè)數(shù)除以脈沖記數(shù)的時(shí)間,就能得到旋轉(zhuǎn)速率。
程序流程圖
這種智能光電旋鈕的軟件并不復(fù)雜,用8031匯編語(yǔ)言編寫的程序總長(zhǎng)不超過(guò)50條語(yǔ)句。軟件流程示于圖5。
結(jié)語(yǔ)
這種智能光電旋鈕,其單片機(jī)系統(tǒng)的硬件設(shè)計(jì)和軟件開(kāi)發(fā)都由制作者完成。所以,當(dāng)需要在控制面板上附加按鍵及完成液晶顯示等功能時(shí),只需設(shè)計(jì)附加的單片機(jī)系統(tǒng)外圍電路,而不必再單獨(dú)設(shè)計(jì)單片機(jī)系統(tǒng)。
這種智能光電旋鈕制作成功后,目前已應(yīng)用于一些信號(hào)解調(diào)設(shè)備的控制面板。其性能穩(wěn)定、可靠,達(dá)到了同類產(chǎn)品的水平。