首页资源分类应用技术射频与通信技术 > 红外发射接收和解码学习

红外发射接收和解码学习

已有 445023个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签:红外

分    享:

文档简介

资料很全,讲解很详细

文档预览

第十六章 红外线发射和接收 21.1 红外线简介 红外线遥控是目前使用很广泛的一种通信和遥控技术。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,在电视、音响设备、空调移机玩具等其他小型电器装置上纷纷采用红外遥控。在工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控技术更是一个不错的选择。由于红外线抗干扰能力强,且不会对周围的无线电设备产生干扰电波,同时红外发射接收范围窄,安全性较高。 什么是红外线?红外线是太阳光线中众多不可见光线中的一种,由德国科学家霍胥尔于1800年发现,又称为红外热辐射,他将太阳光用三棱镜分解开,在各种不同颜色的色带位置上放置了温度计,试图测量各种颜色的光的加热效应。结果发现,位于红光外侧的那支温度计升温最快。因此得到结论:太阳光谱中,红光的外侧必定存在看不见的光线,这就是红外线。也可以当作传输之媒界。 太阳光谱上红外线的波长大于可见光线,波长为0.75~1000μm。红外线可分为三部分,即近红外线,波长为0.75~1.50μm之间;中红外线,波长为1.50~6.0μm之间;远红外线,波长为6.0~l000μm 之间。 红外线发射和接收时所需要的常用器件:红外发射管、红外接收管、红外线一体化接收头。 (1)红外线发射管和红外线接收管 常用的红外线发射管和红外线接收管如图21-1所示,外形和发光二极管LED相似。 图21-1 红外线发射管和红外线接收管 ①红外发光二极管(如SE303、UIR333C等)在工作时,管压降约1.4v,工作电流一般小于20mA。为了适应不同的工作电压,回路中常常串有限流电阻。    发射红外线去控制相应的受控装置时,其控制的距离与发射功率成正比。为了增加红外线的控制距离,红外发光二极管工作于脉冲状态,因为脉动光(调制光)的有效传送距离与脉冲的峰值电流成正比,只需尽量提高峰值Ip,就能增加红外光的发射距离。提高Ip的方法,是减小脉冲占空比,即压缩脉冲的宽度T,一些彩电红外遥控器,其红外发光管的工作脉冲占空比约为1/3-1/4;一些电器产品红外遥控器,其占空比是1/10。减小脉冲占空比还可使小功率红外发光二极管的发射距离大大增加。常见的红外发光二极管,其功率分为小功率(1mW-10mW)、中功率(20mW-50mW)和大功率(50mW-100mW以上)三大类。要使红外发光二极管产生调制光,只需在驱动管上加上一定频率的脉冲电压。我们最常用的就是38KHz的红外信号。 ②红外线接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号很弱,所以接收端就要增加高增益放大电路。因为红外线接收管使用时要制作接收放大电路等,所以现在多用红外线一体化接收头来接收红外信号。 (2)红外线一体化接收头 常用红外线一体化接收头如下图21-2所示。 图21-2 红外线一体化接收头 红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。    红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制载波的不同应选用相应解调频率的接收头。红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上。有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰。 21.2 红外线发射与接收基础实验 【例21-1】这个实验是红外发射和接收的一个基础实验。该实验讲了如何用红外线发射管发射38K红外线信号,然后让38K的红外线一体化接收头接收所发送的红外线信号。用示波器来查看红外发射端和接收端的电平信号。实验目的是让接收头收到一个10毫秒的低电平,接着10毫秒高电平,最后依次是8个脉宽为5毫秒周期的高低电平。 (1)实验电路图 电路图如下图21-3所示。左边①部分是红外线信号发射部分,LED1是红外线发射管。通过单片机的P1.0端口去控制NPN三极管的基极。当P1.0端口为高电平时,三极管的发射极和集电极导通,红外线发射管就会导通,发射红外信号。三极管集电极和发射极的电压为0.3V,D1压降为1.4V,那么通过D1的电流为:I=U/R=(5-0.3-1.4)/150=0.022A。 图21-3中的②部分是红外线芯片的接收部分。红外线接收部分用的是红外线一体化接收头PC838作的接收电路。PC838的1端是红外线信号接收和处理后,得出的红外线数据输出端和单片机的P3.2端口相连。2端是接的电源地。3端接的是电源正极,我们从+5V串联了一个330欧姆的电阻到VCC,并且在VCC端并联了0.1UF和22UF的电容,这样可以降低电源的干扰。 ①红外线发射电路 ②红外线接收电路 图21-3 红外线发射和接收电路图 (2)实验原理分析: 红外线发射电路中,我们让单片机的P1.0端口输出一个38K的占空比为1/2的方波信号。1秒等于1000000微秒,那么方波的高低电平的时间t=1000000/38000/2≈13微秒。如果要用单片机来产生13微秒的高低电平信号,最好是用单片机的定时器来处理,定时器的方式2适合用于这样比较精确的脉冲信号发生器。 方式2计算初值X: X=256-t*fosc/12(或6) 12和6是分频,我们这里选择12;t为所设计时时间单位为26微秒;fosc为晶振单位为11.0592MHz。 X=256-0.000013*11059200/12≈244 我们已经算出了要得到13微秒的方波,我们给定时器方式2的初始为244(F4H),下面我们写要满足实验目的的代码就很简单了。 (3)实验程序代码 #include #include #define uchar unsigned char #define uint unsigned int sbit IR_TX = P1^0; //红外信号发射端 sbit IR_OUT = P3^2; //红外信号接收端 /********************************* 函数:Delay_1ms() 参数:t 返回:无 功能:延时子程序,延时时间为 1ms * del。 使用晶振是11.0592M。 **********************************/ void Delay_1ms(uint t) { uint i,j; for(i=0;i #include #define uchar unsigned char #define uint unsigned int sbit IR_TX0 = P1^0; //红外发射端1 sbit IR_TX1 = P1^1; //红外发射端2 sbit IR_OUT = P3^2; //红外接收端 sbit LED1 = P0^0; //有障碍物指示1 sbit LED2 = P0^1; //有障碍物指示2 /********************************* 函数:Delay_1ms() 参数:t 返回:无 功能:延时子程序,延时时间为 1ms * del。 使用晶振是11.0592M。 **********************************/ void Delay_1ms(uint t) { uint i,j; for(i=0;i #include #define uchar unsigned char #define uint unsigned int sbit IRIN = P3^2; //红外线一体化接收头接收端 uchar IRTemp; //红外线按键数据存放变量 uchar IRCOM[7]={0};//存放红外解码后的32位数据 //数码管的段码编码 uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; /********************************* 函数:Delay_140us() 参数:t 返回:无 功能:延时子程序,延时时间为 0.14ms * t。 使用晶振是11.0592M。 **********************************/ void Delay_140us(uchar t) { uchar i,j; for(j=0; j= 30) //计数过长自动离开。 { EX0=1; return; } } IRCOM[i] = IRCOM[i] >> 1; //数据右移一位,最高位补"0" if(count >=6 ) { IRCOM[i] = IRCOM[i] | 0x80; //数据最高位或上"1" } count = 0; } } if(IRCOM[2] != ~IRCOM[3]) //不相等,则红外遥控解码错误 { EX0=1; return; } switch(IRCOM[2]) //得到的按键值进行判断 { case 0x16: IRTemp = 0; break; case 0x0c: IRTemp = 1; break; case 0x18: IRTemp = 2; break; case 0x5e: IRTemp = 3; break; case 0x08: IRTemp = 4; break; case 0x1c: IRTemp = 5; break; case 0x5a: IRTemp = 6; break; case 0x42: IRTemp = 7; break; case 0x52: IRTemp = 8; break; case 0x4a: IRTemp = 9; break; default: break; } EX0 = 1; } /********************************* 函数:Main() 参数:无 返回:无 功能:主函数 **********************************/ void Main(void) { IRIN=1; //接收端口初始化 OutsideInit(); //初始化外部中断 P2 = 0xfe; //最后一个数码管点亮 while(1) { P0 = table[IRTemp]; //显示解码出的遥控按键 Delay_1ms(20); } } (4) 实验现象 按了遥控上的按键以后,在红外一体化接收头端口接收到的电平信号通过示波器显示,得到如图21-16。 图21-16 红外遥控编码通过示波器显示 按遥控上的“0-9”会在数码管的最后一位有所显示。如图21-17所示,按遥控器的“2”会在单片机开发板的最后一位显示“2”。 图21-17 按红外遥控并通过数码管显示

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。