增量式光电编码器

  增量式光电编码器利用光电方法,通过光电转换将输出轴的机械量,几何位移量转换成相应的电脉冲信号或数字量输入电子计算机或显示仪表,从而获得机械运动状态,位置坐标及其变化量等信息,计算机根据这些信息给出处理结果和发出指令,实现自动控制。光电轴角编码器在数控机床、机器人、伺服传动技术、自动控制技术等方面得到广泛的应用。

特点

  增量式光电编码器的特点是每产生一个输出脉冲信号就对应于一个增量位移,但是不能通过输出脉冲区别出在哪个位置上的增量。它能够产生与位移增量等值的脉冲信号,其作用是提供一种对连续位移量离散化或增量化以及位移变化(速度)的传感方法,它是相对于某个基准点的相对位置增量,不能够直接检测出轴的位置信息。一般来说,增量式光电编码器输出A、B 两相互差90°电度角的脉冲信号(即所谓的两组正交输出信号),从而可方便地判断出旋转方向。同时还有用作参考零位的Z 相标志(指示)脉冲信号,码盘每旋转一周,只发出一个标志信号。标志脉冲通常用来指示机械位置或对积累量清零。

优点

  增量式光电编码器的优点是:原理构造简单、易于实现;机械平均寿命长,可达到几万小时以上;分辨率高;抗干扰能力较强,信号传输距离较长,可靠性较高。其缺点是它无法直接读出转动轴的位置信息。

构成

  增量式光电编码器主要由光源、码盘、检测光栅、光电检测器件和转换电路组成,如图1所示。码盘上刻有节距相等的辐射状透光缝隙,相邻两个透光缝隙之间代表一个增量周期;检测光栅上刻有A、B 两组与码盘相对应的透光缝隙,用以通过或阻挡光源和光电检测器件之间的光线。它们的节距和码盘上的节距相等,并且两组透光缝隙错开1/4 节距,使得光电检测器件输出的信号在相位上相差90°电度角。当码盘随着被测转轴转动时,检测光栅不动,光线透过码盘和检测光栅上的透过缝隙照射到光电检测器件上,光电检测器件就输出两组相位相差90°电度角的近似于正弦波的电信号,电信号经过转换电路的信号处理,可以得到被测轴的转角或速度信息。增量式光电编码器输出信号波形如图2所示。

增量式光电编码器的输出信号波形

  图2 增量式光电编码器的输出信号波形

技术指标

  在增量式光电编码器的使用过程中,对于其技术规格通常会提出不同的要求,其中最关键的就是它的分辨率、精度、输出信号的稳定性、响应频率、信号输出形式。

  (1)分辨率

  光电编码器的分辨率是以编码器轴转动一周所产生的输出信号基本周期数来表示的,即脉冲数/转(PPR)。码盘上的透光缝隙的数目就等于编码器的分辨率,码盘上刻的缝隙越多,编码器的分辨率就越高。在工业电气传动中,根据不同的应用对象,可选择分辨率通常在500~6000PPR 的增量式光电编码器,可以达到几万PPR。交流伺服电机控制系统中通常选用分辨率为2500PPR 的编码器。此外对光电转换信号进行逻辑处理,可以得到2 倍频或4 倍频的脉冲信号,从而进一步提高分辨率。

  (2)精度

  增量式光电编码器的精度与分辨率完全无关,这是两个不同的概念。精度是一种度量在所选定的分辨率范围内,确定任一脉冲相对另一脉冲位置的能力。精度通常用角度、角分或角秒来表示。编码器的精度与码盘透光缝隙的加工质量、码盘的机械旋转情况的制造精度因素有关,也与安装技术有关。

  (3)输出信号的稳定性

  编码器输出信号的稳定性是指在实际运行条件下,保持规定精度的能力。影响编码器输出信号稳定性的主要因素是温度对电子器件造成的漂移、外界加于编码器的变形力以及光源特性的变化。由于受到温度和电源变化的影响,编码器的电子电路不能保持规定的输出特性,在设计和使用中都要给予充分考虑。

  (4)响应频率

  编码器输出的响应频率取决于光电检测器件、电子处理线路的响应速度。当编码器高速旋转时,如果其分辨率很高,那么编码器输出的信号频率将会很高。如果光电检测器件和电子线路元器件的工作速度与之不能相适应,就有可能使输出波形严重畸变,甚至产生丢失脉冲的现象。这样输出信号就不能准确反映轴的位置信息。所以,每一种编码器在其分辨率一定的情况下,它的转速也是一定的,即它的响应频率是受限制的。编码器的响应频率、分辨率和转速之间的关系如公式(1-1)所示。

  (5)信号输出形式

  在大多数情况下,直接从编码器的光电检测器件获取的信号电平较低,波形也不规则,还不能适应于控制、信号处理和远距离传输的要求。所以,在编码器内还必须将此信号放大、整形。经过处理的输出信号一般近似于正弦波或矩形波。由于矩形波输出信号容易进行数字处理,所以这种输出信号在定位控制中得到广泛的应用。采用正弦波输出信号时基本消除了定位停止时的振荡现象,并且容易通过电子内插方法,以较低的成本得到较高的分辨率。

  增量式光电编码器的信号输出形式有:集电极开路输出(Open Collector)、电压输出(Voltage Output)、线驱动输出(Line Driver)、互补型输出(Complemental Output)和推挽式输出(Totem Pole)。

  集电极开路输出这种输出方式通过使用编码器输出侧的NPN 晶体管,将晶体管的发射极引出端子连接至0V,断开集电极与+Vcc 的端子并把集电极作为输出端。在编码器供电电压和信号接受装置的电压不一致的情况下,建议使用这种类型的输出电路。输出电路如图所示。主要应用领域有电梯、纺织机械、注油机、自动化设备、切割机械、印刷机械、包装机械和针织机械等。

集电极开路输出电路

用DSP实现细分

  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×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×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

相关百科