枭龙战机

利用ADuC7060对光电码盘进行测速

0
阅读(5094)

  光电码盘的常用测速方法有M法、T法及M/T法,M法通过测量定时时间内的码盘输出脉冲数来测定转速,关节转速越大,则所检测到的脉冲数越多,测速误差也就随之减小,所以M法主要适用于高速阶段;T法则是通过检测一个码盘输出脉冲周期内的高频时钟个数来测速,其主要适用于低速阶段;M/T法则是前边二者的综合,测速范围最广;研究对象为机械臂,他的转动惯量比较大,工作在中低速范围内,且现在单片机的内核时钟频率都很高,所以本课题采用了T法进行测速,通过ADuC7060单片机来实现码盘的测速功能,其测速原理如下图:

                 测速原理图

  在T法测速中,设单片机的内核时钟频率为f0,则码盘两个相邻输出脉冲的时间间隔T1可以根据计数器所得到的单片机内核时钟个数M2计算出来,即T1=M2/f0,则电机转速为

  式中f0为单片机内核时钟频率,Z为电机转一周码盘所发脉冲数。

  光电码盘测速为数字测速方法,而数字测速的精度主要是由分辨率和误差率两个指标来衡量,下面将分别介绍以一下T发的两个指标:

(1) 分辨率

定义T法测速的分辨率为单片机时钟个数从M2-1运行到M2时速度的变化量,用Q来表示,则有

将前面式子代入得

由上式可知,转速越大,Q越大,分辨率越低,可见T法适用于低速。

(2) 误差率

  在T法测速中,误差率主要受码盘精度,以及单片机时钟脉冲周期不完整所带来的计数误差等,但最大也就是一个脉冲的误差,所以T法测速的最大误差率为

 

  由上式可知低速时误差率小,测速精度高。

  由于机械臂速度检测时,不可避免的会受到外部的干扰,和传统的模拟测速使用模拟硬件进行滤波不同,我们的光电码盘测速方法是数字测速,往往采用软件来进行数字滤波,数字滤波使用灵活,而且只需对软件修改,就可完成对滤波参数的设定,其完全能够代替硬件滤波,完成模拟滤波无法实现的功能,同时还可克服硬件滤波电路所带来相移的缺点,本课题采用了中值平均滤波的方法来对光电码盘的测速结果进行数字滤波,以消除外部干扰,中值平均滤波原理如下:

  设有N次采样值,通过对其排序得X1<X2<L<XN,去掉最大值XN和最小值X1,求取剩下的数据进行算术平均值,所得到的值既是滤波结果,设为Y:

  中值平均滤波结合了中值滤波和算术平均滤波的优点,它既可以滤除偶然的干扰脉冲,又可对测速结果进行平滑滤波。

    在使用单片对T法测速进行实现时,只需对前面的位置检测程序中加入一个计数器来累积两个上升沿中断期间的单片机时钟个数,还得设置速度下限,当速度小于一定数值即计数数值大于某一定值视为零速,最后对所得测速结果进行滤波即可。

  将码盘测速结果通过单片机输出到MATLAB里,与实际陀螺标准测速信号进行对比,结果如图: