红外控制原理详解


1 简介

Hi,大家好,学长今天向大家详细介绍分享,单片机的红外控制原理

红外控制原理详解

大家可用于 课程设计 或 毕业设计

2 红外光特性

在这里插入图片描述
红外线光按照波长范围分为

  • 近红外
  • 中红外
  • 远红外
  • 极紅外

红外线遥控是利用近红外光传送遙控指令的,波长为0.76um ~ 1.5um

用近紅外作為遙控光源,是因為目前紅外发射器件与紅外接收器件的发光与受光峰值波長一般為0.8um~0.94um,这样可以获得较高的传输效率及较高的可靠性

3 红外发射器

在这里插入图片描述

4 红外接收器

在这里插入图片描述

5 红外遥控原理

一般的红外遥控系统是由红外遥控信号发射器、红外遥控信号接收器和微控制器及其外围电路等三部分构成的

  1. 遥控信号发射器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号
  2. 遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲
  3. 遥控编码脉冲是一组组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部 CPU 完成对遥控指令解码,并执行相应的遥控功能

5.1 红外编码

目前应用中的各种红外遥控系统的原理都大同小异,区别只是在于各系统的信号编码格式不同。当按下遥控器上任一按键时,遥控器即产生一串脉冲编码。遥控编码脉冲对 40kHz 载波进行脉冲幅度调制(PAM)后便形成遥控信号,经驱动电路由红外发射管发射出去。红外遥控接收头接收到调制后的遥控信号,经前置放大、限幅放大、带通滤波、峰值检波和波形整形,从而解调出与输入遥控信号反相的遥控脉冲

一次按键动作的遥控编码信息为 32 位串行二进制码。对于二进制信号"0",一个脉冲占 1.2ms;对于二进制信号"1",一个脉冲占 2.4ms,而每一脉冲内低电平均为 0.6ms。从起始标志到 32 位编码脉冲发完大约需 80ms,此后遥控信号维持高电平。若按键未释放,则从起始标志起每隔 108ms 发出 3 个脉冲的重复标志

以NEC消费型遥控器为例

在这里插入图片描述

5.2 红外解码

红外遥控接收头解调出的编码是串行二进制码,包含着遥控器按键信息。但它还不便于CPU 读取识别,因此需要先对这些串行二进制码进行解码。接码电路主要包括遥控编码脉冲串并转换电路与 PLD 解码电路

解码步骤:

  1. 引导码: 引导码也叫起始码,由宽度为 9ms 的高电平和宽度为 4.5ms的低电平组成(不同的遥控系统在高低电平的宽度上有一定区别),用来标志遥控编码脉冲信号的开始
  2. 系统码: 系统码也叫识别码,它用来指示遥控系统的种类,以区别其它遥控系统,防止各遥控系统的误动作
  3. 系统反码
  4. 功能码: 功能码也叫指令码,它代表了相应的控制功能,接收机中的微控制器可根据功能码的数值去完成各种功能操作
  5. 功能反码等信号组成: 系统反码与功能反码分别是系统码与功能码的反码,反码的加入是为了能在接收端校对传输过程中是否产生差错

6 常见的红外数据传输协议

  • ITT 协议
  • NEC 协议
  • Nokia NRC 协议
  • Sharp 协议
  • Philips RC - 5 协议
  • Philips RC - 6协议
  • Philips RECS - 80协议
  • Sony SIRC 协议

在东亚地区比较常用的红外线传输协议是NEC协议(即6122协议)

在这里插入图片描述

7 基于stm32的红外遥控解码

//Ò£¿ØÆ÷½ÓÊÕ״̬
//[7]:ÊÕµ½ÁËÒýµ¼Âë±êÖ¾
//[6]:µÃµ½ÁËÒ»¸ö°´¼üµÄËùÓÐÐÅÏ¢
//[5]:±£Áô    
//[4]:±ê¼ÇÉÏÉýÑØÊÇ·ñÒѾ­±»²¶»ñ                                   
//[3:0]:Òç³ö¼ÆʱÆ÷
u8     RmtSta=0;            
u16 Dval;        //ϽµÑØʱ¼ÆÊýÆ÷µÄÖµ
u32 RmtRec=0;    //ºìÍâ½ÓÊÕµ½µÄÊý¾Ý                   
u8  RmtCnt=0;    //°´¼ü°´ÏµĴÎÊý      
//¶¨Ê±Æ÷2ÖжϷþÎñ³ÌÐò     
void TIM4_IRQHandler(void)
{                  
    if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET)
    {
        if(RmtSta&0x80)//ÉÏ´ÎÓÐÊý¾Ý±»½ÓÊÕµ½ÁË
        {    
            RmtSta&=~0X10;                        //È¡ÏûÉÏÉýÑØÒѾ­±»²¶»ñ±ê¼Ç
            if((RmtSta&0X0F)==0X00)RmtSta|=1<<6;//±ê¼ÇÒѾ­Íê³ÉÒ»´Î°´¼üµÄ¼üÖµÐÅÏ¢²É¼¯
            if((RmtSta&0X0F)<14)RmtSta++;
            else
            {
                RmtSta&=~(1<<7);//Çå¿ÕÒýµ¼±êʶ
                RmtSta&=0XF0;    //Çå¿Õ¼ÆÊýÆ÷    
            }                                    
        }                                
    }
     if(TIM_GetITStatus(TIM4,TIM_IT_CC4)!=RESET)
    {      
        if(RDATA)//ÉÏÉýÑز¶»ñ
        {

            TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Falling);        //CC1P=1 ÉèÖÃΪϽµÑز¶»ñ                
            TIM_SetCounter(TIM4,0);           //Çå¿Õ¶¨Ê±Æ÷Öµ
            RmtSta|=0X10;                    //±ê¼ÇÉÏÉýÑØÒѾ­±»²¶»ñ
        }else //ϽµÑز¶»ñ
        {            
               Dval=TIM_GetCapture4(TIM4);//¶ÁÈ¡CCR1Ò²¿ÉÒÔÇåCC1IF±ê־λ
             TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC4P=0    ÉèÖÃΪÉÏÉýÑز¶»ñ
             
            if(RmtSta&0X10)                    //Íê³ÉÒ»´Î¸ßµçƽ²¶»ñ 
            {
                 if(RmtSta&0X80)//½ÓÊÕµ½ÁËÒýµ¼Âë
                {
                    
                    if(Dval>300&&Dval<800)            //560Ϊ±ê×¼Öµ,560us
                    {
                        RmtRec<<=1;    //×óÒÆһλ.
                        RmtRec|=0;    //½ÓÊÕµ½0       
                    }else if(Dval>1400&&Dval<1800)    //1680Ϊ±ê×¼Öµ,1680us
                    {
                        RmtRec<<=1;    //×óÒÆһλ.
                        RmtRec|=1;    //½ÓÊÕµ½1
                    }else if(Dval>2200&&Dval<2600)    //µÃµ½°´¼ü¼üÖµÔö¼ÓµÄÐÅÏ¢ 2500Ϊ±ê×¼Öµ2.5ms
                    {
                        RmtCnt++;         //°´¼ü´ÎÊýÔö¼Ó1´Î
                        RmtSta&=0XF0;    //Çå¿Õ¼ÆʱÆ÷        
                    }
                 }else if(Dval>4200&&Dval<4700)        //4500Ϊ±ê×¼Öµ4.5ms
                {
                    RmtSta|=1<<7;    //±ê¼Ç³É¹¦½ÓÊÕµ½ÁËÒýµ¼Âë
                    RmtCnt=0;        //Çå³ý°´¼ü´ÎÊý¼ÆÊýÆ÷
                }                         
            }
            RmtSta&=~(1<<4);
        }                                                             
    }
 TIM_ClearFlag(TIM4,TIM_IT_Update|TIM_IT_CC4);        
}

//´¦ÀíºìÍâ¼üÅÌ
//·µ»ØÖµ:
//     0,ûÓÐÈκΰ´¼ü°´ÏÂ
//ÆäËû,°´Ïµİ´¼ü¼üÖµ.
u8 Remote_Scan(void)
{        
    u8 sta=0;       
  u8 t1,t2;  
    if(RmtSta&(1<<6))//µÃµ½Ò»¸ö°´¼üµÄËùÓÐÐÅÏ¢ÁË
    { 
        t1=RmtRec>>24;            //µÃµ½µØÖ·Âë
        t2=(RmtRec>>16)&0xff;    //µÃµ½µØÖ··´Âë 
         //if((t1==(u8)~t2)&&t1==REMOTE_ID)//¼ìÑéÒ£¿Øʶ±ðÂë(ID)¼°µØÖ· 
            if(1)
        { 
            t1=RmtRec>>8;
            t2=RmtRec;     
            if(t1==(u8)~t2)
                        sta=t1;//¼üÖµÕýÈ·     
            }   
            if((sta==0)||((RmtSta&0X80)==0))//°´¼üÊý¾Ý´íÎó/Ò£¿ØÒѾ­Ã»Óа´ÏÂÁË
            {
                RmtSta&=~(1<<6);//Çå³ý½ÓÊÕµ½ÓÐЧ°´¼ü±êʶ
                RmtCnt=0;        //Çå³ý°´¼ü´ÎÊý¼ÆÊýÆ÷
            }
        }  
    return sta;
}

控制自己家的空调
在这里插入图片描述

在这里插入图片描述

通过打印遥控器的某按键的16进制值

确认
E4 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 FF 

0C B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 FF 

D8 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 FF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值