OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7673|回复: 17

红外遥控怎么解码啊?

[复制链接]

98

主题

253

帖子

1

精华

高级会员

Rank: 4

积分
939
金钱
939
注册时间
2011-12-16
在线时间
59 小时
发表于 2013-5-30 11:03:32 | 显示全部楼层 |阅读模式
1、只有一次中断(按键按下就进入中断,然后开始检测一连串高低电平的时间)
2、多次中断(每个下降沿都进入中断)
大家用哪种的?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-30 12:28:15 | 显示全部楼层
业余程序玩家。
回复 支持 反对

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2013-5-12
在线时间
0 小时
发表于 2013-5-30 13:34:16 | 显示全部楼层
第一种,比较简单,其实每个代码比不一定都要懂,关键会用。。。
大家好
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-30 14:13:19 | 显示全部楼层
用输入捕获最好了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-5-30 18:05:30 | 显示全部楼层
我的发射程序 (波形学习型):


u8   Remote_Rdy;
u16  IR_BUFFER[150];      // 最大150个高低波形 缓冲区(一个键)
  

void Send_IR_encode(void)
{

    u8  x;
    u16 y;

x=0;

    while(1)       // 最多发射150次(高+低)红外波形
{
if ((IR_BUFFER[x]<50000) && (IR_BUFFER[x]>0))   //  发射红外线 (1)
{
   for (y=0;y<(IR_BUFFER[x]/12);y++)           // 产生大约38KHZ脉冲
{
     IR_OUT=1;
     delay_us(8);              // 1/3  HIGH ; 2/3 LOW   DULTY CYCLE
     IR_OUT=0;
     delay_us(16);
}
}
    else  break;

x++;

if ((IR_BUFFER[x]<50000) && (IR_BUFFER[x]>0))
{
   for (y=0;y<(IR_BUFFER[x]);y++)              // 红外线=0 ,  低脉波宽度, 不输出
{
    IR_OUT=0;
     delay_us(1);
}
}
else break;

x++;

if (x>150) break; // 最大记录150个 HI/LO波形宽度
 }    
}



我的接收学习程序:

void EXTI1_IRQHandler(void)
{       
   u8   x,END_FLAG=0;
   u16  COUNTER_H,COUNTER_L;
    
   delay_us(100);   // 避开IR接收一开始弹跳问题

   x=0;
   while (1)
   {
   
       COUNTER_H=0;
       COUNTER_L=0;

       while (!RDATA && !END_FLAG)
       {
       delay_us(1);
       COUNTER_L++;
       if (COUNTER_L>50000)
       {
       END_FLAG=1;
   COUNTER_L=65000; // 65000 代表高电平或低电平脉宽逾时
       break;
       }
       }
   if (x==0) COUNTER_L+=100;       // 补偿第1次避开红外接收弹跳的延迟  100us
       IR_BUFFER[x]=COUNTER_L;

   x++;

   while(RDATA && !END_FLAG)
   {
       delay_us(1);
       COUNTER_H++;
       if (COUNTER_H>50000)
       {
       END_FLAG=1;
   COUNTER_H=65000;    // 65000 代表高电平或低电平脉宽逾时
       break;
       }
       }  
   IR_BUFFER[x]=COUNTER_H;

   x++;

   if ( END_FLAG || (x>150) )  break;
   }
    
   Remote_Rdy=1;


   EXTI->R=1<<1;      //清除中断标志位      
  
}
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-5-30 18:07:25 | 显示全部楼层
经过测试,  红外接收模块在下降缘被触发后,  有一段时间很容易产生杂讯干扰,  于是我直接等待了100us再开始计算高/低电平,
直到某个时间值超限 ...

如果没避掉这个杂讯,  学习比较容易失败 .
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-5-30 18:09:47 | 显示全部楼层
还有一个问题,  目前我可以任意学习 38KHZ的遥控器. 但如果不是这频率,  IR接收模块出来波形就会很怪,  就不能成功解码.

所以, 如果要用软件达到任意振荡频率都能成功学习的目的, 不能用普通的3只脚IR接收模块, 可能要用能还原 原始波形的那种模式量输出的模块 .
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-5-31 09:37:38 | 显示全部楼层
如果想要百分百还原 原始的红外振荡波形,   就必须改用 光电晶体来接收.   像底下这个.
http://item.taobao.com/item.htm?spm=a230r.1.14.69.q65P7b&id=23051840494&_u=u3bneiu9b12

这样就能够应付除了38KHZ以外的各种中心频率 .
回复 支持 反对

使用道具 举报

98

主题

253

帖子

1

精华

高级会员

Rank: 4

积分
939
金钱
939
注册时间
2011-12-16
在线时间
59 小时
 楼主| 发表于 2013-5-31 13:31:35 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
怎么个原理?
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-5-31 16:35:17 | 显示全部楼层
原理 ???

使用光电晶体解出来的, 就会是振荡波形.      但软件不可能直接记下这种振荡波形.  因为资料量太大了.

所以就必须计算出有振荡时的频率 .    然后记录下来.    将来发射时必须产生一样或者很接近的振荡频率.

然后就是记录振荡开始与停止的时间 .   得到一个值.

再来就是量测没有振荡波形的时间值,  又得到一个值 .

然后控制IR发射管,  就可以产生非常接近的波形了.

例如,  NEC編碼的紅外線波形振盪, 大概就是底下這樣...











回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-6-1 00:02:03 | 显示全部楼层
回复【10楼】liuje:
---------------------------------

哪有用纯软件解码的道理?载波主要是为了抗干扰。应该可以用电容电感使一定频段的脉冲通过。原子板上的红外一体化接收头应该就有类似的功能。
业余程序玩家。
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-6-1 10:03:57 | 显示全部楼层
但是你把红外载波过滤整成高低电平后, 就很难用软件方式精准计算载波的中心振荡频率了.

市面上还有不少的红外遥控不是使用38KHZ中心振荡频率的, 例如50KHZ .      碰到这种的就会学习失败了.

所以要达到百分百的学习成功.   还是必须使用光电晶体方式, 将红外振荡波形完成还原进来给CPU进行解读的.









回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-6-1 10:06:38 | 显示全部楼层
所有开发板  板载的3只脚红外接收头.    都是只能解38KHZ红外载波振荡的.

碰到50KHZ这种频率的.   出来的波形是乱七八糟的.       肯定你没看过这样的波形.   所以认为那个接收头是万用的.

其实不是的.  它只能解 38KHZ 中心振荡频率的啊.
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-6-6 19:04:12 | 显示全部楼层
今天我买的光电晶体到货了,   接上去试,  就可以得到像底下这样百分百的红外遥控器振荡原始波形......

不但可以看出它的振荡中心频率,   也可以看出占空比.    占空比差距越大,   遥控器发射时越省电.    但网上很多人说,  使用高占空比例如1:4 甚至1:10
不但省电距离还更远,  但我实测应该是骗人的.    没有理论基础 .     它们可能是把限流电阻弄的太小了,  因此, 过高的占空比可能会造成红外发射二极管直接烧掉, 所以才要提高占空比,  缩小导通时间.     我认为这样解释比较合理 .

透过这样的方式来做解码,   才能对付任何一只红外遥控器 .       否则连解码都不能完全时,  又怎样重现不同振荡频率的遥控器波形呢 ????






回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2014-2-23 12:40:45 | 显示全部楼层
回复【2楼】ofourme:
---------------------------------
好久没看到你在线了
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2014-3-11 23:16:59 | 显示全部楼层
回复【15楼】一般BDN:


好久没看到你在线了

---------------------------------

还活着。多谢关心,呵呵。
业余程序玩家。
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2014-3-11 23:18:28 | 显示全部楼层
回复【14楼】liuje:
---------------------------------
有意思。你这个图片是啥软件的?
业余程序玩家。
回复 支持 反对

使用道具 举报

86

主题

983

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1848
金钱
1848
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-8-10 12:28:59 | 显示全部楼层
回复【10楼】liuje:
---------------------------------
可以哦  分析的不错  mark
合肥-文盲
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表