用虚拟示波器调试红外收发电路 - 工具 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 测试测量 -> 工具

TOP

用虚拟示波器调试红外收发电路
发表日期:2010-07-20 13:23:59 来源:《无线电》杂志 2009.03 作者:陈庚 【 】 浏览:7078次 评论:0

用单片机对家电遥控器进行解码接收,想必很多单片机爱好者都做过这个试验了,动手能力强的还用一个遥控器实现对多个电器的控制,有的甚至还将它解码后遥控电脑。但大家也许会发现,大部分资料上都是说红外解码的,几乎看不到有介绍怎样设计红外编码程序的文章和资料。这其中最主要的原因就是编码程序比起解码程序开发难度要大一些,且有更大的商业价值。本文介绍怎样用51系列单片机实现红外编码,笔者通过一段时间进行编码程序的摸索,得出较为理想的红外编码程序,现写出来与大家分享。同时本文还将介绍怎么样用基于电脑声卡的虚拟示波器来对编解码电路进行波形测试和调试。

先说说硬件电路的搭建,红外发射电路见图1,电路相当简单,编码由AT89C2051完成,VD1为发光指示,用来判断是否有信号输出,VD2为红外发光二极管,单片输出的数据信号经9012放大后驱动VD2发出红外光。图2则是红外接收电路,一体化红外接收头收到的数据送入单片机的P3.2口,另外电路还加入了串口通信功能,单片机写好接收程序后可通过串口用串口调试软件来检测收到的数据是否和发射的相一致。发射和接收电路都很简单,两个电路的时钟频率都是11.0592MHz,请不要随便改动,否则程序也要作相应的改动。电路可直接在面包板上搭建。另外发射部分只采用了一个三极管放大,会使有效接收距离变短,要使距离增大,大家可参考《无线电》2008年第1期中的《如何增加红外遥控作用距离》一文中的介绍。

 

 

 

 

基本的硬件电路介绍完后,开始我们的主要部分——编解码程序。对于红外解码相信大家已经很熟悉了,因此本文的重点放在讲解怎样用汇编代码实现红外编码。因自己家里的电视遥控器编码芯片为SC7461,故用程序模拟实现7461的编码,而7461的编码协议《无线电》以前的文章已有介绍,大家也可上网查询,本文就不再重复。红外38kHz载波由单片机的定时器来产生,38kHz的周期是26.3ms,故给T0或T1装载相应的定时常数并在定时中断程序里对红外输出端做相应的位设置,即可输出38kHz的载波。程序采用汇编语言,程序中使用程序状态字寄存器中的F0作为发射标志位,定时中断里反复检测其状态,F0为0则发射低电平,为1则发射脉冲,当然标志位也可自己定义,但前提是不能发生冲突。

定义好要发射的数据后,先发射引导码,将F0设为1,并调用9ms的延时,发射9ms的脉冲,接着将F0设为0,调用4.5ms的延时,发射4.5ms的低电平。引导码发射完后是用户码和数据码及数据反码的数据部分,不管是用户码还是数据码、数据反码,都遵循一个原则,那就是对其连同进位标志CY循环左移,每移动一次后先发射560ms的脉冲再检测一次CY的状态,CY是0则F0就设为0,同时调用560ms延时表示此位是0;CY为1则F0为1,同时调用1690ms延时,表示此位是1。

由此即可实现用数据的位状态对38kHz载波进行调制。另外要强调一点,定时中断里不能进行现场保护,否则产生的红外编码是错误的,大家可以试着在定时中断里加入对累加器A和进位标志CY以及F0的推入弹出语句,看看现场保护后程序运行是否还能保持正常。

程序写好后,还有一个很关键的问题,那就是调试。红外编码脉冲的时序要求比较严格,你的延时程序所产生的脉冲宽度很可能和电视遥控器的出入很大,而且即便你已对延时程序进行了精密的调整,很可能因为程序语句的相互影响而使实际时间和设计的延时时间不一致,这种情况下没有示波器的帮助是几乎不可能完成调试的,但市面上的数字示波器动辄一两千元,很多电子爱好者根本承受不起,因此基于电脑声卡的虚拟示波器则是很好的选择。笔者使用的是网站上下载的一款名为Multi-Instrument(万用仪)Pro3.0的试用版示波器,有21天的试用时间,大家可以到百度或是谷歌搜索,许多网站均提供全中文的安装文件。软件安装也很简单,选择好要安装的磁盘位置后就点下一步,根据提示来就可以了,软件界面如图3所示。软件是全中文的,每一项功能都有对应的中文意思,没用过示波器的读者也很容易上手,最上一排是菜单栏,第二排是触发设置和采样设置,第三排可以设置声卡,并可显示信号强度,最下一排则可调节时间和电压。除此之外软件还提供频率计和频谱分析仪,大多数情况下这两项功能我们都很少使用,可以不去管它。

 

 

 

 


安装到电脑上后再根据以往文章介绍做个探头就可马上使用。有的读者担心损坏电脑声卡,这种担心也不无道理,而解决办法很简单,那就是用个光耦(PC817或其他类型)将声卡和待测电路隔离,至于这种光耦的使用方法再简单不过了,因篇幅有限不再介绍,当然这种改动只能测数字信号。探头做好后,就可测试信号了,至于具体的使用方法可参考软件的说明或是到相关论坛里寻求帮助,这里就不再详细介绍了。图4是笔者用虚拟示波器测量到的发射端编码脉冲。

如果脉冲很窄,也就是时间较短,则可调节T轴刻度直到能准确读出脉冲时间,测量时观察每个脉冲的宽度是否和程序想要实现的相同,不相同就根据实际情况对每个延时子程序的延时长度进行调节,每改动一次就测量一次,有了示波器的帮助相信在很短的时间内就能得到我们想要的波形。从图中可以明显区别出引导码和用户码及数据码数据反码,甚至能从用户码和数据码波形中读出具体的数据,数据高位在左边,窄的高电平和宽的低电平组合表示位1,窄的高电平和窄的低电平组合表示位0,图中数据为:用户码98H+83H+3BH再加上单独的两位3H,共计26位;数据码:1H;数据反码:FEH。至于红外接收端因好多网站上均有红外解码程序提供下载,并通过验证是正确的,因而几乎可以不用调试就能正常工作。

波形正确后,就可将发射电路和接收电路放到能有效接收的距离,插上写好程序的单片机,本文提供的解码程序中带有串口通信功能,将接收端与电脑用串口数据线连起来,接上电源,就能从串口调试助手里看到单片机接收到的红外数据,图6是串口调试助手收到的数据,可以看出接收到的数据分别为00H,80H,40H,C0H,20H,A0H,60H,E0H,10H,90H共十个字节循环发射,而这10个字节的数据在笔者家中的遥控器上所对应的功能刚好是从频道0到频道9,将编码电路放到电视机旁边,接通电源并将红外发光管对准电视的遥控接收口,则电视频道从0到9循环切换,从而最终验证了编码程序的正确性。只可惜笔者是用USB接口的聊天用摄像头拍的图片,而电脑又和电视不在同一房间,因此不能拍下编码程序遥控电视时的图片,笔者家中的电视型号是康佳F2165,读者可将程序写入单片机后进行验证。有的读者会问,我家的电视不是这个型号,电视遥控器的编码芯片也不一样,那该怎么办呢?

其实这个问题也不难解决,首先拆开遥控器看看里面的编码芯片型号,然后再上网查询其相关资料得到它的编码协议,并通过自己的分析,相信大家能解决这个问题。还有一种编码芯片可能就要麻烦些了,你会看到它是黑黑的一块,上面没有型号编码也无任何文字说明,封装既不是双列直插也不是贴片,感觉就像把塑料烧化了滴在上面的,有的技术人员将它称之为"鸡屎"可以说是较为贴切的称呼。

这种编码芯片恐怕就只能通过解码程序来获取它的编码信息了,相信大家掌握了本文介绍的方法后,对大多数红外编码芯片都能实现软件模拟。以上程序通过后,大家就可以利用自己的动手能力,实现对这一程序的应用扩展,其应用不外乎两大类:一是用其组建一套遥控收发电路,实现对各种电器的控制;二是用此程序来进行无线数据传输。市面上有一种学习型万能遥控器,其核心程序有两个,一是红外数据读取和分析程序,另一个则是类似本文的发射程序,读者若是能将两个程序都分析透彻并能自己独立编制,再配合一个功能齐全的电路,则有相当大的经济价值。当然对于单片机爱好者来说这也是一种挑战,没有相当的编程能力是很难完成这两个程序的,不过对于低级别的应用这个编码程序道是足够了,我们可以用它和解码程序相配合来遥控家电或是玩具。而要进行无线数据传输,实施起来也不难,因为编码程序发出的本身就是数字信号,大家可以在此基础上举一反三,对程序作适当的改动,就可马上应用到自己的程序中去。


 > 相关内容:

 
Tags:示波器 红外 电路 责任编辑:yanhuo
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇测试展台 下一篇用电脑声卡捕捉和分析红外遥控编码

评论区

已有0位网友发表评论
帐  号: 密码: (如果您还不是博趣会员,欢迎注册)
表  情:
内  容:
网友评论仅供其表达个人看法,并不表明博趣网同意其观点或证实其描述。

赞助商链接

最新文章

热门文章

推荐文章