你现在位置:首页>技术论文>电气常识>低压电器>正文
由红外抓码器设计谈多任务协调处理
日期:2008-5-26 0:21:56 来源:本站整理  
点击: 作者:
点击【】放大字体.
WW.W_PLCJS_COM-PLC-技.术_网

目前市面有很多红外抓码器销售,这东西说简单就简单,说有些复杂也不过分,关键是看抓码器能够达到的实际效果。
——可——编——程——控-制-器-技——术——门——户

   首先给大家看看常见的2种抓码器:
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    较贵的抓码器,标价1600RMB的抓码器:
WWW_PLC※JS_COM-PmLC-技.术_网

红外遥控编码分析仪2008
——可——编——程——控-制-器-技——术——门——户

虽然该产品也有些技术含量,但是1600RMB还是感觉有些贵了
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WW.W_PLCJS_COM-PLC-技.术_网

较便宜的抓码器,估计效果很一般,而且也很不专业的。
WWcW_PLCJS_COM-PLC-技.术_网

                                           
plcjs.技.术_网

                            红外线编码分析仪
plcjs.技.术_网

     这款直接可以看见PCBA,使用的是Microchip的16F877A,而且你看看所使用的IO就知道,为什么那么几个IO就使用这么大一颗MCU呢,说明抓码还是需要一些资源的。
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

WWW_P※LCJS_COM-PLC-)技.术_网

    首先看看抓出的波形到底是怎么回事吧。
plcjs.技.术_网

      所以低层的开发就是用MCU将一个个红外波形的周期和占空比测试出来,通过串口或USB将信息传到上位机进行显示。现在分析下底层软件需求:
WWW_PLCJS@_COM%-PLC-技.术_网

    支持串口或USB协议,进行数据传送
WWW_P※LCJS_CO※M-PLC-技-.术_网

    具有脉冲捕捉功能,准确测试出脉冲的周期和占空比
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

   如果是串口协议,需要较大的RAM空间
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

    为什么串口协议需要较大的RAM空间呢,从上面的脉冲周期可以发现,短的可能不足1ms,宽的可能会上百ms。如果测量数据以us或0.5us为单位的话,仅用2位数据去表示是不够的,FFFFH=65535D,最多可以描述65ms或32ms。还不能满足上百ms的电平宽度测量的。所以一般会选择用3位以上的数据宽度来描述周期或高(低)电平的宽度。这样一个脉冲内就有至少6位以上的数据需要发送。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

     以19200波特率来算算6位数据需要多长的时间来发送吧。串口协议为,1位起始位,8位数据位,1位停止位,这样一个字节需要10位来发送,所需要的发送时间为T=10*(1/19200)S=520us,那么6个字节至少得3.2ms左右。面对脉冲周期在1ms以下的,就需要很多的RAM来暂存待发送的数据了。所以,低端的抓码器干脆含糊的描述下,不支持空调遥控器的抓码,其实就是说面对较窄的红外脉冲是无能为力的了。象这样的抓码器,用一颗SOP14或SSOP16的FPPA就完全可以搞定了,想想看,一颗PIC16F877A多少钱,SOP14的FPPA又才多少钱呢。
WWW_PLCJS_COM-PLC-技.术_网

      但是为了达到专业的效果,我选择了PDK80C68来做这个东西,哈哈,这里面有512RAM,利用自创的FPPA单片机的FIFO技术,提高处理能力。
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

     系统需求:
WWW_PLC※JS_COM-PmLC-技.术_网

      FPP0,做脉冲捕捉测试,查询方式,有人可能会说了,怎么不用中断,查询可以处理过来吗。其实如果频繁中断,当中断中再发生中断时,中断不也一样需要排队处理吗,或者先处理优先级高的。所以只要你查询够快,中断不会比查询强的。
plcjs.技.术_网

     FPP1,做串口接收处理,接收上位机的一些指令,如是正常测试,还是载波测试,或者是外部信号测试等。这里说的外部信号测试是一般的抓码器都没有的,因为一般的MCU能有2个外部中断或者2个脉冲捕捉就很不错了的,哪里来的第三个口可以有这样的功能呀,而FPPA就不一样了,所有的IO都可以用来进行脉冲捕捉的,只要你处理得当。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

    FPP2,做串口发送处理,检测FIFO中有没有数据,有则将数据从串口发送出去;
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    FPP3,专门用来做FI处理,就是向FIFO中加数据,将检测到的数据信号写入FIFO中。
WW.W_PLC※JS_C,OM-PL,C-技.术_网

    这样一协调之后,FPP0跑一个循环时间才20us左右,也就是说当红外脉冲中有高于20us以上的低电平信号,我都可以完全正常捕捉到,而且分辨不到1us的,哈哈,这下够专业了吧,我相信上面使用PIC16F877A做的那位,肯定达不到这样的效果的。想想看,一般38K的载波信号,一个周期是多少us,呵呵,已经约27us了,哪有用一个载波发头码或其他数据的,当然用4个脉冲做头的还是有的是,也就是约108us,这已经很不简单了,差点的接收头都不能完全正常反映了,也是因为接收头害得白白苦想了1个晚上,以为自己的程序在检测很窄的低电平时处理不正常呢。后来从5,6个接收头中选了一个能够反应过来的,可解调的信号还是和载波宽度有一定的差距,一般都是140~200us了。看来红外的精度到底有多少,还有待大家去探讨呀。
WW.W_PLCJS_COM-PLC-技.术_网

       这次用的FIFO远超过256了,呵呵,起初用了384,后来没有怎么用RAM又加了一些。为什么FIFO可以解决发送暂缓呢,主要是因为红外信号之间还有一个长时间的停顿,这个期间是可以发送很多数据的,而且发送的波特率也可以加快的,19200实在是太底了。
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

       给大家比较下一副图片,看看能否察觉所抓的2个波形有没有一点不一样了, 
plcjs.技.术_网

         也许是心理作用,我总感觉下面的会更清晰一些,毕竟设计的目的就是为了抓出来的波形更准嘛。
WWW_PLCJS@_COM%-PLC-技.术_网

         这样的应用系统,基本不使用什么中断,普通架够的MCU能够实现吗,谁要是能够用PIC16C57做出来,立马下跪,以头戕地,大叫高人呀,请收小的为徒吧。为什么比57,呵呵,因为价格和57差不多的。
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

        还是这句话,普通的频率,脉宽捕捉等,用SOP14,或SSOP16就好了的。不信,你看看我这程序有多大的ROM和RAM吧:

本新闻共2页,当前在第11 2  
WWW_P※LCJS_COM-PLC-)技.术_网

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行