一种对旋转编码器识别的改进方法

文档序号:6364158阅读:326来源:国知局

专利名称::一种对旋转编码器识别的改进方法
技术领域
:本发明涉及嵌入式Linux旋转编码器进行数据采集的方法,具体涉及旋转编码器识别方式的改进。
背景技术
:近年来,嵌入式技术发展迅速,嵌入式系统在各行各业得到了广泛的应用。然而,由于嵌入式计算机的专用性,系统的硬件,软件结构千差万别,其输入设备也不再像通用计算机那样单一。嵌入式计算机的输入没备一般有鼠标,键盘,触摸屏,按钮,旋钮等,而旋转编码器作为一种输入设备,由于其具有输入灵活,简单可靠等特点,因此特别适合应用在嵌入式仪器和手持式设备上,用光电编码器作为输入设备,必将大大增强系统的可靠性,使得人机接口更加人性化.但由于旋转编码器并不是Linux的标准输入设备,因此其驱动程序在嵌入式操作系统中并未给出,而且在其他平台下旋转编码器大多是通过状态机的方式进行识别,无法很精确的确定旋转编码器位置信息,为此需要解决旋转编码器在嵌入式Linux中应用的问题,并且需要一种行之有效的用旋转编码器进行数据采集的方法。相关名词解释I、LinuxLinux是一种自由和开放源码的类Unix操作系统。2、编译器编译器是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程源代码(sourcecode)—预处理器(preprocessor)—编译器(compiler)—汇编程序(assembler)—目标代码(objectcode)—链接器(Linker)—可执行程序(executables)。
发明内容本发明的目的为了克服现有技术存在的上述问题,而提供一种基于嵌入式Linux旋转编码器进行数据采集的方法,按以下步骤进行—种对旋转编码器识别的改进方法,其特征在于包括以下步骤步骤一、搭建嵌入式Linux编译平台,并在Linux平台下,使用交叉编译工具进行交叉编译,生成在嵌入式平台上运行的目标代码;步骤二、采用增量式旋转编码器搭建编码器硬件电路;步骤三、采集信号数据,并对信号初始化及采集对比处理;步骤四、采集对比后的数据将会通过Linux编码器驱动传递到应用层;步骤五、结束所有信号采集处理过程,等待下次动作。优选的,上述步骤三还包括对编码器的端口进行初始化设置,并且在编码器信号的处理时需要对编码器的状态进行保存和对比。优选的,上述步骤三具体包括(I)对编码器对应管脚及其中断方式进行初始化,给其一个预设的状态;(2)等待中断,当有中断时,将会触发中断处理函数,开始整个处理过程;并开启一个定时器,定时器时间到时如果编码器没有中断触发则结束本次处理,如果在定时时间内又收到中断信号,则更新定时器,使其重新计时;(3)判断计数器状态,如果计数器为0,则为第一次处理,对编码器的状态不做判断,只将其下次状态及其方向进行保存,并且计数器加一;若计数器不等于0,则需要将本次采集到的编码器的状态和上次的状态进行对比,如果对比结果一致,说明编码器工作正常,否则工作异常,并且需要置位异常状态标志;(4)判断异常标志位,如果异常标志位不等0,说明上次操作出现异常,将本次状态及方向跟上次出现异常之前的方向作对比,如果一致则说明状态正常,清除异常标志位并预估下次状态;如果方向不同说明本次状态异常,保持编码器方向不变,继续下次状态采集。本发明提供的对旋转编码器识别的改进方法是针对旋转编码器抖动带来的误操作的解决方法,较好地解决了旋转编码器抖动的问题,防止了误操作的产生,同时,方便了操作,提升了系统可靠性,改善了用户体验。图I为系统流程图;图2为嵌入式开发操作方式图;图3为编码器硬件电路;图4为算法流程图。具体实施例方式为了便于本领域普通技术人员理解和实施本发明,下面结合附图及具体实施方式对本发明作进一步的详细描述。本发明的实现方式包括以下步骤和内容I)嵌入式Linux编译平台的搭建嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行。嵌入式系统的交叉编译环境一般包括交叉编译器、交叉调试器和系统仿真器。其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件。然后通过串口或者以太网将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试。最后目标机在特定环境下脱离宿主机单独运行。建立交叉编译环境是进行嵌入式软件开发的第一步,目前常用的交叉编译环境主要有开放和商业两种类型。开放的交叉编译环境的典型代表是GNU工具链,目前已经能够支持X86,ARM,MIPS,PowerPC等多种处理器。商业的交叉开发环境则主要有MetroworksCodeffarrior,ARMSoftwareDevelopmentToolkit,SDSCrosscompiler,WindRivernTornado,MicrosoftEmbeddedVisualC++等。本文采用RedHatEnterpriseLinux4作为软件开发平台,用GNU工具链作为交叉编译器,这些工具链包括如下组件(l)binutils:用于操作二进制文件的实用程序集合,包括诸如ar、as、objdump、objcopy这样的实用程序。(2)gcc:GNUC编译器。(3)Glibc:所有用户应用程序都将链接使用到的C库。有两种方法可以用来建立工具链一种方法是下载这些工具的软件包,自己编译这些源代码;另一种简单的方法就是直接从网上下载已经编译好的工具链。本文采用的第二种方法,具体步骤如下(I)下载所需开源文件cross-3.3.2.tar.bz2;(2)终端下使用root用户登陆#mkdir/usr/local/arm#cpcross-3.3.2.tar.bz2/usr/local/arm#tarjxvfcross-3.3.2.tar.bz2-C/usr/local/ar(3)添加环境变量ExportPATH=/usr/local/arm/3.3.2/bin:$PATH这样在该终端下就建立好交叉编译工具链了。也可以将添加环境变量这个命令放到配置文件/etc/bashrc的最后,这样以后每个终端都能够使用该工具链。2)编码器硬件电路旋转编码器广泛应用于旋转角度的测量,以及可以将各种参数角度化的参数的测量,通过与各种机械结构的组合,可以测量多种物体的边缘形状、各种机械装置的结构偏差等。编码器电路如图3:在图中,上拉电阻R14、R15、R46分别连接到旋转编码器的1、3、5管脚,ESD器件D3、D4、D6分别接到1、5、3管脚,电容C3、C4分别接到1、3管脚。3)信号初始化及采集对比处理整个处理流程如图I所示。I:首先对编码器对应管脚及其中断方式进行初始化,给其一个预设的状态。2:等待中断,当有中断时,将会触发中断处理函数,开始整个处理过程。并开启一个定时器,定时器时间到时如果编码器没有中断触发则结束本次处理,如果在定时时间内又收到中断信号,则更新定时器,使其重新计时。3:判断计数器状态,如果计数器为0,则为第一次处理,对编码器的状态不做判断,只将其下次状态及其方向进行保存,并且计数器加一。若计数器不等于0,则需要将本次采集到的编码器的状态和上次的状态进行对比,如果对比结果一致,说明编码器工作正常,否则工作异常,并且需要置位异常状态标志。4:判断异常标志位,如果异常标志位不等0,说明上次操作出现异常,将本次状态及方向跟上次出现异常之前的方向作对比,如果一致则说明状态正常,清除异常标志位并预估下次状态;如果方向不同说明本次状态异常,保持编码器方向不变,继续下次状态采集。4)处理后的数据通过编码器驱动传递到应用层把经过处理后的可靠的编码器数据通过编码器驱动传递给应用层,供应用层直接使用。5)结束所有信号采集处理整个过程处理完成后,会通过系统汇报函数对本次处理结果进行汇报,应用层根据收到的信息进行相应的处理。以上所述,仅是用以说明本发明的具体实施案例而已,并非用以限定本发明的可实施范围,举凡本领域熟练技术人员在未脱离本发明所指示的精神与原理下所完成的一切等效改变或修饰,仍应由本发明权利要求的范围所覆盖。权利要求1.一种对旋转编码器识别的改进方法,其特征在于包括以下步骤步骤一、搭建嵌入式Linux编译平台,并在Linux平台下,使用交叉编译工具进行交叉编译,生成在嵌入式平台上运行的目标代码;步骤二、采用增量式旋转编码器搭建编码器硬件电路;步骤三、采集信号数据,并对信号初始化及采集对比处理;步骤四、采集对比后的数据将会通过Linux编码器驱动传递到应用层;步骤五、结束所有信号采集处理过程,等待下次动作。2.如权利要求I所述的对旋转编码器识别的改进方法,其特征在于所述步骤三还包括对编码器的端口进行初始化设置,并且在编码器信号的处理时需要对编码器的状态进行保存和对比。3.如权利要求I或2所述的对旋转编码器识别的改进方法,其特征在于所述步骤三具体包括(1)对编码器对应管脚及其中断方式进行初始化,给其一个预设的状态;(2)等待中断,当有中断时,将会触发中断处理函数,开始整个处理过程;并开启一个定时器,定时器时间到时如果编码器没有中断触发则结束本次处理,如果在定时时间内又收到中断信号,则更新定时器,使其重新计时;(3)判断计数器状态,如果计数器为0,则为第一次处理,对编码器的状态不做判断,只将其下次状态及其方向进行保存,并且计数器加一;若计数器不等于0,则需要将本次采集到的编码器的状态和上次的状态进行对比,如果对比结果一致,说明编码器工作正常,否则工作异常,并且需要置位异常状态标志;(4)判断异常标志位,如果异常标志位不等0,说明上次操作出现异常,将本次状态及方向跟上次出现异常之前的方向作对比,如果一致则说明状态正常,清除异常标志位并预估下次状态;如果方向不同说明本次状态异常,保持编码器方向不变,继续下次状态采集。全文摘要本发明涉及嵌入式Linux旋转编码器进行数据采集的方法,以及系统的软硬件设计、驱动程序开发和实际应用情况,得出了编码器进行数据采集的一种切实可行的方法。通过程序滤除和减少旋转编码器抖动带来的误操作。具体包括以下步骤1)嵌入式Linux编译平台的搭建;2)编码器硬件电路编码器采用一般的增量式旋转编码器;3)信号初始化及采集对比处理;4)信号传递采集对比后的数据将会通过Linux编码器驱动传递到应用层;5)结束所有信号采集处理过程,等待下次动作。文档编号G06F9/45GK102609258SQ201210023270公开日2012年7月25日申请日期2012年2月2日优先权日2012年2月2日发明者朱敦尧,李妙峰申请人:武汉光庭科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1