用DSP实现增量式光电编码器的细分

2007-03-09 19:03:27来源: 互联网
摘要:对光栅传感器原始信号进行细分是采用各类光栅器件进行高精度位置测量、角度测量过程中不可或缺的一个环节。细分方法多种多样,针对各种现有的电子学细分方案并结合实际应用,本文采用软件程序判卦限,查表细分方法,实现了针对测角传感器信号的2048次细分。 关键词:光栅传感器, 测量, 细分 1 引言 目前,各类伺服驱动器及其应用中广泛采用光栅装置作为速度测量、位置测量的敏感元件。而且,广泛采用两路正交方波的形式,系统的实时性要求极高。因此,对于光栅编码器的信号的细分等主要处理环节,一方面集中考虑提高分辨率的问题,同时,需要考虑实时性的问题。 有很多采取纯硬件进行细分的方法,如,电阻链细分,空间细分,锁相倍频,还有两种方法的结合使用等。上述几种方法在实际应用中被广泛采用,特别是电阻链细分,在低倍频的情况下是一种很好的方案。但是在高倍频的情况下,不可避免地出现大量使用比较器的情况,以及比较器死区(滞后区)问题,难以调节。空间细分的方法中,主要解决的问题是切割电平精准的问题,其中的三角波切割三角波的方案有很多优点,可以改变使用过零比较造成的细分误差。但是仍然存在大量使用比较器的问题,调节起来比较繁琐。锁相倍频细分的方法,一方面,成本较前两种高,另一方面,受环境温度的影响比较大,实际的应用中很少采用。 高速数字处理器件DSP的应用可以极大地改善系统的实时性,DSP中集成了16路10位A/D转换,同时有丰富的硬件资源,比较器、定时器,和两个专门用于产生PWM波的事件管理器。DSP中丰富的指令集为做除法提供了条件。设DSP(2407a)的时钟频率是40MHZ,除法程序可以在35个指令周期内执行完,两路A/D转换需要29个指令周期,查询数据得细分值需要两个指令周期。共69个指令周期,DSP中程序执行是流水线执行的,一个时钟周期最多可以执行4条指令。则需要不到1.6us就可以得到精确的光栅位移值。对于一般的应用场合,用DSP细分可以足够保证控制器500KHz的频带,和定位的精确性。 本文从原理上考虑在DSP中完成细分的方案,使用取绝对值,八卦限理论,利用DSP器件(速度为25纳秒)对信号进行逻辑运算和处理等一整套信号细分方案。 2 细分及框图 通过软件查询的方式进行细分。从光电编码器输出的两路角位移信号首先进行滤波整型,硬件辨向,提取整周期信号,得到粗位移;同时对两路信号进行A/D转换,通过U函数得到计数脉冲,从而得到卦限值,通过V函数得到精位移的地址信号,查询得到精位移。系统框图如下: 输入的两路信号分别是x1=2.5*sin(fai)+2.5(v),x2=-2.5*cos(fai)+2.5(v);在DSP中有专门的16路A/D转换电路,因而不用再设计A/D转换电路。A/D转换后得到y1=|2.5*sin(fai)|,y2=|-2.5*cos(fai)|。对其进行卦限计数, A/D转换周期由软件设定,而在硬件电路实现时,必须要考虑卦限信号,控制信号的高度同步,但在实际电路中是很难做到的。 如果将该数据与相位之间的对应关系用一张表来描述,就是我们所建立的细分表,放在DSP中的SRAM中,DSP中集成了2K%26;#215;16的SRAM,足够放置查询表。两者之间并不是一一对应关系。 (FAI)(t)=arctanθt∝sinxt/cosxt; 软件流程图如下: 软件程序流程图: U函数取为U=y1*y2*(y2-y1);当U为零时,卦限信号就增加1 ; ;;;;;;;;;;-------细分程序 XIFEN: LDP #0E1h; CLRC SXM ; 抑制符号位扩展 LACC RESULT0,10 SACH X1 ; 存X1值 LACC RESULT1,10 ; SACH X2; 存X2值 SETC SXM ;允许符号位扩展 LACL R1SIN; SUB #JUNZHI ;(2.5V); ABS SACL Y1 ; 得到y1 LACL X2; SUB #JUNZHI(2.5V); ABS SACL Y2 ; 得到y2 SUB Y1 ; SACL Y ; 得到Y=y2-y1值,保存 ;用dsp中计数器T4记卦限 BCND ss,NEQ Lacl y1 BCND ss,NEQ Lacl y2 BCND ss,NEQ ;若U=0,卦限计数器计数 set t4clkin ; 为计数器提供脉冲 ss: LACL y BCND DEVISION,GEQ ; 判断卦限,y2>=y1 时,直接y1/y2;否则y2/y1,除数变被除数 JIAOHUAN: LACC y1 ; y1和y2交换 SACL TEMP_AD ; LACL y2 ; SACL y1 ; LACC TEMP_AD ; SACL y2 ; y2/y1 ; 毫秒为Q8格式 DEVISION LACC R1SIN ,6;;;;取分子并左移6位; RPT #15 ; 后面的指令执行15+1次。 SUBC R2COS ;16 CYCLE DIVIDED LOOP ; .ACC中的数据减去Demon 减10次,直到被减数小于0 SACL QUOT ; 得到商 SACH REMAIN ; 得到余数 LACC REMAIN; 取余数后再除 RPT #13 ; 后面的指令执行14次。 SUBC DENOM; AND QUOT; ; SACL QUOT ;;;保存商。得到十位地址信号。用此信号得到RAM中对应地址细分值保存在DSP的sram中) ADD #0800h ;SRAM 初始地址为#0800H( SAL XIFEN_ADR ; LACC #XIFEN_ADR ADD #0800h ;SRAM 初始地址为#0800H SAL XIFEN_ADR ; LACL Y ;Y2>=Y1 ; BCND yy2 ,GEQ LACL #05h ;设编码最小栅格为40秒,一个卦限为5秒。 SUB #XIFEN_ADR B YY YY2: LACC #XIFEN_ADR YY: Ldp #0eah ; LT t4cnt ;卦限值 MPY #05h ; 一个卦限相差5秒, APAC 得到精确细分值 根据得到的细分值与整周期值相加就可以得到对应的光栅编码信号。 当速度特别慢时,用软件判卦限会出现重复计数。也就是一个细分周期里,电机转动的位移小于20/1024秒,如下图。卦限函数使得卦限增1,产生错误。我们要舍弃这个计数。 为了解决这个问题,我们把软件的判卦限程序改以下:用一个flaggx标志来表示卦限信号是否刚记过。刚刚记过,就舍弃掉。改正的程序流程如下图。 3 软件辨向 要精确的控制电机,就必须精确判断当电机转动出现来回摆动时的方向。对硬件辨向只能做到在整周期计数时知道电机的转动方向,当在一个整周期内方向改变时,硬件辨向就不能及时的传递方向信息。我们根据判方向的规则,在软件中完成辨向,在1,2,7,8卦限,x2小于等于2.5v时为顺时针转动,大于2.5v为逆时针转动;在3,4,5,6卦限,x2大于2.5v时为顺时针转动, 小于等于2.5v为逆时针转动;程序流程: direction=1,表示顺时针,为0是逆时针; 若做到1024细分, 分八个卦限,每个卦限有256个细分值。在DSP中只需要256%26;#215;16个单元存储细分值即可。 细分码如下: 在DSP中有 细分码 地址码 卦限地址 A/D转换得到的地址 000,0000,0000 000 3 00,0000,0000~00,0000,0010 000,0000,0001 000 6 00,0000,0011~0000,0010~101 000,0000,0010 。 9 1001 000,0000,0011 。13 1101 000,0000,0100 。16 10000 000,0000,0101 19 1 000,0000,0110 22   000,0000,0111 25   000,0000,1001 28   000,0000,1010..... 31   000,0000,1011 35   000,0000,1100 38   000,0000,1101 41   000,0000,1110 44   000,0000,1111 47   000,0001,0000 50   000,0001,0001 53   000,0001,0010 57     60     63     66     69   000,0110,1111 366   000,0111,0000 370   000,0111,0001 373   000,0111,0010 377   000,0111,0011 381   000,0111,0100 384   000,0111,0101 388   000,0111,0110 391   000,0111,0111 395   000,0111,1000 399   000,0111,1001 402   000,0111,1010 406   000,0111,1011 410   000,0111,1100 413   000,0111,1101 417   000,0111,1110 420   000,0111,1111 424   000,1000,0000     ......     000,1111,1000(248) 945   000,1111,1001 981   000,1111,1010 987   000,1111,1011 993   000,1111,1100 999   000,1111,1101 1005   000,1111,1110 1012   000,1111,1111 1018 00 001,0000,0000 1024 11,1111,1111~11,1111,1
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/dsp/200703/10405.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved