新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 新品快遞 > 從零開始學(xué)GD32_紅外遙控實(shí)驗(yàn)

        從零開始學(xué)GD32_紅外遙控實(shí)驗(yàn)

        作者: 時(shí)間:2015-04-09 來源:電子產(chǎn)品世界 收藏

              從零開始學(xué)GD32

        本文引用地址:http://www.104case.com/article/272282.htm

          第一節(jié) 紅外遙控實(shí)驗(yàn)

          遙控器是一種無線發(fā)射裝置,通過現(xiàn)代的數(shù)字編碼技術(shù),將按鍵信息進(jìn)行編碼,通過紅外線二極管發(fā)射光波,光波經(jīng)接收機(jī)的紅外線接收器將收到的紅外信號轉(zhuǎn)變成電信號,由處理器進(jìn)行解碼,解調(diào)出相應(yīng)的指令來達(dá)到控制機(jī)頂盒等設(shè)備完成所需的操作要求。

          一、原理

          很多電器都采用紅外線遙控,那么紅外線遙控的工作原理是什么呢?首先我們來看看什么是紅外線。

          人的眼睛能看到的可見光按波長從長到短排列,依次為紅、橙、黃、綠、青、藍(lán)、紫。其中紅光的波長范圍為0.62~0.76μm;紫光的波長范圍為0.38~0.46μm。比紫光波長還短的光叫紫外線,比紅光波長還長的光叫紅外線。

          紅外線遙控就是利用波長為0.76~1.5μm之間的近紅外線來傳送控制信號的。

          常用的紅外線遙控系統(tǒng)一般分發(fā)射和接收兩個(gè)部分。

          發(fā)射部分的主要元件為紅外發(fā)光二極管。它實(shí)際上是一只特殊的發(fā)光二極管,由于其內(nèi)部材料不同于普通發(fā)光二極管,因而在其兩端施加一定電壓時(shí),它便發(fā)出的是紅外線而不是可見光。

          大量使用的紅外發(fā)光二極管發(fā)出的紅外線波長為940nm左右,外形與普通發(fā)光二極管相同,只是顏色不同。

          紅外發(fā)光二極管一般有黑色、深藍(lán)、透明三種顏色。

          判斷紅外發(fā)光二極管好壞的辦法與判斷普通二極管一樣:用萬用表電阻擋量一下紅外發(fā)光二極管的正、反向電阻即可。

          紅外發(fā)光二極管的發(fā)光效率要用專門的儀器才能精確測定,而業(yè)余條件下只能用拉距法來粗略判定。接收部分的紅外接收管是一種光敏二極管。

          在實(shí)際應(yīng)用中要給紅外接收二極管加反向偏壓,它才能正常工作,亦即紅外接收二極管在電路中應(yīng)用時(shí)是反向運(yùn)用,這樣才能獲得較高的靈敏度。

          紅外接收二極管一般有圓形和方形兩種。

          由于紅外發(fā)光二極管的發(fā)射功率一般都較小(15mW左右),所以紅外接收二極管接收到的信號比較微弱,因此就要增加高增益放大電路。

          前些年常用μPC1373H、CX20106A等紅外接收專用放大電路。最近幾年不論是業(yè)余制作還是正式產(chǎn)品,大多都采用成品紅外接收頭。

          成品紅外接收頭的封裝大致有兩種:一種采用鐵皮屏蔽;一種是塑料封裝。均有三只引腳,即電源正(VDD)、電源負(fù) (GND)和數(shù)據(jù)輸出(VO或OUT)。紅外接收頭的引腳排列因型號不同而不盡相同,可參考廠家的使用說明。成品紅外接收頭的優(yōu)點(diǎn)是不需要復(fù)雜的調(diào)試和外 殼屏蔽,使用起來如同一只三極管,非常方便。但在使用時(shí)注意成品紅外接收頭的載波頻率。

          紅外遙控常用的載波頻率為38kHz,這是由發(fā)射端所使用的455kHz陶振來決定的。

          在發(fā)射端要對晶振進(jìn)行整數(shù)分頻,分頻系數(shù)一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。也有一些遙控系統(tǒng)采用36kHz、40kHz、56kHz等,一般由發(fā)射端晶振的振蕩頻率來決定。

          二、紅外遙控編碼

          常用的有通過脈沖寬度來實(shí)現(xiàn)信號調(diào)制的脈寬調(diào)制(PWM)和通過脈沖串之間的時(shí)間間隔來實(shí)現(xiàn)信號調(diào)制的脈時(shí)調(diào)制(PPM)兩種方法。

          我的遙控器使用的是NEC協(xié)議,即PWM方法,其特點(diǎn)如下:

          1、8位地址和8位指令長度;

          2、地址和命令2次傳輸(確保可靠性)

          3、PWM脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;

          4、載波頻率為38Khz;

          5、位時(shí)間為1.125ms或2.25ms;

          NEC碼的位定義:一個(gè)脈沖對應(yīng)560us的連續(xù)載波,一個(gè)邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個(gè)邏輯0的傳輸需要1.125ms(560us脈沖+560us低電平)。而遙控接收頭在收到脈沖的時(shí)候?yàn)榈碗娖剑跊]有脈沖的時(shí)候?yàn)楦唠娖剑@樣,我們在接收頭端收到的信號為:邏輯1應(yīng)該是560us低+1680us高,邏輯0應(yīng)該是560us低+560us高。

          NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃?可用于校驗(yàn))。

          三、解碼過程

          

         

          

         

          從圖中可以看到,其地址碼為0,控制碼為168。可以看到在100ms之后,我們還受到了幾個(gè)脈沖,這是NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5m高電平+0.56ms低電平+97.94ms高電平組成),如果在一幀數(shù)據(jù)發(fā)送完畢之后,按鍵仍然沒有放開,則發(fā)射重復(fù)碼,即連發(fā)碼,可以通過統(tǒng)計(jì)連發(fā)碼的次數(shù)來標(biāo)記按鍵按下的長短/次數(shù)。

          四、實(shí)驗(yàn)操作

          基于GD32 實(shí)驗(yàn)21 紅外遙控實(shí)驗(yàn)基礎(chǔ)上,在remote.h文件中添加以下宏定義:

          #defineBUTTON_1 218

          #defineBUTTON_2 242

          #defineBUTTON_3 202

          #defineBUTTON_4 90

          #defineBUTTON_5 240

          #defineBUTTON_6 122

          #defineBUTTON_7 106

          #defineBUTTON_8 114

          #defineBUTTON_9 74

          #defineBUTTON_0 170

          #define BUTTON_POWER 234

          作為遙控器的新鍵值。

          main.c文件中的switch函數(shù)也進(jìn)行了如下修改:

          switch(key)

          {

          caseBUTTON_POWER:

          LCD_ShowString(86,150,"POWER");

          break;

          caseBUTTON_1:

          LCD_ShowString(86,150,"1 ");

          break;

          caseBUTTON_2:

          LCD_ShowString(86,150,"2 ");

          break;

          caseBUTTON_3:

          LCD_ShowString(86,150,"3 ");

          break;

          caseBUTTON_4:

          LCD_ShowString(86,150,"4 ");

          break;

          caseBUTTON_5:

          LCD_ShowString(86,150,"5 ");

          break;

          caseBUTTON_6:

          LCD_ShowString(86,150,"6 ");

          break;

          caseBUTTON_7:

          LCD_ShowString(86,150,"7 ");

          break;

          caseBUTTON_8:

          LCD_ShowString(86,150,"8 ");

          break;

          caseBUTTON_9:

          LCD_ShowString(86,150,"9 ");

          break;

          caseBUTTON_0:

          LCD_ShowString(86,150,"0 ");

          break;

          default:

          break;

          }

          最后,測試一切正常!

        萬能遙控器相關(guān)文章:萬能遙控器代碼


        萬用表相關(guān)文章:萬用表怎么用


        手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)


        紅外遙控器相關(guān)文章:紅外遙控器原理
        晶振相關(guān)文章:晶振原理
        脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理
        脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理


        關(guān)鍵詞: 紅外遙控器

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 兴山县| 新干县| 张家界市| 乌鲁木齐县| 河曲县| 固原市| 闽侯县| 深泽县| 高尔夫| 嘉兴市| 郎溪县| 光山县| 浏阳市| 龙陵县| 岢岚县| 浪卡子县| 青海省| 噶尔县| 新安县| 福鼎市| 姜堰市| 健康| 博乐市| 宣恩县| 高淳县| 合阳县| 清丰县| 博客| 陆良县| 松江区| 蓬溪县| 彰武县| 资阳市| 原平市| 临邑县| 临泽县| 东港市| 桐庐县| 通州市| 宜昌市| 黑水县|