C语言
您现在所在的位置:首页>企业动态>C语言

红外遥控传感器

编辑:学到牛牛IT培训    发布日期: 2024-04-09 08:36:46  

红外遥传感器分为两部分:红外接收模块、红外遥控模块


红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。


发射机一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。


接收电路一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制(机构)。


红外接收模块:

图片1.png

参数表:


图片2.png


红外接收模块中采用的是VS1838B红外线接收头,该接收头内含高速高灵敏PIN光电二极管和低功耗、高增益前置放大IC,采用环氧树脂封装外加外屏蔽抗干扰设计、能抵挡环境干扰。

VS1838B红外接收头同时还具备一下特定:

宽工作电压,2.7-5.5V;

低功耗,宽角度及长距离接收;

输出匹配TTL、CMOS电平,低电平有效。

因此,该红外接收头主要应用在视听器材(音箱,电视,DVD,卫星接收机等)、家庭电器(空调,电风扇,灯饰等)以及其他红外线遥控产品。

详细参数如下:

光电参数(T = 25℃  Vcc = 5.0V  f0=38KHZ):

图片3.png



红外接收模块原理图:

图片4.png



红外遥控模块:

图片5.png


红外遥控模块可由键盘电路、红外编码芯片、电源和红外发射电路组成。

红外遥控的编码方式目前广泛使用的是:PWM(脉冲宽度调制)的NEC协议和Philips PPM(脉冲位置调制)的RC-5协议的。目前大部分遥控器使用的是NFEC协议,其特征如下:

1,8位地址和8位指令长度;

2,地址和命令2IC传输(确保可靠性)

3,PWM脉冲款第调制,以发射红外载波的占空比代表“0”和“1”;

4,载波频率位38Khz;

5,位时间为1.125ms或2.25ms;

6,一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us低 + 1680us高),一个逻辑0的传输需要1.125ms(560us低  +  560us高)。

7.NEC遥控指令的数据格式为:同步码、地址码、地址反码、控制码、控制反码。

8,同步码由一个9ms的低电平和一个4.5ms的高电平组成;

9,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。

10,连发码:由97.94ms的高电平组成、9ms的低电平、2.5ms的高电平、0.56ms的低电平;

示例代码:


#include <IRremote.h>


#define RECV_PIN   12


#define R_ZERO     0x00FF6897     //红外传感器的解码值

#define R_ONE      0x00FF30CF

#define R_TWO      0x00FF18E7

#define R_THREE    0x00FF7A85

#define R_FOUR     0x00FF10EF

#define R_FIVE     0x00FF38C7

#define R_SIX      0x00FF5AA5

#define R_SEVEN    0x00FF42BD

#define R_EIGHT    0x00FF4AB5

#define R_NINE     0x00FF52AD

#define R_Previous 0x00FF22DD

#define R_LAST     0x00FF02FD


IRrecv irrecv(RECV_PIN); //Set an example of IRrecv 

decode_results results;  //Set an example of decode_results, Results is used to save the decoding results


void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

  irrecv.enableIRIn();

  delay(1500);

}


int CheckButton(uint32_t code)

{

  int ret;

  switch (code) {

    case R_ZERO:

      ret = 0;

      break;

    case R_ONE:

      ret = 1;

      break;

    case R_TWO:

      ret = 2;

      break;

    case R_THREE:

      ret = 3;

      break;

    case R_FOUR:

      ret = 4;

      break;

    case R_FIVE:

      ret = 5;

      break;

    case R_SIX:

      ret = 6;

      break;

    case R_SEVEN:

      ret = 7;

      break;

    case R_EIGHT:

      ret = 8;

      break;

    case R_NINE:

      ret = 9;

      break;

    case R_Previous:

      ret = -2;

      break;

    case R_LAST:

      ret = -3;

      break;

    default:

      ret = -1;

      break;

  }

  return ret;

}


void loop()

{

  int n;

  if (irrecv.decode(&results)) // 如果有接收到数据

  {

    n = CheckButton(results.value);  

    Serial.println(n);

    irrecv.resume();

  }

  delay(200);

}


串口打印:

图片6.png

免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 扫一扫,免费咨询

  • 微信公众号

学一流技术,找高薪工作

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问