红外通讯的信号调制及解调电路分析
前两天有个朋友咨询我激光信号调制的事情,并且提到了38K载波,这让我想起来了红外信号调制和解调。 红外信号的调制和解调网上讲解的有很多,高深的,通俗的都有,今天520,是一个特殊的日子,不过因为疫情的原因,在办公室着实物料,随笔写一下红外信号的调制和解调原理吧,希望能帮助到哪些需要学习的人。
文章通过由浅入深,由易到难的方式及思路来讲解。 首先讲信号的解调。
信号解调
可能看官看到这里的时候会疑惑,信号的发射还没讲呢,咋就直接开始讲接收了呢,这不是还没学会走路,就开始学习奔跑了吗? 看到这里我只想说NO NO NO,我先讲解接收是因为我们身边的信号发射电路太多了,而且都是很成熟的产品,而且接收的电路又很简单,只要是能使用单片机接收到信号,就证明成功了一半,反过来如果先去搞发射电路,接收的电路及程序都没明白,也不会弄,就算你的发射功能完成了,那你拿什么去证明你的发射电路是没问题的呢? 好了,废话不多说了,直接上案例吧
硬件
红外接收电路可以选择某宝上面的万能红外接收管,这里插一个图片,至于链接就不贴了,以免有广告的嫌疑。
几毛钱的东西,好像也没有打广告的必要[手动狗头] 当然,各位土豪,把家里的电视机,空调,风扇的遥控接收头拆了用也行。
硬件接收电路
在宝贝的链接里面也是有描述的,这玩意已经把信号的解调集成到里面了,我好像也没啥可说的,外部加上一个上拉电阻就可以了。 协议讲解–略过 程序讲解–略过
信号调制
相比与解调电路,信号的调制好像是要复杂一些,又好像也没想象中的复杂,总体的来说,就是控制红外二极管发光,不发光,再发光,再不发光就完了。 既然说到信号的调制,那肯定是有载波信号的,这个就是别人提到的38KHz的载波信号,如何将自己的信号施加到载波信号上面,这个就叫信号的调制。 首先我们先制造出38K的波形 如下图所示 LED6为红外发射二极管,R29为限流电阻,如果不加这个限流电阻,也能用,而且发射距离超远,但是寿命也很短,有可能发射一帧信号后就挂掉了,这肯定不是我们想要的结果,根据自己想要的距离和二极管的手册,进行修改限流电阻的阻值即可,三极管Q9由单片机的引脚来控制通断。 此时我们给集电极一个38K的PWM,即可完成载波信号的发生。 波形如下: 同理,二极管导通的波形也和PWM一样,这样子的话我们就完成了载波信号的设计。 然后就是我们想要的把自己的信号加载到载波信号上面,完成信号的调制 如下图 我们在原有的基础上面加一个红外控制的开关,当我们要发送数据0的时候,让IRctrl脚给一个短暂的导通,发送数据1的时候,给一个较长时间的导通。 波形如下: 此时已经完成把自己的信号加载到载波信号上面了,这个就是信号调制中的调幅。 波形如下: 发送数据的原理就如上面所讲,接收部分的电路,由于红外接收管VS1838B已经集成了信号解调的功能,所以接收端单片机接收到的波形如下:
回想一下发送数据,对比一下接收到的数据,是不是发现一模一样。 这样就完成了完整的红外通讯。 发送数据的原理,以及接收数据的原理都大概的讲了一下。到这里我想读者应该已经明白个七七八八了吧,剩下的就是NEC协议了
红外NEC协议
PS:别看了,真的没了,NEC协议随便搜一下都能搜出一大堆,这里就偷个懒,不讲了。
加强记忆
红外通讯中的NEC协议,是由帧头(引导码)+数据(用户码+数据码)组成的,每次传输四个数据,data0+data1+data2+data3(用户码+用户反码+数据码+数据反码)组成,那么读者们能不能把NEC协议稍微修改一下呢,来完成不同长度数据的传输? 在这里笔者提供一个思路,就是帧头+不定长数据+特定结束符来完成红外不定长数据的传输(可以参考串口不定长数据的传输),当然,也可以使用超时检测的方式来进行数据传输(参考RS485通讯超时检测设计)。 如果能完成笔者的要求,那么我想读者们肯定能对红外传输的协议及通讯的原理记忆深刻。 光说不练假把式,读者们能把这边文章的内容给吸收,是远远不够的,想要完全理解,还是要自己亲自动手做一做的。 好了,文章就到这里了,有疑问的地方或者笔者写的不对的地方,还望留言讨论。
谢谢观看!
|