红外接收头的遥控系统

核心提示红外遥控的概述:红外线的光谱位于红色光之外, 波长是0.76~1.5μm,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。

红外遥控的概述:

红外线的光谱位于红色光之外, 波长是0.76~1.5μm,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。

红外遥控系统的主要部分为调制、发射和接收,如图 所示:

1.调制

红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源 功耗。

调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的矩形波,如图2所示,这是由发射端所使用的 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。

2.发射系统

目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由于发射系统一般用电池供电,这就要求芯片 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗。芯片所用的晶振应该有足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。

红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。

如图3a和图3b是LED的驱动电路,图3a是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向 电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。

图3a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。图3b所示的 射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右, 发射极电流IE基本不变,根据IE≈IC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥 控距离。

其实如果你是用单片机来解码或编码发送的话,我可以提供电路图及程序(发送和接收)(c):

发送程序:

#include?<reg52.h>?

#include?<intrins.h>

#define?uint?unsigned?int

#define?uchar?unsigned?char

#define?nop()?_nop_()

uchar?bdata?tt;

uchar?x;

sbit?OP=tt^1;//红外发射管的亮灭

unsigned?int?count;//延时计数器

unsigned?int?endcount;?//终止延时计数

unsigned?char?flag;?//红外发送标志

uchar?iraddr1;?//十六位地址的第一个字节

uchar?iraddr2;?//十六位地址的第二个字节

sbit?yaokong?=?P3^2;

void?SendIRdata(char?p_irdata);

void?delay();

void?main(void)?

{

count?=?0;

flag?=?0;

OP?=?0;

yaokong?=?0;

EA?=?1;?

TMOD?=?0x11;?

ET0?=?1;?

TH0?=?0xFF;?

TL0?=?0xE6;?//设定时值0为38K?也就是每隔26us中断一次?

TR0?=?1;

iraddr1=0x03;

iraddr2=0xfc;

do

{

for(x=125;x<0;x--);

SendIRdata(0x0c);

}while(1);

}?

//定时器0中断处理?

void?timeint(void)?interrupt?1?

{?

TH0=0xFF;?

TL0=0xE6;?//设定时值为38K?也就是每隔26us中断一次

count++;

if?(flag==1)

{

OP=~OP;

}

else

{

OP?=?0;

}

yaokong?=?OP;

}?

void?SendIRdata(char?p_irdata)

{

int?i;

char?irdata=p_irdata;

endcount=223;

flag=1;

count=0;

do

{

}while(count<endcount);

endcount=117;

flag=0;

count=0;

do

{

}while(count<endcount);

irdata=iraddr1;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count<endcount);

if(irdata-(irdata/2)*2)?

{

endcount=41;?

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count<endcount);

irdata=irdata>>1;

}

irdata=iraddr2;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count<endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count<endcount);

irdata=irdata>>1;

}

irdata=p_irdata;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count<endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count<endcount);

irdata=irdata>>1;

}

irdata=~p_irdata;

for(i=0;i<8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count<endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count<endcount);

irdata=irdata>>1;

}

endcount=10;

flag=1;

count=0;

do{}while(count<endcount);

flag=0;

}

void?delay()

{

int?i,j;

for(i=0;i<400;i++)

{

for(j=0;j<100;j++)

{

}

}

}

 
友情链接
鄂ICP备19019357号-22