翟祥林,王景成
紅外遙控技術是70年代發(fā)展起來的新興電子技術,它具有價廉、非接觸控制等特點,在普通的環(huán)境下,可靠性高。目前,紅外遙控技術已經(jīng)取得了非常廣泛的應用。不僅很多家電,像電視、影碟機、空調(diào)等都采用紅外遙控,而且在很多工業(yè)設備中,為了克服一些惡劣的工作環(huán)境,也紛紛采用紅外遙控器來控制設備。另外,為了方便使用,許多儀器也都采用紅外遙控器來遙控操作。
一套完整的紅外遙控系統(tǒng),都由紅外發(fā)送器和紅外接收器兩部分組成。紅外發(fā)送器的功能是把它上面的按鍵的功能編碼,以 30~60kHz的載波調(diào)制后加到近紅外線發(fā)光二極管上發(fā)送出去。通常采用的近紅外線發(fā)光二極管所發(fā)出的近紅外線光的中心波長在 940nm左右。紅外接收器的功能是將發(fā)送端的調(diào)制波解調(diào),得出發(fā)送端所發(fā)送的功能編碼,遙控設備再根據(jù)功能編碼來進行相應的動作,從而達到遙控的目的。
隨著技術的不斷發(fā)展,采用紅外遙控的電器設備逐漸增多。為了防止誤操作,不同廠家不同種類遙控設備的遙控系統(tǒng)編碼方式各不相同,互不兼容,但是它們基本都遵循如下方式:
圖1 紅外遙控系統(tǒng)的編碼方式
引導碼信號是必須的,不可省略,不同廠家所定的信號寬度略有不同。引導碼的信號需要一段較長的信號時間,在此時間內(nèi)來設定紅外接收器內(nèi)光電路的增益,大小隨輸入信號的強度而不同,這樣動作可較為穩(wěn)定。
編碼輸出可分為兩部分,前面是用戶碼(custom code),后面是數(shù)據(jù)碼(data code)。一般將不同的custom code當成不同的產(chǎn)品來分類,而data code則代表功能設定。custom code 及data code的長度,就是傳送的bit數(shù),不同的產(chǎn)品也會有所不同。有時為了抗干擾的需要,分別將custom code及data code的反碼再一起傳送出去。
編碼輸出的調(diào)制方式一般采用 PPM 方式(Pulse Position Modulation),即利用脈沖之間的大小作為傳送信號的“0”與“1”,一般采取間隔短的代表“1”,間隔短的代表“0”。
重復碼是表示使用者按下按鍵(在按下按鍵時就開始發(fā)送),間隔一段時間以后,若使用者仍未將按鍵放開,為了減少電源的功耗,不再傳送完整的編碼輸出,發(fā)射器改為發(fā)送重復碼,表示按鍵仍在按著。重復碼不是必須的。重復碼的時間與引導碼的時間、“0”和“1”的時間都應不同。
在完整的編碼輸出后,應該再輸出一個停止位,這樣,在接收器的接收處理程序中才可以確定編碼輸出的最后一個bit的時間。同理,在重復碼的最后也必須加上一個停止位。
紅外發(fā)射器應用電路的一般形式如下:
圖2 紅外遙控系統(tǒng)發(fā)送部分的原理圖
紅外發(fā)射器的工作流程:首先,發(fā)射器中的MCU以掃描方式檢測是否有按鍵按下;其次,有按鍵按下后,查找該按鍵對應的功能編碼;然后,就開始傳送,把引導碼,用戶碼及其反碼,按鍵的功能編碼及其反碼,停止位依次傳送出去。所有的信息傳送完之后,若按鍵仍持續(xù)按著,每超過一段時間(一般取100ms左右)后就傳送一次重復碼。
整個流程如下框圖所示:
圖3 紅外遙控系統(tǒng)發(fā)送部分的流程圖
紅外發(fā)送的最佳發(fā)射頻率為38kHz。采用I/O口傳送方式來發(fā)送時,可利用定時器中斷或空指令延時來產(chǎn)生38kHz的頻率。其中空指令延時與MCU的晶振頻率有關,空指令執(zhí)行次數(shù)計算公式如下:
空指令執(zhí)行次數(shù) = 晶振頻率 / 空指令的指令周期 /38000
如果發(fā)送單片機上有PWM口時,采用PWM口傳送方式傳送則更為方便,因為可利用PWM口來產(chǎn)生38kHz的頻率,PWM口的具體使用方法可參閱相關單片機的使用手冊。
假如用戶碼為0110 1110B(二進制表示法),按鍵對應的編碼為0110 0000B,采用I/O口傳送方式發(fā)送,則從此I/O口輸出的波形如下所示:
圖4 紅外遙控系統(tǒng)信號發(fā)送波形示例
其中,高電平部分由 38kHZ的脈沖組成,從而輸出38kHZ的紅外載波。
現(xiàn)在市面上已有專用的紅外發(fā)送單片機,只要加上少量的外圍電路和按鍵,即可組成一個紅外遙控器。如 Holtech公司(臺灣盛揚半導體)的八位 OTP載波遙控單片機HT48RA0A ,它是八位高性能精簡指令集的單片機,專為多輸入/輸出口的產(chǎn)品而設計的,特別適用于作紅外遙控器中的控制器。
紅外接收器的接收模塊收到紅外線光后,由光電二極管做光電轉換,經(jīng)過放大、帶通濾波器濾波,再經(jīng)過檢波、整波即可將發(fā)送端的調(diào)制波解調(diào)。現(xiàn)在市面上已有將上述接收過程的電路整合成單一元件的器件,如日本光電子公司的PIC-12043、西門子公司的SFH506-38。
紅外接收器應用電路的一般形式如下:
圖5 紅外遙控系統(tǒng)接收部分的原理圖
經(jīng)解調(diào)處理以后,紅外接收模塊輸出的信號為源發(fā)射信號的反向。假如按上述紅外發(fā)送部分發(fā)送信號,則紅外接收模塊的輸出信號應為如下形式:
圖6 紅外遙控系統(tǒng)信號接收波形示例
紅外接收器中的MCU至少有一個定時器和一個外部中斷。其中定時器以特定的頻率計數(shù),來確定信號的一個脈沖的時間。紅外接收模塊的輸出信號應接在外部中斷源的引腳上,此外部中斷應設置為下降沿觸發(fā)方式,如果不能設置為此方式,在紅外接收模塊的輸出后面還要加上反向電路或反向器。在定時器中斷服務程序中,每執(zhí)行一次就將計數(shù)值加1,在外部中斷服務程序中,檢查定時器中的計數(shù)值大小,從而確定接收信號的某個脈沖的內(nèi)容:引導碼、0,1、重復碼,并且清除計數(shù)值內(nèi)容。
在接收端來說,假如引導碼的低電平和高電平時間分別為 8.8ms、4.4ms,“1” 的低電平和高電平時間分別為 0.55ms、1.65ms,“1” 的低電平和高電平時間分別為 0.55ms,“0” 的低電平和高電平時間都為 0.55ms,重復碼的低電平和高電平時間分別為8.8ms、2.2ms。若定時器以8kHz的頻率計數(shù),則各階段的計數(shù)值都可以計算出來:
引導碼:(8.8ms+4.4ms)/(1/8000)=105.6
“0”: 1.1ms /(1/8000)=8.8
“1”: 2.2ms /(1/8000)=17.6
重復碼:(8.8ms+2.2ms)/(1/8000)=89.6
為提高抗干擾的能力,可以理論的計數(shù)值為中心給定一范圍,只要定時器中的計數(shù)值落在相應的范圍,就確定此脈沖為相應的值。
紅外接收的整個判斷流程如下:
圖7 紅外遙控系統(tǒng)接收部分的流程圖
下面是一個紅外遙控系統(tǒng)中的接收模塊源代碼,使用對象是Windbond公司的51系列單片機W78E52,經(jīng)在產(chǎn)品中長期使用,證明可以高效無誤的實現(xiàn)遙控功能。下面僅給出了接收模塊部分的源代碼,其他部分均已略去(包括調(diào)用的子函數(shù)、中斷的初始化等),給出部分采用C51語言編寫。詳細源代碼如下:
在實際使用的紅外遙控系統(tǒng)中,紅外發(fā)送部分即為常說的遙控器,它一般只作發(fā)送遙控指令用,功能較為單一。由于遙控器基本上都使用電池供電,因此,編制紅外發(fā)送部分MCU的控制程序時,一定要遵循節(jié)省電源的原則。紅外接收部分一般只是在產(chǎn)品中接收外部操作指令,并不是產(chǎn)品的核心功能。目前,使用紅外遙控的產(chǎn)品有兩種方式來完成紅外接收功能,一種方式是直接在產(chǎn)品的主控MCU中加上紅外接收模塊,另外一種方式是產(chǎn)品中兩個MCU,其中一個負責人機接口,完成紅外接收解碼等工作,再通過一定的接口傳輸給另外一個MCU,即完成產(chǎn)品主要功能的MCU。
目前,帶有紅外遙控的電器設備逐漸增多。如果在同一環(huán)境下需要遙控多臺設備,由于不同廠家不同種類的遙控設備與其遙控系統(tǒng)一一對應,互不兼容,操作就十分不方便,有時還會因為拿錯遙控器而不能及時操作?,F(xiàn)在市面上出現(xiàn)的一種既具有通用性又能適應每個用戶的特殊要求,并能隨時更新內(nèi)容的通用型學習式紅外遙控器,就能很好的解決這類問題。這種遙控器具有自我學習功能,它能夠學習并存儲不同種類的遙控器所發(fā)出的各種控制信號,然后重發(fā)出來,從而實現(xiàn)一臺遙控器同一控制多種設備。
[1] 王鎮(zhèn)道等.長距離遙控[J] .半導體技術,2001(4):39-41.
[2] 邱玉春,李文俊.單片機系統(tǒng)中的紅外通信接口[J] .電子產(chǎn)品世界,2000(5) :36-37.
[3] 麥山等.基于單片機的協(xié)議紅外遙控系統(tǒng)[J] .電子技術,1998(5):22-24.
[4] 霍林科.彩電遙控系統(tǒng)的軟件設計[J] .電視技術,1997(4):29-35.
[5] 謝曉暉.紅外遙控技術在復費率電度表中的應用[J] .電測與儀表,1996(4):24-26.