消費(fèi)娛樂設(shè)備的紅外(IR)遙控器雜亂無章,似乎是世界各地家庭的永久固定裝置。但是,使用MAXQ2000微控制器和一些廉價(jià)的器件,可以構(gòu)建一個(gè)遙控器,從其他遙控器“學(xué)習(xí)”代碼并按需回放代碼。
概述
簡單的紅外(IR)遙控器在許多家庭中占有崇高的地位。原因不難理解。使用遙控器,可以控制現(xiàn)代家庭中常見的各種娛樂設(shè)備。您可以從世界各個(gè)角落召喚節(jié)目,收聽來自多個(gè)來源的音樂,播放音頻和視頻媒體,甚至保存節(jié)目以供以后查看(如果需要),所有這些都可以在您最喜歡的房間舒適地進(jìn)行。
然而,紅外遙控器的普及已經(jīng)演變成一個(gè)問題。很少有家庭沒有三個(gè)、四個(gè)或更多這樣的小設(shè)備弄亂桌子。有一個(gè)用于電視,一個(gè)用于DVR,另一個(gè)用于VCR,還有一個(gè)用于音頻系統(tǒng),此列表不包括有線電視盒或衛(wèi)星接收器,分配開關(guān),DVD刻錄機(jī)或任何其他引起我們注意的設(shè)備。
這種遙控器組合的解決方案是學(xué)習(xí)遙控器,它從另一個(gè)遙控器學(xué)習(xí)代碼。學(xué)習(xí)遙控器處于“學(xué)習(xí)”模式,第二個(gè)遙控器“教導(dǎo)”學(xué)習(xí)遙控器如何傳輸命令,例如調(diào)高音量。從那時(shí)起,每當(dāng)按下適當(dāng)?shù)陌粹o時(shí),學(xué)習(xí)遙控器都可以發(fā)送學(xué)習(xí)的命令。
本應(yīng)用筆記演示了如何圍繞MAXQ2000微控制器(Maxim的MAXQ RISC微控制器之一)構(gòu)建這種學(xué)習(xí)遙控器。但在設(shè)計(jì)細(xì)節(jié)之前,需要一些背景知識(shí)。
用光控制
第一個(gè)電視遙控器是Zenith? Space Commander。它使用機(jī)械布置,在激活時(shí)以特定頻率產(chǎn)生超聲波音調(diào)。想想音叉:當(dāng)敲擊時(shí),它會(huì)以固定的、可預(yù)測的頻率振動(dòng)。理論上,音叉發(fā)出的聲波可以被接收并解釋為做某事的命令。因?yàn)樵缙诘倪b控器是完全機(jī)械的,所以不需要電池。然而,它只有三個(gè)命令:電視打開和關(guān)閉、頻道向上和頻道向下。
隨著半導(dǎo)體器件變得越來越便宜和越來越受歡迎,紅外光取代超聲波成為首選的控制機(jī)制。簡單來說,紅外遙控系統(tǒng)由一個(gè)發(fā)射調(diào)制紅外光束的手持單元和一個(gè)接收調(diào)制紅外并解釋調(diào)制的基本單元組成,通常作為采取某些操作的命令。然而,由于工程可行性、物理現(xiàn)實(shí)和市場需求的結(jié)合,此操作的細(xì)節(jié)并不那么簡單。
殘酷的事實(shí)是,環(huán)境中充滿了紅外輻射,因此期望在嘈雜的輻射能量之上聽到任何微不足道的調(diào)制方案是不現(xiàn)實(shí)的。所有發(fā)熱的東西也會(huì)發(fā)出紅外輻射。例如,白熾燈泡比可見光發(fā)出更多的紅外。甚至人體也會(huì)發(fā)出紅外輻射。因此,大多數(shù)紅外遠(yuǎn)程發(fā)射器在應(yīng)用數(shù)據(jù)之前使用低頻載波(通常在28kHz和60kHz之間)調(diào)制光。
以固定頻率調(diào)制光束,可以很容易地從典型家庭環(huán)境中的所有干擾紅外輻射中檢測出來。通過使用簡單的帶通濾光片,可以隔離和解釋紅外信號(hào)。為此目的,有各種廉價(jià)的集成電路,包括紅外光電二極管和帶通濾光片。
產(chǎn)生這種調(diào)制光束很簡單。紅外發(fā)光LED器件常見且價(jià)格低廉;創(chuàng)建調(diào)制光束可以像從適當(dāng)?shù)?a target="_blank">振蕩器驅(qū)動(dòng)紅外 LED 一樣簡單。有關(guān)可以調(diào)制和接收IR調(diào)制數(shù)據(jù)的電路,請(qǐng)參見圖1。
圖1.電信號(hào)被轉(zhuǎn)換成調(diào)制的紅外光束,然后又轉(zhuǎn)換成電信號(hào)。為了擴(kuò)展發(fā)射器的范圍,使用了PNP驅(qū)動(dòng)器??梢葬槍?duì)所選的紅外 LED 調(diào)整組件值。
隨著調(diào)制LED光源和接收器IC以與光源相同的頻率工作,人們有了遠(yuǎn)程控制系統(tǒng)的開端。當(dāng)LED電路工作并在接收器范圍內(nèi)時(shí),接收器輸出變?yōu)榛顒?dòng)狀態(tài)。如果只需要該操作(外部電路的簡單開關(guān)控制),則任務(wù)將完成。
但僅靠開關(guān)控制是不夠的。即使是簡單的遙控器也可以發(fā)送各種不同的命令,例如音量增大和減小、通道選擇、輸入源選擇,也許還有單個(gè)數(shù)字。出于這個(gè)原因,需要其他東西,一種進(jìn)一步“調(diào)制”調(diào)制光束的方法。這就是故事變得有趣的地方。
隨著紅外遙控器被廣泛接受,每個(gè)制造商都采取了自己的方式來調(diào)制光束。雖然所有設(shè)備都使用數(shù)字控制(即調(diào)制波束的特性表示數(shù)字“1”或“0”位),但具體情況差異很大。有些使用簡單的不歸零(NRZ)調(diào)制。其他人使用一種脈寬調(diào)制(PWM)的形式,因此長脈沖代表一種狀態(tài),短脈沖代表交替狀態(tài)。還有一些使用一種雙相調(diào)制形式,其中開到關(guān)轉(zhuǎn)換代表一種狀態(tài),關(guān)到通轉(zhuǎn)換代表另一種狀態(tài)。這種令人困惑的情況一直持續(xù)到今天,這使得創(chuàng)建一個(gè)通用遙控器來操作任何制造商的設(shè)備成為真正的挑戰(zhàn)。
設(shè)計(jì)變量
設(shè)計(jì)通用學(xué)習(xí)遙控器時(shí)必須考慮三個(gè)變量:載波頻率、位格式和幀格式。
載波頻率
載波頻率是光被調(diào)制的頻率。它與實(shí)際比特率無關(guān)。對(duì)于任何給定系統(tǒng),這是一個(gè)恒定頻率,范圍約為28kHz和60kHz,但通常在36kHz和38kHz之間工作。
位格式
位格式是系統(tǒng)區(qū)分“1”和“0”位的方式,它因制造商而異。在某些情況下,“亮起”周期的寬度是決定因素。索尼?制造的一些系統(tǒng)使用 1,100μs 的“亮通”脈沖表示“1”位,而 550μs 的“亮通”脈沖表示“0”位。脈沖之間的間隔始終為550μs。
另一種位格式保持“亮通”脈沖固定,但改變恒定寬度脈沖之間的空間。一些松下(松下?)系統(tǒng)發(fā)出恒定的800μs脈沖流,但將“1”位指定為脈沖之間的2,400μs空間,將“0”位指定為脈沖之間的800μs空間。
最常用的代碼系統(tǒng)之一是飛利浦 RC-5 代碼。在此代碼中,每個(gè)位單元由一個(gè)889μs的調(diào)制光突發(fā)和一個(gè)889μs的空間組成。如果位單元由“亮起”周期后跟“關(guān)閉”周期組成,則認(rèn)為它表示“1”;如果它由“熄燈”周期后跟“亮起”周期組成,則認(rèn)為它表示“0”。在RC-5系統(tǒng)中,通過在每幀的開頭強(qiáng)制執(zhí)行兩個(gè)“1”位來確保位同步。圖 2 說明了各種位格式。
圖2.紅外遙控系統(tǒng)中可以使用幾種位格式,但都涉及用載波調(diào)制光束,然后使用幾種技術(shù)之一調(diào)制載波。
幀格式
確定位格式后,設(shè)計(jì)人員必須確定幀格式。在許多情況下,這將包括一個(gè)同步脈沖(通常是比普通數(shù)據(jù)脈沖稍長的脈沖),然后是特定格式的數(shù)據(jù)位。通常,數(shù)據(jù)由兩部分組成:傳達(dá)所需功能的“數(shù)據(jù)”部分,以及與要控制的設(shè)備相對(duì)應(yīng)的“自定義”部分。因此,一個(gè)設(shè)備的某個(gè)數(shù)據(jù)項(xiàng)可以對(duì)應(yīng)于另一個(gè)設(shè)備的不同數(shù)據(jù)項(xiàng)。
一些代碼每幀傳輸兩次信息:一次在正常模式下,一次在位檢測顛倒的情況下。通過這種方式,提供了一定程度的基本錯(cuò)誤檢查。如果兩個(gè)副本不匹配,則假定該命令無效。
傳輸幀后,通常會(huì)一遍又一遍地重復(fù)。常見的幀重復(fù)率范圍約為每秒 10 到 20 幀。一些協(xié)議只傳輸一次代碼,然后重復(fù)“鍵下”代碼。本文中描述的系統(tǒng)不會(huì)處理這些協(xié)議,因?yàn)榧俣總€(gè)重復(fù)幀都包含數(shù)據(jù)和自定義代碼。
最后,一些協(xié)議,包括RC-5協(xié)議,在每次按鍵時(shí)都會(huì)反轉(zhuǎn)一點(diǎn)。這有助于識(shí)別接收間隙是否是由于信號(hào)丟失造成的,例如,有人在遙控器和基本單元之間行走,或者它是否實(shí)際上代表第二次按鍵。此功能未在此項(xiàng)目中實(shí)現(xiàn)。
尋求普遍性
基于上述討論,通用學(xué)習(xí)遙控器似乎需要知道這些位格式中的每一種才能完成其任務(wù)。如果我們擔(dān)心結(jié)果數(shù)據(jù)集的大小,這將是真的:典型的紅外遙控消息只有幾十位長。但鑒于內(nèi)存相對(duì)便宜,我們可以簡單地對(duì)傳入的比特流進(jìn)行采樣并記錄樣本。
因此,對(duì)于這個(gè)項(xiàng)目,我們真的不關(guān)心位格式或幀格式。這是因?yàn)檫@個(gè)系統(tǒng)只是簡單地記錄和播放它看到的任何內(nèi)容。通過對(duì)正在使用的系統(tǒng)保持不可知性,可以保證真正的普遍性。
接收和記錄
接收器電路本身很簡單。上拉至V的光電晶體管DD構(gòu)成輸入電路,可直接連接至MAXQ2000微控制器的輸入引腳。不需要或?qū)嶋H上不需要特殊的接收器IC。我們不關(guān)心范圍,而是希望記錄實(shí)際的調(diào)制包絡(luò),而不管載波頻率如何。
在飽和模式下操作光電晶體管是一個(gè)小問題。光電晶體管不是特別快的器件;它們具有從完全打開到完全關(guān)閉狀態(tài)的恢復(fù)時(shí)間,該時(shí)間大于大多數(shù)系統(tǒng)的位時(shí)間。因此,如果光信號(hào)過多,光電晶體管將飽和。它將完全錯(cuò)過載波頻率,僅遵循調(diào)制波形的輪廓。但如果信號(hào)太少,根本就沒有可識(shí)別的波形。圖 3 說明了這些條件。
圖3.接收紅外信號(hào)時(shí),信號(hào)強(qiáng)度必須正確。如果信號(hào)強(qiáng)度太高,光電晶體管將飽和,僅檢測到信號(hào)的低頻部分。如果信號(hào)強(qiáng)度太低,載波頻率永遠(yuǎn)不會(huì)超過檢測閾值。
因此,將主遙控器和學(xué)習(xí)遙控器放置在恰到好處的距離至關(guān)重要。但是這個(gè)距離是多少?為了確定這一點(diǎn),學(xué)習(xí)遙控器中的軟件會(huì)執(zhí)行一些預(yù)采樣以確定距離是否正確。在開始記錄之前,學(xué)習(xí)遙控器(即MAXQ2000微控制器)對(duì)輸入通道上的信號(hào)進(jìn)行采樣。如果沒有,遙控器會(huì)假定信號(hào)電平太低,并點(diǎn)亮適當(dāng)?shù)?LED。但是,如果微控制器遙控器在輸入通道上看到轉(zhuǎn)換,但沒有100μs或更小的脈沖(可以假設(shè)載波頻率大于10kHz),則假定信號(hào)電平過高并點(diǎn)亮不同的LED。最后,如果微控制器觀察到由“關(guān)閉”周期分隔的快速脈沖突發(fā),則假定信號(hào)電平處于“最佳點(diǎn)”是理想的。然后,學(xué)習(xí)遙控器的代碼將轉(zhuǎn)換為錄制狀態(tài)。
在錄制狀態(tài)下必須發(fā)生幾件事。微控制器遙控器必須確定載波的輸入頻率。由于微控制器的工作頻率為16MHz,載波的頻率(最多)為60kHz,因此可以精確測量載波頻率。累積從后緣到后緣的四個(gè)樣本。然后將結(jié)果除以 <> 以確定高周期和低周期時(shí)間。
接下來,接收器開始搜索大于10ms的傳輸間隙。每個(gè)協(xié)議都在同一代碼的重復(fù)傳輸之間設(shè)置一個(gè)間隙,并且沒有協(xié)議允許單個(gè)代碼內(nèi)的間隙大于約1ms。當(dāng)找到間隙時(shí),接收方知道這是代碼序列的開始。錄制可以開始了。
為了記錄代碼,微控制器遙控器會(huì)累積載波開啟的時(shí)間。當(dāng)它觀察到載波丟失時(shí),遙控器會(huì)累積載波保持關(guān)閉的時(shí)間。這會(huì)產(chǎn)生一個(gè)開和關(guān)時(shí)間矢量,可用于在需要時(shí)重新創(chuàng)建信號(hào)。
由于這是一個(gè)演示項(xiàng)目而不是成品,因此這些開關(guān)時(shí)間的矢量存儲(chǔ)在易失性RAM中。在實(shí)際產(chǎn)品中,軟件子程序可能會(huì)將這些載體復(fù)制到非易失性存儲(chǔ)(例如EEPROM)中。
回放
對(duì)按鈕進(jìn)行編程后,CPU 進(jìn)入睡眠模式。在此模式下,將保留寄存器和RAM,但CPU時(shí)鐘將停止。只有中斷(或重置)才能喚醒 CPU。
按下按鈕時(shí),CPU 被喚醒并掃描其輸入引腳以確定按下了哪個(gè)按鈕。然后,它指向 RAM 中的向量,其中包含有關(guān)如何播放與按鈕關(guān)聯(lián)的代碼的說明。
RAM 向量包括:包含開關(guān)周期數(shù)計(jì)數(shù)的標(biāo)頭;表示載波頻率的值;以及表示每個(gè)開關(guān)周期的導(dǎo)通時(shí)間和關(guān)斷時(shí)間的值對(duì)序列。第一個(gè)標(biāo)頭值,即開關(guān)周期數(shù),存儲(chǔ)在環(huán)路計(jì)數(shù)器寄存器(LC1)中。將此值保存在計(jì)數(shù)器寄存器中,可以輕松遍歷所有周期值。
標(biāo)頭中的第二個(gè)值(載體周期)被縮放并存儲(chǔ)掉。在 IR 導(dǎo)通期間,該值被加載到另一個(gè)環(huán)路計(jì)數(shù)器寄存器 (LC0) 中。由于MAXQ2000為單周期內(nèi)核,通過程序環(huán)路的時(shí)序是完全可靠的。因此,載波可以通過在高周期通過四指令周期循環(huán)執(zhí)行,然后在低周期通過四指令周期循環(huán)執(zhí)行來生成。執(zhí)行繼續(xù)以這種方式,執(zhí)行周期循環(huán),然后執(zhí)行關(guān)閉周期循環(huán)。
這是執(zhí)行路徑將停留的地方,通過打開紅外 LED 一段時(shí)間然后關(guān)閉一段時(shí)間來生成載波,如果不是計(jì)時(shí)器的話。對(duì)于每個(gè)半位時(shí)間,矢量包含一個(gè)值,用于寫入MAXQ2000定時(shí)器通道之一。定時(shí)器以32分頻模式工作,因此定時(shí)器分辨率約為2μs。
在每個(gè)半位周期開始時(shí),計(jì)時(shí)器將加載該周期的持續(xù)時(shí)間。然后,當(dāng)程序代碼打開和關(guān)閉紅外 LED 時(shí)(在導(dǎo)通期間)或干脆關(guān)閉紅外 LED (在關(guān)閉期間),經(jīng)常測試定時(shí)器以確定位時(shí)間是否已過期。
半位時(shí)間到期后,環(huán)路計(jì)數(shù)器寄存器(LC1)遞減并測試零。如果它不為零,則有更多的位要傳輸,并且分支被帶到循環(huán)的頂部。否則,將測試該按鈕以查看它是否仍被按下。如果按鈕仍處于活動(dòng)狀態(tài),則整個(gè)循環(huán)(從向量讀取初始化值并重新初始化計(jì)數(shù)器)將再次開始。否則,CPU 將重新進(jìn)入睡眠狀態(tài),直到按下下一個(gè)按鈕。
增強(qiáng)基本的遠(yuǎn)程操作
到目前為止,我們有一個(gè)工作學(xué)習(xí)遙控器,但只有一個(gè)按鈕。這種設(shè)計(jì)最明顯的增強(qiáng)是更多的按鈕。添加這些按鈕是一個(gè)簡單的過程,僅涉及少量的額外硬件。當(dāng) CPU 空閑時(shí),所有行驅(qū)動(dòng)程序都設(shè)置為輸出“1”狀態(tài)。每列上的軟(即高電阻)下拉使這些輸入保持在空閑狀態(tài)的低電平。當(dāng)用戶按下任意按鈕時(shí),相應(yīng)的列被驅(qū)動(dòng)為高電平,CPU 被喚醒(圖 4)。然后,CPU 可以將每一行設(shè)置為高,一次一行,并確定按鈕所在的行和列。
圖4.要使用其他密鑰擴(kuò)充項(xiàng)目,激活任何密鑰都必須中斷處理器。在睡眠模式下,所有列線通過軟下拉電阻保持低電平,所有列線被驅(qū)動(dòng)為高電平。當(dāng)按下任何鍵時(shí),列線被拉高,從而喚醒處理器并啟動(dòng)行掃描過程。
第二種增強(qiáng)功能是使用MAXQ2000中的定時(shí)時(shí)鐘外設(shè)喚醒CPU,使其在特定時(shí)間執(zhí)行一系列編程的IR命令。時(shí)間時(shí)鐘是一種低功耗外設(shè),設(shè)計(jì)用于長時(shí)間使用電池供電。當(dāng)MAXQ2000處于休眠模式,高頻時(shí)鐘停止時(shí),時(shí)間時(shí)鐘繼續(xù)工作。時(shí)鐘可以根據(jù)一天中的時(shí)間或時(shí)間間隔生成中斷以喚醒 CPU。例如,時(shí)間時(shí)鐘可以喚醒CPU,以便遙控器可以向電纜或衛(wèi)星盒發(fā)送命令,然后向VCR或PVR發(fā)送命令以開始錄制節(jié)目。在程序結(jié)束時(shí),可以再次喚醒CPU以結(jié)束錄制。
第三種可能性是將MAXQ2000連接到個(gè)人計(jì)算機(jī)。通過這種方式,PC可以用作編程站,可能從網(wǎng)絡(luò)中提取編程信息并將其自動(dòng)加載到通用遙控器中。
因此,只需少量外部元件和少量軟件,精密的MAXQ200
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151417 -
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211747 -
遙控器
+關(guān)注
關(guān)注
18文章
837瀏覽量
66114
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論