趙思成 郭 娜
中圖分類號:TP7 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-7597(2009)0110026-01
隨著單片機(jī)嵌入式應(yīng)用系統(tǒng)和紅外線遙控技術(shù)的發(fā)展,越來越多的紅外遙控器械在單片機(jī)系統(tǒng)中來代替鍵盤進(jìn)行輸入工作。在工控設(shè)備中,傳統(tǒng)的方法是用專用的紅外發(fā)射和接收電路來實(shí)現(xiàn)的。這種設(shè)計方法要考慮到震蕩載頻的產(chǎn)生,接收的自動增益控制(AGC)等,使得在設(shè)計、制作和調(diào)試上非常繁瑣,容易產(chǎn)生相互干擾。如果采用現(xiàn)在廣泛使用的普通遙控器加上一體化接收頭作為單片機(jī)的輸入系統(tǒng),就可以有效地克服上述缺點(diǎn)。
一、紅外遙控系統(tǒng)原理
紅外遙控的發(fā)射電路是采用紅外發(fā)光二極管來發(fā)出經(jīng)過調(diào)制的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外發(fā)射器發(fā)射雕紅外光轉(zhuǎn)換為相應(yīng)的電信號,再送后置放大器。
發(fā)射機(jī)一般由指令鍵(或操作桿)、指令編碼系統(tǒng)、調(diào)制電路、驅(qū)動電路、發(fā)射電路等幾部分組成。當(dāng)按下指令鍵或推動操作桿時,指令編碼電路產(chǎn)生所需的指令編碼信號,指令編碼信號對載體進(jìn)行調(diào)制,再由驅(qū)動電路進(jìn)行功率放大后由發(fā)射電路向外發(fā)射經(jīng)調(diào)制定指令編碼信號。
接收電路一般由接收電路、放大電路、調(diào)制電路、指令譯碼電路、驅(qū)動電路、執(zhí)行電路(機(jī)構(gòu))等幾部分組成。接收電路將發(fā)射器發(fā)出的已調(diào)制的編碼指令信號接收下來,并進(jìn)行放大后送解調(diào)電路,解調(diào)電路將已調(diào)制的指令編碼信號解調(diào)出來,即還原為編碼信號。
二、編碼格式
LC7461M型遙控發(fā)射芯片采用PWM方法來發(fā)送信號。當(dāng)按下某個鍵后,就會發(fā)出一組長108ms的編碼。它由引導(dǎo)碼、13位用戶識別碼、13位用戶識別反碼、8位操作碼和8位操作反碼組成,共計42位信息。其中引導(dǎo)碼由9ms的高電平和4.5ms的低電平組成。因?yàn)樵诟鞣N光電干擾中干擾信號都是以尖脈沖形式出現(xiàn)的,持續(xù)時間很短(一般都在7ms以內(nèi)),當(dāng)接收到13.5ms的引導(dǎo)碼后,接著接收到的信號就可以認(rèn)為是發(fā)射的數(shù)據(jù)信號,這樣就有效地防止了外界的干擾。用戶識別碼可以準(zhǔn)確地識別出不同的電器設(shè)備,防止不同機(jī)種間的相互干擾。同時,利用發(fā)送的反碼信息可以防止接收錯誤。對于位信息,7461芯片發(fā)射的“0”代碼總長1.125ms,以0.56ms的高電平開始,然后為
0.565ms的低電平;“1”代碼總長2.25ms,也是以0.56ms的高電平開始,不同的是后邊低電平的長度為1.69ms。
三、接收
接收部分采用的是一體化接收頭,它是集接收、放大于一體,不需外接任何元件就能完成從紅外線接收到產(chǎn)生與單片機(jī)兼容信號的所有工作。當(dāng)它收到紅外信號后,會反相輸出。最終單片機(jī)識別的編碼與位碼應(yīng)該與紅外線遙控器發(fā)射的相反。
四、和單片機(jī)的接口
我們這里以國內(nèi)電氣控制中常用的51架構(gòu)單片機(jī)為例,闡述硬件連接和軟件解碼過程。
(一)硬件連接
采用一體化接收頭作為接收器件后,與單片機(jī)的連接非常簡單。單片機(jī)控制系統(tǒng)僅需開啟一個外部中斷,將之與一體化接收頭的OUT端相連接即可,
(二)軟件解碼
1.延時查詢式解碼。解碼的關(guān)鍵是如何識別“0”和“1”。從接收到位的特征我們可以發(fā)現(xiàn),“0”和“1”均以0.56ms的低電平開始,不同的是高電平的寬度,“0”為0.565ms,“1”為1.69ms。所以,可以根據(jù)高電平的寬度來區(qū)分“0”和“1”。如果0.56ms低電平過后開始延時,再過0.565ms以后讀到了低電平,說明該位是“0”,否則為“1”。為了可靠接收,防止誤讀,我們一般可取中間值最為可靠。
2.全中斷式解碼。上述延時方法簡單易懂,但其進(jìn)入解碼程序后會大量使用延時操作,極大地降低了單片機(jī)的利用率,而且容易產(chǎn)生誤判、無法退出解碼程序的現(xiàn)象。經(jīng)研究改進(jìn),現(xiàn)設(shè)計出一種全中斷接收解碼方式。
通過上述脈沖波形分析,我們發(fā)現(xiàn)“0”和“1”的區(qū)別就在于這一位的波長為1.125ms還是為2.25ms。如果為1.125ms,我們就認(rèn)為接收到了“0”;如果為2.25ms,我們就認(rèn)為接收到了“1”。從整個接收到的信息編碼看,數(shù)據(jù)位是以低電平開始的,又以下一個低電平到來而結(jié)束。這時,我們可以對位的采集采用外部中斷方式,使在負(fù)邊沿產(chǎn)生一個外部中斷,在中斷子程序中啟動一從0開始計數(shù)的定時器。在下一個中斷里,首先把剛才的定時值保存下來。這時這個值就是剛才接收位的時長。我們可以把這個值與1.125ms和2.25ms比較,從而判斷是“0”還是“1”。考慮到執(zhí)行效率問題,我們可以只用
來對其標(biāo)定。事實(shí)上,我們可以只比較定時器THx中的數(shù)據(jù)即可。其解碼流程如圖1所示。
這種外部中斷與定時器結(jié)合的方式解碼準(zhǔn)確,CPU的利用率高。需要補(bǔ)充的是,當(dāng)鍵盤按下長達(dá)108ms后,遙控器會開始發(fā)送連續(xù)信號,對7461來說與引導(dǎo)碼格式相同。我們可以根據(jù)需要用定時器溢出退出解碼狀態(tài)與重碼計數(shù)來分別處理。
五、抗干擾措施
用紅外遙控器作為單片機(jī)的輸入系統(tǒng),采用檢測脈寬作為信號區(qū)分標(biāo)志,同時引導(dǎo)碼為13.5ms超寬脈沖作為起始信號,抗干擾能力強(qiáng),適合應(yīng)用于高壓、輻射、有毒氣體、粉塵等工業(yè)環(huán)境。如果該系統(tǒng)應(yīng)用于有嚴(yán)重紅外干擾的場合時,我們可以采取在接收頭上加裝紅色濾光片、軟件上采用高中斷優(yōu)先級,兩次比較等方式,從而有效抑制干擾。
六、結(jié)束語
單片機(jī)應(yīng)用系統(tǒng)加接這種紅外遙控鍵盤,接口簡單,操作方便,全中斷軟件解碼性能可靠穩(wěn)定,抗干擾能力強(qiáng),并且節(jié)約了單片機(jī)應(yīng)用系統(tǒng)的硬件資源,具有很好的應(yīng)用空間。
參考文獻(xiàn):
[1]何立民,單片機(jī)應(yīng)用系統(tǒng)設(shè)計,北京:北京航空航天大學(xué)出版社,1990.
[2]潘永雄,新編單片機(jī)原理與應(yīng)用,西安電子科技大學(xué)出版社,2003.
[3]蘇長贊,紅外線和超聲波遙控,人民郵電出版社,1999.