机器人运行过程中,电机转动会产生各种干扰信号。通过两组电源给机器人驱动系统和控制系统供电,以消除干扰对稳定性的影响。
码盘加陀螺仪的方法在应用过程中发现陀螺仪的角度会随着机械振动发生漂移,影响定位精度。
光电编码器,是一种集光、机、电为一体的数字测角装置。作为一种重要的角度传感器,在众多领域用途广泛。光电编码器的核心部件是光电器件,它是能将光能转换为电能的一种传感器。光电转换的理论基础是光电效应,即金属、半导体等材料在光照下释放出光电子的现象。近年来随着科技的发展,传统的光学编码器在使用中存在许多无法克服的技术问题,特别是在航天、自控等领域对微型传感器的要求越来越高,要求光学编码器向高精度、高分辨率、小型化和智能化方向发展。
1.1 编码器概述
光电编码器是一种将位移或角度的模拟信号转换成相应的电脉冲或数字量角度/角速度检测元件,具有精度高、体积小、工作可靠、接口数字化等优点。光电编码器一般由透镜、光栅盘(码盘)、光敏元件和放大整形电路组成。工作时,光栅盘与电机同速旋转,同时一个带有辨向狭缝(或狭缝群)的扇形薄片与圆盘平行放置,当光线通过这两个做相对运动的光栅盘时,光敏元件接受到的光通量也时大时小地连续变化,经放大整形电路处理后变成脉冲信号。通过测量捕捉到的脉冲数目和频率即可测出工作轴的转角和转速。而电机的当前转速通过每秒光电编码器输出脉冲的个数可以计算出来。编码器原理图如下图所示:
1.2 编码器的种类和工作原理
根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。绝对编码器是直接输出数字量的传感器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码。编码盘上沿径向有若干同心码道,码道越多,分辨率越高,相邻码道的扇区数目是双倍关系。工作时,光敏元件根据受光照与否转换出相应的电平信号,形成二进制数。对于一个具有N位二进制分辨率的编码器,其码盘必须有N条码道。目前国内已有16位的绝对编码器产品。绝对式编码器图案如下图所示。
绝对式编码器与增量式编码器不同之处在于圆盘上透光、不透光的线条图形,与增量式编码器相比,绝对编码器有若干编码,根据码盘上的读数信息,检测绝对位置。它的特点是
(1) 可以直接读出角度坐标的绝对值。
(2) 抗干扰特性强、数据的可靠性大大提高,没有累积误差。
(3) 分辨率是由二进制的位数决定的。
(4) 不受停电、干扰的影响,什么时候需要知道位置,什么时候就去读取它的位置。
增量编码器是以脉冲形式输出的传感器。输出的信号为方波信号,其中又可以分为带换向信号的增量式编码器和普通的增量式编码器,普通的增量式编码器具备两相正交方波脉冲输出信号A、B,以及零位信号Z。通过内部两个光敏接收管转化其角度码盘的时序和相位关系,得到其角度位移量增加和减少。利用光电转换的原理输出三组方波脉冲A、B、Z相。A、B两组脉冲相位差90度,从而方便的判断旋转方向,故而增量编码器又叫正交编码器(如下图)。
编码器旋转一圈会输出固定的脉冲,脉冲数由编码器光栅线数决定。需要提高分辨率时,可利用90度相位差的A、B两路信号进行倍频或换用更高分辨率编码器。Z相为每转一个脉冲,只在固定的位置才会发出脉冲,用于基准点定位。
带换相信号的增量式编码器除具备ABZ输出信号外,还具备互差120度的电子换相信号UVW,UVW各自的每转周期数与电机转子的磁极对数一致。对于此类编码器,在这不讨论。
增量式光电编码相对角位移量通过计数电路对脉冲进行累计计数得到,其特点是结构简单、抗干扰能力强、可靠性高、机械平均寿命长、价格低廉,非常适合竞赛机器人,我们选用的增量式编码器一HEDS 5540,实物图
1.3 速度、方向、转角的测量
增量式光电编码器输出三组脉冲A, B和Z相,A, B两组脉冲相位差90度,而Z相为每转一个脉冲,用于基准点定位。利用A, B和Z相可以实现转速的测量、运动方向的判断以及转角的测量。当编码器正转时,A相脉冲波形比B相超前 ,而反转时,A相脉冲比B相滞后 。
增量式光电编码器系列有各种不同类型的输出电路可供选择,其输出电路类型一般有:带上拉电阻的 NPN 型、集电极开路 NPN 型、推挽输出型、差分输出型。
M测量法(适用于高转速场合)测量固定时间间隔内脉冲个数来确定转速。
T测量法(适用于低转速场合)测量相邻脉冲之间的时间间隔来确定转速。
(1) 转速测量
(2) 方向判别
光电编码器的检测窄缝群相位相差90度,可产生两列频率可变、固定1/4周期相位差(即90度)的正交编码脉冲序列A和B。当光电编码器正转时,光线首先通过检测窄缝群产生A信号的高电平,即A相超前B相90度;与之相反,当光电编码器反转时,A相则滞后B相90度。如下图所示。
由此可得,光电编码器输出脉冲的个数确定具体的位置和计算运动的速度,而驱动轮的运动方向可以通过两组脉冲信号A相和B相的相位差来(上升沿的前后顺序)判断。
(3) 位移计算
编码器安装在与主动轮同轴的从动轮上,与主动轮同步转动。设从动轮周长为L,编码器线数(旋转一周脉冲数即500)为M,t时间输出的脉冲数为N,t时间轮子走过的距离△S就是:通过方向输出引脚是高电平还是低电平决定是加计数还是减计数。
1.4 利用单片机进行码盘计数的方法
(1) 常规方法:
文献[2]中提到了码盘的四倍频来实现提高码盘精度的方法,以及码盘信号的抖动去除电路,同时给出了码盘辩向的方法。在利用单片机进行测量码盘信号时,本文结合实际情况给出了相关的参数计算,即所选用单片机是否可以用来测量码盘信号以及中断程序能够处理的指令数,对于单片机初学者有一定的指导作用。论文后面提供了C语言程序,方便读者领会。总体而言,此文言简意赅,思路清晰。当然,对于其中提到的jitter去除的电路的作用有待进一步研究。此种方法通常在51单片机、AVR及Arduino等单片机上运用较多。
(2) 特殊方法:
用常规方法有时候可能用起来比较复杂,还需要自己设计搭建jitter消除电路。而现在用的很多的STM32F1~STM32F4等系列的单片机已经集成了编码器接口,具体参见《STM32参考手册》13.3.12编码器接口模式。
STM32F4自带的正交码盘配置库函数
void TIM_EncoderInterfaceConfig ( TIM_TypeDef * TIMx,
uint16_t TIM_EncoderMode,
uint16_t TIM_IC1Polarity,
uint16_t TIM_IC2Polarity
)
2.结论
用STM32F1~F4单片机都能很好的出进行增量式编码器的数据采集,另外STM32还带滤波功能。
参考文献
[1] 基于双码盘的竞赛机器人运动控制系统设计与研究,电子科技大学,李金彦,骆德渊,2009.5
[2] 基于单片机的增量式编码器计数系统,仪表技术与传感器,吴禄慎,熊辉,高项清,2013.No.9。