红外遥控器工作原理

news/2024/11/30 18:33:20/
参考原文: http://www.sbprojects.com/knowledge/ir/index.php

1. 原理
红外遥控器是利用一个红外发光二极管,以红外光为载体来将按键信息传递给接收端的设备。红外光对于人眼是不可见的, 因此使用红外遥控器不会影响人的视觉(可以打开手机摄像头,遥控器对着摄像头按,可以看到遥控器发出的红外光)。

2. 调制
日常生活环境中有很多红外光源,太阳、蜡烛火光、白炽灯、甚至是我们的身体。这些红外光源都可能会对我们的接收 设备 产生干扰,为了屏蔽干扰,只接收有效信息,我们就需要用到调制。 调制是我们使需要的信号区别于噪音方法。通过调制我们可以使红外光以特定的频率闪烁。红外接收 器会适配这个频率, 其它的噪音信号都将被忽略。 你可以认为这种闪烁是引起接收器“注意”的方法,正如我们人类特别容易被黄色的灯光 引起注意一样, 甚至在白天。

上图左边,调制信号通过驱动放大由红外 LED 发射;上图右边,信号通过接收器检测输出。

在串行通讯里,我们经常谈及‘ mark’和‘ space’标记。‘ space’是个默认信号,是指发射管关闭状态, 在‘ space’期间, 红外光不被发射。反之在‘ mark’状态期间,红外光以特定的频率脉冲形式发 射。在消费类 电子产品里,脉冲频率普遍采用 30KHz  到 60KHz 这个频段,红外遥控器一般使用的是38KHz。

在接收端,一个‘ space’信号以高电平方式重现输出。反之一个‘ mark’信号便是以低电平方式重现。请注意,这里的‘ mark’和‘ space’不是我们需要发送的状态 1 和 0。‘ mark’和‘ space’以及 1和 0 之间的真正关系取决于被应用的协议。

3. 协议

NEC协议
  • 8 位地址码, 8 位命令码
  • 完整发射两次地址码和命令码,以提高可靠性
  • 脉冲时间长短调制方式
  • 38KHz 载波频率
  • 位时间 1.12ms 或 2.25ms

引导吗:

下图为一个引导码的调制波形:


引导码 由“9ms mark + 4.5ms space”构成,表示一组 键码 的开始。


逻辑0和1:

下图为逻辑0和逻辑1的调制波形:


逻辑“1”由“560us mark + 1690 space”组成,symbol period 为2.25ms;逻辑“0”由“560us mark + 560us space”组成,symbol period 为 1.12ms。


完整的一组键码:
下图位NEC 协议的典型脉冲链:

协议规定低位首先发送,如上图所示的情况,发送的地  址码为“59”,命令码为“16”,总的码值为 0x59A616E9。


重复码:

图为重复码的调制波形:


重复码由 “9ms mark + 2.25ms space”组成,symbol period 为 11.25ms,重复码表示一个重复按键,当按键按着不松时,会先发一个完整的键码,接着每 110ms 发送一个重复码,直到松开按键,如下面的波形图所示:


接收端输出:
在接收端,一个 mark 对应一个低电平输出,一个 space 对应一个高电平输出,因此起始码、逻辑0 1、重复码等在接收端的输出波形如下图所示:



协议解码程序片段:

typedef struct ir_symbol_s
{unsigned short mark_period;unsigned short symbol_period;
} ir_symbol_t;typedef struct ir_key_s
{unsigned int value;int state;
}ir_key_t;int NEC_Decode(ir_symbol_t symbol_buf[], int symbol_num, ir_key_t *ir_key)
{unsigned int key_value;if(symbol_num == 33) //解析键值,设定300us的容错范围{key_value = 0;//引导码判断if ( (symbol_buf[0].symbol_period > (13500 - 300)) && (symbol_buf[0].symbol_period < (13500 + 300)) && (symbol_buf[0].mark_period > (9000 - 300)) && (symbol_buf[0].mark_period < (9000 + 300)) ){for(i = 0; i < (symbol_num-1); i ++){//无效的符号位if( (symbol_buf[i].symbol_period < (1120-300)) || (symbol_buf[i].symbol_period > (2250+300)) ){printf("symbol %d, is invalid\n", i);return -1;}else{key_value <<= 1;//逻辑1判断if( (symbol_buf[i].symbol_period > (2250-300)) && (symbol_buf[i].symbol_period <= (2250+300)) ){key_value |= 1;}}}ir_key->value = key_value;ir_key->state = KEY_STATE_PRESS;}}else if(symbol_num == 2) //NEC协议的重复键{ir_key->value = 0;ir_key->state = KEY_STATE_REPEAT;}else{ir_key->value = 0;ir_key->state = KEY_STATE_NONE;}return 0;
}



http://www.ppmy.cn/news/338831.html

相关文章

红外+手机的编程

红外手机的编程 写了一下红外跟手机对接的小程序 1: IrSocket方式. vc6没有自带AF_Irda.h文件,到(http://www.cswl.com/whiteppr/white/arhead.html)下了一个. 编程很简单,跟一般的socket没太多区别,地址结构使用SOCKADDR_IRDA,创建socket用socket (AF_IRDA, SOCK_STREAM, …

红外遥控的发射和接收原理

为了更直观地让大家理解红外遥控的原理&#xff0c;这篇文章用图片来帮你理解红外遥控的发射管原理和接收原理。 红外遥控的概述&#xff1a; 红外线的光谱位于红色光之外&#xff0c; 波长是0.76&#xff5e;1.5μm&#xff0c;比红光的波长还长。红外遥控是利用红外线进行传…

红外

概述 基于红外在大气传输存在的“大气窗口”&#xff0c;红外线的应用分为短波红外、中波红外和长波红外三大类。短波红外利用目标反射环境中普遍存在的短波红外辐射&#xff0c;在分辨率和细节上类似于可见光图像&#xff1b;长波、中波红外成像利用室温目标自身发射的热辐射…

简单的Android 红外线遥控

因为我一个小伙伴一起搞一个项目&#xff0c;他负责硬件我负责android。然后要在手机上实现红外线遥控的功能。在网上找了很多资料终于集众家所长&#xff0c;搞定了。 package com.example.zmx.myapplication;import android.annotation.TargetApi; import android.os.Build;…

红外遥控原理

遥控红外通信原理 在实际的通信领域&#xff0c;发出来的信号一般有较宽的频谱&#xff0c;而且都是在比较低的频率段分布大量的能量&#xff0c;所以称之为基带信号&#xff0c;这种信号是不适合直接在信道中传输的。为便于传输、提高抗干扰能力和有效的利用带宽&#xff0c;通…

Android手机红外通信

第一步AndroidManifest.xml <uses-feature android:name"android.hardware.ConsumerIrManager" /><uses-permission android:name"android.permission.TRANSMIT_IR" /> 第二步 声明ConsumerIrManager 服务 private ConsumerIrManager mCIR;/…

红外传感器

红外线传感器是利用红外线来进行数据处理的一种传感器&#xff0c;有灵敏度高等优点&#xff0c;红外线传感器可以控制驱动装置的运行。 红外线传感器常用于无接触温度测量&#xff0c;气体成分分析和无损探伤&#xff0c;在医学、军事、空间技术和环境工程等领域得到广泛应用。…

android 手机红外遥控器

原文地址&#xff1a;http://blog.csdn.net/zhangxy0605/article/details/74344345 现在红外遥控的使用越来越多&#xff0c;android 手机基本都带有红外&#xff0c;自己可以写一个简单的app&#xff0c;就可以遥控家里的电器了。 1、红外部分&#xff08;主要得到时间量表示…