红外通信学习笔记2020/01/17

你。 提交于 2020-01-18 23:33:54

红外通信原理

一、红外通信的目的

实现两点间的近距离 保密通信和信息转发

二、红外通信组成

1、红外发射部分 交互(按键、键盘)+编码调制部分+电路
2、光电放大器(电路转换放大器)+解调+电路

三、红外通信过程

单片机(输出调制)----红外发射电路(发送)----红外接收管(接收解调)------单片机(解码)

四、调制与发射

1、二进制调制 :1、单片机将编码后的二进制信号调制为38KHz的间断脉冲串(相当于二进制信号与38KHz的信号相乘)
在这里插入图片描述
2、红外接收解调:HS0038直接输出解调后的高低电平信号
3、编码
红外发射采用PPM编码方式,编码脉冲由前导码、16位地址码(8位地址码、8位地址反码)和16位操作码(8位操作码、8位操作码的反码)组成。

前导码(起始部分)
一个9ms高电平(起始码)
4.5ms低电平(结果码)

数据码
0.56ms脉宽+1.12ms周期= 0
1.68ms脉宽+2.24ms周期=1

五、概念详解

1、红外接收头(分为电平头还有脉冲头)

电平型的:接收连续的38K信号,可以输出连续的低电平,时间可以无限长。其内部放大及脉冲整形是直接耦合的,所以能够接收及输出连续的信号。

脉冲型的:只能接收间歇的38K信号,如果接收连续的38K信号,则几百ms后会一直保持高电平,除非距离非常近(二三十厘米以内)。其内部放大及脉冲整形是电容耦合的,所以不能能够接收及输出连续的信号。

红外接收头内部构造

2、红外遥控中的载波
(1)38K的来源
38K脉冲信号,占空比(高电平比周期)自己定,脉冲周期1/38000 S
例如利用一个中断产生38K脉冲,占空比是1/2,中断时间就要设置为1/38000/2 S中断一次,然后通过相隔一次中断电平翻转一次就形成了一个频率为38K占空比1/2的脉冲。

(2)误差问题
使用单片机的中断模式会比查询模式精准。

利用中断的时候,在时钟比较快的条件下可以产生比较准确的时间基准,来产生相对正确的脉冲。

而利用查询方式,如果用51单片机,12M的晶振,利用查询溢位来产生的38K脉冲,误差会很大,
因为利用查询的方式查询这个动作,它浪费了大把的单片机时间,误差大得离谱。

(3)单片机查询方式和中断方式的区别详解

查询方式就是不断的查询某个标志位,需要耗费大量的cpu 的时间,一般情况下除专门用于延时外不用这种方式(自己认为),中断方式比较适合处理具有随即特性的事件,事件发生后向cpu提出申请,然后cpu会保存当前的任务转去处理事件
编程时查询方式要不断查询标志位,而中断要编写中断服务子程序来处理中断事件

如:定时100ms,分别用查询法和中断法实现
查询法
#include<reg52.h>
void main()
{
TMOD=0X01;//定时器0方式1
TH0=(65536-10000)%256;//定时器器初值
TL0=(65536-10000)/256;
ET0=0;//关定时器0中断
TR0=1;
while(TF0==0);//若定时完成则中断标志位TF0为1,在此不断查询TF0
TR0=1;//完成定时关闭定时器
while(1); //等待

}
中断法
#include<reg52.h>
void main()
{
TMOD=0X01;//定时器0方式1
TH0=(65536-10000)%256;//定时器器初值
TL0=(65536-10000)/256;
EA=1;//开总中断
ET0=1;//关定时器0中断
TR0=1;//打开定时器
while(1); //等待
}
void timer0 interrupt 1
{
TR0=0;//关闭定时器
}

4、红外发射信号的本质
驱动红外发光的"IO"口的状态便是38K脉冲信号从IO口发出来的触发信号,脉冲中的低电平就是导通,高电平就是截止。
可以简单理解为:红外接收头只接受38K信号,我们把接收头看出一个转换器。遇到38K就输出低电平,没有遇到38K就被上拉成高电平。
然后我们通过有无38K来控制红外灯闪烁频率,进而对二进制信号进行编码
在接收方读取高低电平的时间长度与高低电平的各种组合来读取发射方所提供的信息。这种就是所谓的协议

参考链接

1、https://www.geek-workshop.com/thread-2322-1-1.html
2、https://blog.csdn.net/nknkkn/article/details/103019838
3、http://www.51hei.com/bbs/dpj-154613-1.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!