<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建基于MAXQ的“學習”遙控器

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-03-03 14:45 ? 次閱讀

消費娛樂設備的紅外(IR)遙控器雜亂無章,似乎是世界各地家庭的永久固定裝置。但是,使用MAXQ2000微控制器和一些廉價的器件,可以構建一個遙控器,從其他遙控器“學習”代碼并按需回放代碼。

概述

簡單的紅外(IR)遙控器在許多家庭中占有崇高的地位。原因不難理解。使用遙控器,可以控制現代家庭中常見的各種娛樂設備。您可以從世界各個角落召喚節目,收聽來自多個來源的音樂,播放音頻視頻媒體,甚至保存節目以供以后查看(如果需要),所有這些都可以在您最喜歡的房間舒適地進行。

然而,紅外遙控器的普及已經演變成一個問題。很少有家庭沒有三個、四個或更多這樣的小設備弄亂桌子。有一個用于電視,一個用于DVR,另一個用于VCR,還有一個用于音頻系統,此列表不包括有線電視盒或衛星接收器,分配開關,DVD刻錄機或任何其他引起我們注意的設備。

這種遙控器組合的解決方案是學習遙控器,它從另一個遙控器學習代碼。學習遙控器處于“學習”模式,第二個遙控器“教導”學習遙控器如何傳輸命令,例如調高音量。從那時起,每當按下適當的按鈕時,學習遙控器都可以發送學習的命令。

本應用筆記演示了如何圍繞MAXQ2000微控制器(Maxim的MAXQ RISC微控制器之一)構建這種學習遙控器。但在設計細節之前,需要一些背景知識。

poYBAGQBmZyAMVdfAAAbE3lqI_M968.png

用光控制

第一個電視遙控器是Zenith? Space Commander。它使用機械布置,在激活時以特定頻率產生超聲波音調。想想音叉:當敲擊時,它會以固定的、可預測的頻率振動。理論上,音叉發出的聲波可以被接收并解釋為做某事的命令。因為早期的遙控器是完全機械的,所以不需要電池。然而,它只有三個命令:電視打開和關閉、頻道向上和頻道向下。

隨著半導體器件變得越來越便宜和越來越受歡迎,紅外光取代超聲波成為首選的控制機制。簡單來說,紅外遙控系統由一個發射調制紅外光束的手持單元和一個接收調制紅外并解釋調制的基本單元組成,通常作為采取某些操作的命令。然而,由于工程可行性、物理現實和市場需求的結合,此操作的細節并不那么簡單。

殘酷的事實是,環境中充滿了紅外輻射,因此期望在嘈雜的輻射能量之上聽到任何微不足道的調制方案是不現實的。所有發熱的東西也會發出紅外輻射。例如,白熾燈泡比可見光發出更多的紅外。甚至人體也會發出紅外輻射。因此,大多數紅外遠程發射器在應用數據之前使用低頻載波(通常在28kHz和60kHz之間)調制光。

以固定頻率調制光束,可以很容易地從典型家庭環境中的所有干擾紅外輻射中檢測出來。通過使用簡單的帶通濾光片,可以隔離和解釋紅外信號。為此目的,有各種廉價的集成電路,包括紅外光電二極管和帶通濾光片。

產生這種調制光束很簡單。紅外發光LED器件常見且價格低廉;創建調制光束可以像從適當的振蕩器驅動紅外 LED 一樣簡單。有關可以調制和接收IR調制數據的電路,請參見圖1。

pYYBAGQBl4-AaLf4AAALmGUdaR8483.gif


圖1.電信號被轉換成調制的紅外光束,然后又轉換成電信號。為了擴展發射器的范圍,使用了PNP驅動器??梢葬槍λx的紅外 LED 調整組件值。

隨著調制LED光源和接收器IC以與光源相同的頻率工作,人們有了遠程控制系統的開端。當LED電路工作并在接收器范圍內時,接收器輸出變為活動狀態。如果只需要該操作(外部電路的簡單開關控制),則任務將完成。

但僅靠開關控制是不夠的。即使是簡單的遙控器也可以發送各種不同的命令,例如音量增大和減小、通道選擇、輸入源選擇,也許還有單個數字。出于這個原因,需要其他東西,一種進一步“調制”調制光束的方法。這就是故事變得有趣的地方。

隨著紅外遙控器被廣泛接受,每個制造商都采取了自己的方式來調制光束。雖然所有設備都使用數字控制(即調制波束的特性表示數字“1”或“0”位),但具體情況差異很大。有些使用簡單的不歸零(NRZ)調制。其他人使用一種脈寬調制(PWM)的形式,因此長脈沖代表一種狀態,短脈沖代表交替狀態。還有一些使用一種雙相調制形式,其中開到關轉換代表一種狀態,關到通轉換代表另一種狀態。這種令人困惑的情況一直持續到今天,這使得創建一個通用遙控器來操作任何制造商的設備成為真正的挑戰。

設計變量

設計通用學習遙控器時必須考慮三個變量:載波頻率、位格式和幀格式。

載波頻率

載波頻率是光被調制的頻率。它與實際比特率無關。對于任何給定系統,這是一個恒定頻率,范圍約為28kHz和60kHz,但通常在36kHz和38kHz之間工作。

位格式

位格式是系統區分“1”和“0”位的方式,它因制造商而異。在某些情況下,“亮起”周期的寬度是決定因素。索尼?制造的一些系統使用 1,100μs 的“亮通”脈沖表示“1”位,而 550μs 的“亮通”脈沖表示“0”位。脈沖之間的間隔始終為550μs。

另一種位格式保持“亮通”脈沖固定,但改變恒定寬度脈沖之間的空間。一些松下(松下?)系統發出恒定的800μs脈沖流,但將“1”位指定為脈沖之間的2,400μs空間,將“0”位指定為脈沖之間的800μs空間。

最常用的代碼系統之一是飛利浦 RC-5 代碼。在此代碼中,每個位單元由一個889μs的調制光突發和一個889μs的空間組成。如果位單元由“亮起”周期后跟“關閉”周期組成,則認為它表示“1”;如果它由“熄燈”周期后跟“亮起”周期組成,則認為它表示“0”。在RC-5系統中,通過在每幀的開頭強制執行兩個“1”位來確保位同步。圖 2 說明了各種位格式。

poYBAGQBl5CAPmedAAAUx4g4O1Y266.gif


圖2.紅外遙控系統中可以使用幾種位格式,但都涉及用載波調制光束,然后使用幾種技術之一調制載波。

幀格式

確定位格式后,設計人員必須確定幀格式。在許多情況下,這將包括一個同步脈沖(通常是比普通數據脈沖稍長的脈沖),然后是特定格式的數據位。通常,數據由兩部分組成:傳達所需功能的“數據”部分,以及與要控制的設備相對應的“自定義”部分。因此,一個設備的某個數據項可以對應于另一個設備的不同數據項。

一些代碼每幀傳輸兩次信息:一次在正常模式下,一次在位檢測顛倒的情況下。通過這種方式,提供了一定程度的基本錯誤檢查。如果兩個副本不匹配,則假定該命令無效。

傳輸幀后,通常會一遍又一遍地重復。常見的幀重復率范圍約為每秒 10 到 20 幀。一些協議只傳輸一次代碼,然后重復“鍵下”代碼。本文中描述的系統不會處理這些協議,因為假定每個重復幀都包含數據和自定義代碼。

最后,一些協議,包括RC-5協議,在每次按鍵時都會反轉一點。這有助于識別接收間隙是否是由于信號丟失造成的,例如,有人在遙控器和基本單元之間行走,或者它是否實際上代表第二次按鍵。此功能未在此項目中實現。

尋求普遍性

基于上述討論,通用學習遙控器似乎需要知道這些位格式中的每一種才能完成其任務。如果我們擔心結果數據集的大小,這將是真的:典型的紅外遙控消息只有幾十位長。但鑒于內存相對便宜,我們可以簡單地對傳入的比特流進行采樣并記錄樣本。

因此,對于這個項目,我們真的不關心位格式或幀格式。這是因為這個系統只是簡單地記錄和播放它看到的任何內容。通過對正在使用的系統保持不可知性,可以保證真正的普遍性。

接收和記錄

接收器電路本身很簡單。上拉至V的光電晶體管DD構成輸入電路,可直接連接至MAXQ2000微控制器的輸入引腳。不需要或實際上不需要特殊的接收器IC。我們不關心范圍,而是希望記錄實際的調制包絡,而不管載波頻率如何。

在飽和模式下操作光電晶體管是一個小問題。光電晶體管不是特別快的器件;它們具有從完全打開到完全關閉狀態的恢復時間,該時間大于大多數系統的位時間。因此,如果光信號過多,光電晶體管將飽和。它將完全錯過載波頻率,僅遵循調制波形的輪廓。但如果信號太少,根本就沒有可識別的波形。圖 3 說明了這些條件。

pYYBAGQBl5GAZZoNAAARzVgA0g0417.gif


圖3.接收紅外信號時,信號強度必須正確。如果信號強度太高,光電晶體管將飽和,僅檢測到信號的低頻部分。如果信號強度太低,載波頻率永遠不會超過檢測閾值。

因此,將主遙控器和學習遙控器放置在恰到好處的距離至關重要。但是這個距離是多少?為了確定這一點,學習遙控器中的軟件會執行一些預采樣以確定距離是否正確。在開始記錄之前,學習遙控器(即MAXQ2000微控制器)對輸入通道上的信號進行采樣。如果沒有,遙控器會假定信號電平太低,并點亮適當的 LED。但是,如果微控制器遙控器在輸入通道上看到轉換,但沒有100μs或更小的脈沖(可以假設載波頻率大于10kHz),則假定信號電平過高并點亮不同的LED。最后,如果微控制器觀察到由“關閉”周期分隔的快速脈沖突發,則假定信號電平處于“最佳點”是理想的。然后,學習遙控器的代碼將轉換為錄制狀態。

在錄制狀態下必須發生幾件事。微控制器遙控器必須確定載波的輸入頻率。由于微控制器的工作頻率為16MHz,載波的頻率(最多)為60kHz,因此可以精確測量載波頻率。累積從后緣到后緣的四個樣本。然后將結果除以 <> 以確定高周期和低周期時間。

接下來,接收器開始搜索大于10ms的傳輸間隙。每個協議都在同一代碼的重復傳輸之間設置一個間隙,并且沒有協議允許單個代碼內的間隙大于約1ms。當找到間隙時,接收方知道這是代碼序列的開始。錄制可以開始了。

為了記錄代碼,微控制器遙控器會累積載波開啟的時間。當它觀察到載波丟失時,遙控器會累積載波保持關閉的時間。這會產生一個開和關時間矢量,可用于在需要時重新創建信號。

由于這是一個演示項目而不是成品,因此這些開關時間的矢量存儲在易失性RAM中。在實際產品中,軟件子程序可能會將這些載體復制到非易失性存儲(例如EEPROM)中。

回放

對按鈕進行編程后,CPU 進入睡眠模式。在此模式下,將保留寄存器和RAM,但CPU時鐘將停止。只有中斷(或重置)才能喚醒 CPU。

按下按鈕時,CPU 被喚醒并掃描其輸入引腳以確定按下了哪個按鈕。然后,它指向 RAM 中的向量,其中包含有關如何播放與按鈕關聯的代碼的說明。

RAM 向量包括:包含開關周期數計數的標頭;表示載波頻率的值;以及表示每個開關周期的導通時間和關斷時間的值對序列。第一個標頭值,即開關周期數,存儲在環路計數器寄存器(LC1)中。將此值保存在計數器寄存器中,可以輕松遍歷所有周期值。

標頭中的第二個值(載體周期)被縮放并存儲掉。在 IR 導通期間,該值被加載到另一個環路計數器寄存器 (LC0) 中。由于MAXQ2000為單周期內核,通過程序環路的時序是完全可靠的。因此,載波可以通過在高周期通過四指令周期循環執行,然后在低周期通過四指令周期循環執行來生成。執行繼續以這種方式,執行周期循環,然后執行關閉周期循環。

這是執行路徑將停留的地方,通過打開紅外 LED 一段時間然后關閉一段時間來生成載波,如果不是計時器的話。對于每個半位時間,矢量包含一個值,用于寫入MAXQ2000定時器通道之一。定時器以32分頻模式工作,因此定時器分辨率約為2μs。

在每個半位周期開始時,計時器將加載該周期的持續時間。然后,當程序代碼打開和關閉紅外 LED 時(在導通期間)或干脆關閉紅外 LED (在關閉期間),經常測試定時器以確定位時間是否已過期。

半位時間到期后,環路計數器寄存器(LC1)遞減并測試零。如果它不為零,則有更多的位要傳輸,并且分支被帶到循環的頂部。否則,將測試該按鈕以查看它是否仍被按下。如果按鈕仍處于活動狀態,則整個循環(從向量讀取初始化值并重新初始化計數器)將再次開始。否則,CPU 將重新進入睡眠狀態,直到按下下一個按鈕。

增強基本的遠程操作

到目前為止,我們有一個工作學習遙控器,但只有一個按鈕。這種設計最明顯的增強是更多的按鈕。添加這些按鈕是一個簡單的過程,僅涉及少量的額外硬件。當 CPU 空閑時,所有行驅動程序都設置為輸出“1”狀態。每列上的軟(即高電阻)下拉使這些輸入保持在空閑狀態的低電平。當用戶按下任意按鈕時,相應的列被驅動為高電平,CPU 被喚醒(圖 4)。然后,CPU 可以將每一行設置為高,一次一行,并確定按鈕所在的行和列。

poYBAGQBl5KAZZvLAAAYgnXxuk8422.gif


圖4.要使用其他密鑰擴充項目,激活任何密鑰都必須中斷處理器。在睡眠模式下,所有列線通過軟下拉電阻保持低電平,所有列線被驅動為高電平。當按下任何鍵時,列線被拉高,從而喚醒處理器并啟動行掃描過程。

第二種增強功能是使用MAXQ2000中的定時時鐘外設喚醒CPU,使其在特定時間執行一系列編程的IR命令。時間時鐘是一種低功耗外設,設計用于長時間使用電池供電。當MAXQ2000處于休眠模式,高頻時鐘停止時,時間時鐘繼續工作。時鐘可以根據一天中的時間或時間間隔生成中斷以喚醒 CPU。例如,時間時鐘可以喚醒CPU,以便遙控器可以向電纜或衛星盒發送命令,然后向VCR或PVR發送命令以開始錄制節目。在程序結束時,可以再次喚醒CPU以結束錄制。

第三種可能性是將MAXQ2000連接到個人計算機。通過這種方式,PC可以用作編程站,可能從網絡中提取編程信息并將其自動加載到通用遙控器中。

因此,只需少量外部元件和少量軟件,精密的MAXQ200

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    6868

    瀏覽量

    148311
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10512

    瀏覽量

    207271
  • 遙控器
    +關注

    關注

    18

    文章

    816

    瀏覽量

    64464
收藏 人收藏

    評論

    相關推薦

    機頂盒學習遙控器好壞的判別

    (一家之言,僅供參考,歡迎參與討論)機頂盒學習遙控器好壞的判別隨著數字電視在國內的大面積推廣,遙控器學習功能也被大面積地應用到機頂盒的配套產品-紅外
    發表于 02-19 10:04

    學習遙控器

    學習遙控器
    發表于 08-16 16:59

    用PIC12F629做的學習型無線遙控器

    用PIC12F629做的學習型無線遙控器前段時間搞了個學習遙控器,今天打開研究下,劃出電路如下,沒有程序,大家來寫寫,這個是使用方法:第一步,清除已有的地址碼 首先我們必須同時按下
    發表于 11-21 18:18

    學習型紅外遙控器設計

    有沒有前輩知道怎么寫基于MSP430F149的學習型紅外遙控器設計程序的?麻煩聯系我。O(∩_∩)O謝謝984300719
    發表于 05-01 15:22

    常用萬能學習型紅外遙控器設計資料.pdf

    ,部分廠商推出了具備紅外學習遙控器,它的主要特點是:遙控器內置一個動態編碼庫,具備紅外學習功能,可由用戶自主錄入編碼, 通過對具備紅外學習
    發表于 03-02 00:36

    如何增加學習遙控器學習距離?

    如圖,學習遙控器,那部分是學習天線,如何增大信號?
    發表于 08-16 09:48

    普通遙控器如何搖身變新型學習遙控器

      學習遙控器是一款攜帶多功能并符合現代人追求簡約生活理念的新概念產品, 它將各種普通遙控器常用按鍵進行精心提取后并融合為一體, 通過獨有的智能控制技術, 使用戶能夠同時輕松地操作電視﹑影碟
    發表于 11-05 16:00

    如何設計基于NiosⅡ的學習遙控器?

    遙控裝置,這類遙控器大多數采用復制遙控器紅外波形達到學習目的,其方法簡單,實現起來較方便,通過對不同普通遙控器發出的紅外線編碼進行
    發表于 10-16 07:01

    16位微控制MAXQ61H電子資料

    概述:MAXQ61H采用四面QFN32腳封裝。是一款低功耗、16位MAXQ 微控制 ,設計用于通用 遙控器 、消費類 電子 和白色家電等低功耗產品。
    發表于 04-13 07:06

    16位微控制MAXQ613電子資料

    概述:MAXQ613是一款低功耗、16位MAXQ 微控制 ,設計用于通用 遙控器 、消費類 電子 和白色家電等低功耗產品。器件結合了強大的16位RISC微控制
    發表于 04-13 07:35

    RF無線遙控器的種類

    遙控器分為:固定碼、學習碼、滾動碼遙控器,以滾動碼遙控器的保密性最佳,上述遙控器都是與控制
    發表于 06-26 16:19

    基于AT89C52的學習遙控器的設計

    本文介紹了一種基于 AT89C52 的學習遙控器,并對其工作原理及軟、硬件的設計和實現方法進行了詳細的闡述。關鍵詞: AT89C52; 學習遙控器; 紅外
    發表于 08-14 08:58 ?207次下載

    標準碼+學習遙控器-ZQ807

    標準碼+學習遙控器-ZQ807:1.操作電壓: 3V,適用于兩顆電池的遙控器。 2.具備 7 個可學習按鍵 (L01~L07),可以學習
    發表于 12-13 14:12 ?117次下載

    紅外學習遙控器方案說明

    紅外學習遙控器可通過學習操作學習其它遙控器上的部分按鍵,實現同一遙控器
    的頭像 發表于 10-18 11:31 ?3636次閱讀

    學習遙控器的設計與實現

    電子發燒友網站提供《學習遙控器的設計與實現.doc》資料免費下載
    發表于 10-24 09:33 ?1次下載
    <b class='flag-5'>學習</b>型<b class='flag-5'>遙控器</b>的設計與實現
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>