一种基于增量式光电编码器的变M/T测速方法与流程

文档序号:16750820发布日期:2019-01-29 16:50阅读:3580来源:国知局
一种基于增量式光电编码器的变M/T测速方法与流程

本发明属于电机测速领域,尤其涉及一种基于增量式光电编码器的变m/t测速方法。



背景技术:

电机转速作为各类电机的重要物理量之一,常作为反馈量在控制系统中起重要作用。目前,旋转变压器测速法、微电机测速法、光电码盘测速法、霍尔元件测速法这些方法在不同要求的测速系统中被广泛应用。旋转变压器或测速机都要与电机同轴连接,增加了电机机组安装难度,另一方面有些电机功率很小,旋转变压器或测速机消耗的功率占了电机大部分,所以对有些电机的测速,这两种方法不适用。霍尔元件和光电码盘的测速方法基本类似,都是在转轴上安装一个很轻巧的传感器,将电机的转动信号通过霍尔元件或光电码盘转换为电脉冲,从而通过计算电脉冲的个数来测速。其中光电编码器具有低惯量、低噪声、高分辨率和高精度的优点,在电机测速领域得到了广泛的应用。

经检索,编码器测速方法分为三类:m法、t法和m/t法。m法是直接计取给定采样周期内的反馈脉冲数来测量速度,其特点是高速时测速精度高、低速时测速精度低。t法是通过测量两个相邻反馈脉冲的间隔时间来测量速度,其特点是低速时测速精度高、高速时测速精度低,与m法相反。m/t法是在大致相等的采样间隔内,计取一定数目的反馈脉冲,并同时计取这些反馈脉冲间隔内插入的高频时标信号数,以测量速度。该方法是前两种方法的结合,在整个速度范围内都有较好的准确性。但在低速时,由于该方法采样时间间隔固定,若采样时间偏大,在采样区间内出现速度波动则不会通过速度值呈现出来,不利于系统调速,这样就无法满足电机转速检测系统的快速动态响应指标。

因此,如何设计一种电机转速测量精度高,又能在低速到高速的不同电机转速阶段都具有较好测量精度且满足实时性要求的测量方法是本领域亟待解决的技术问题。



技术实现要素:

为解决现有技术中存在的上述问题,本发明提供了一种基于增量式光电编码器的变m/t测速方法。

本发明所述方法包括以下步骤:

步骤1、利用单片机的三路定时器进行定时器及系统的初始化设置,第一路定时器设置为正交编码器工作模式状态,进行高频脉冲的计数;第二路定时器对速度段进行选取判断;第三路定时器进行高频时钟脉冲的计数。

步骤2、初始化设置完成以后,第一路定时器对编码器正交信号计数并利用k-means聚类算法优化计数值,计数得到一组编码器正交信号值并通过算法处理得到聚类中心点以降低误差,具体步骤如下:

步骤2.1、当得到编码器正交信号值数组为{m1,m2,m3,…,mi,…,mn},任选若干个点作为初始中心;

步骤2.2、利用欧式距离公式计算其余点分别与初始中心的距离,与任选若干个点作为初始中心的距离近的点归为一类,直到所有其余点归类完毕;

步骤2.3、按平均值方法重新计算聚类中心点,再重复以上步骤;

步骤2.4、直到算法收敛即聚类中心点不再变动则结束。

步骤3、启动第二路定时器,获取当前第一路定时器的计数值,在定时结束时再次获取当前第一路定时器的计数值,通过比较前后差值判断出当前所处的速度段,确定速度段的m1,按照电机转速的高低设定不同的正交编码信号值m1,通过测取不同的m1,来确定检测时间,检测时间由高频时钟脉冲计算得到,如下公式所示:

假设高频时钟脉冲频率为fclk,测得的高频脉冲信号数为m2,则检测时间为:

t=m2/fclk。

步骤4、启动第二路定时器,获取当前第一路定时器的计数值,第三路定时器开启,经过设定的m1个计数值后,关断第三路定时器,第三路定时器的计数值即为m2。

步骤5、用编码器信号的上升沿、下降沿来同步高频脉冲的起止;在低速时,设定的m1值小,通过高频时钟脉冲计数的时间短;在高速时,设定的m1大,电机转速高,检测时间短。

步骤6、计算当前的电机转速,在进入下一次计数周期前将第三路定时器计数值清零;电机转速计算公式如下:

n=60m1fclk/nm2

上式中,m1为t时间内编码器正交信号的个数;m2为t时间内高频时钟脉冲的个数;n代表编码器分辨率。

本发明的优越效果是编码器正交信号的个数的选取是根据电机当前的转速来确定,在高速时取值大,在低速时取值小,能快速响应,本发明所述方法弥补了m/t法在低速时实时性差的缺点,提高了电机转速测量精度。

附图说明

图1是本发明所述方法的变m/t法脉冲信号示意图;

图2是本发明所述方法的变m/t法电机转速测量程序流程图;

图3是本发明所述方法的tim2定时器中断程序流程图。

具体实施方式

下面结合附图对本发明的实施方式进行详细描述。本发明所述方法包括以下步骤:

步骤1、利用单片机的三路定时器进行定时器及系统的初始化设置,第一路定时器设置为正交编码器工作模式状态,进行高频脉冲的计数;第二路定时器对速度段进行选取判断;第三路定时器进行高频时钟脉冲的计数。

步骤2、初始化设置完成以后,第一路定时器对编码器正交信号计数并利用k-means聚类算法优化计数值,计数得到一组编码器正交信号值并通过算法处理得到聚类中心点以降低误差,具体步骤如下:

步骤2.1、当得到编码器正交信号值数组为{m1,m2,m3,…,mi,…,mn},任选若干个点作为初始中心;

步骤2.2、利用欧式距离公式计算其余点分别与初始中心的距离,与任选若干个点作为初始中心的距离近的点归为一类,直到所有其余点归类完毕;

步骤2.3、按平均值方法重新计算聚类中心点,再重复以上步骤;

步骤2.4、直到算法收敛即聚类中心点不再变动则结束。

步骤3、启动第二路定时器,获取当前第一路定时器的计数值,在定时结束时再次获取当前第一路定时器的计数值,通过比较前后差值判断出当前所处的速度段,确定速度段的m1,按照电机转速的高低设定不同的正交编码信号值m1,通过测取不同的m1,来确定检测时间,检测时间由高频时钟脉冲计算得到,如下公式所示:

假设高频时钟脉冲频率为fclk,测得的高频脉冲信号数为m2,则检测时间为:

t=m2/fclk。

步骤4、启动第二路定时器,获取当前第一路定时器的计数值,第三路定时器开启,经过设定的m1个计数值后,关断第三路定时器,第三路定时器的计数值即为m2。

步骤5、用编码器信号的上升沿、下降沿来同步高频脉冲的起止;在低速时,设定的m1值小,通过高频时钟脉冲计数的时间短;在高速时,设定的m1大,电机转速高,检测时间短。

步骤6、计算当前的电机转速,在进入下一次计数周期前将第三路定时器计数值清零;电机转速计算公式如下:

n=60m1fclk/nm2

上式中,m1为t时间内编码器正交信号的个数;m2为t时间内高频时钟脉冲的个数;n代表编码器分辨率。

如图1所示,编码器输出脉冲的个数为m1,高频时钟脉冲的个数为m2,t为检测时间即允许计数时间,在编码器输出脉冲的上升沿或下降沿开启高频时钟脉冲,在经过设定的整数个正交信号后再由编码器脉冲信号的上升沿或下降沿关闭高频时钟脉冲,m1只能取整数值以避免编码器在两个相邻脉冲信号之间停止时带来的误差。高频时钟脉冲m2存在±1个脉冲误差,相对误差为1/m2,高频时钟脉冲频率越高,测得的电机转速误差越小。

在具体实施例中,采用3路定时器,其中tim1设置为正交编码器工作模式状态;当tim1启动后开始对外部输入的编码器正交信号计数,定时器为16位,设定一个32位的全局变量来进行溢出处理;tim2用于速度段的选取,通过中断程序采样一小段时间内的编码器正交信号的个数来判断当前处于哪个速度段,每个速度段对应的m1的大小与速度的高低成正比关系;tim3用于高频时钟脉冲m2的计数,设置一个32位的变量进行溢出处理。

如图2所示,系统初始化后,tim1开始对编码器正交信号计数,tim2启动的同时获取当前tim1的计数值;在tim2定时结束后,触发中断进入中断函数,再次获取当前tim1的计数值,通过比较前后差值判断出当前所处的速度段,确定速度段的m1,图3所示为tim2定时器中断程序流程图。编码器脉冲信号的计数值利用k-means聚类算法优化后得到,在获取的样本数据中任选几个点作初始中心,然后利用欧式距离公式计算其余点分别与初始中心的距离,按照距离初始中心的距离将其余数据分类,用平均值的方法重新计算得到聚类中心,直到数据值收敛即算法结束;获取当前tim1的计数值,通过差值判断在当前值的下一个计数值的开始开启tim3,再经过中断程序中判断设定的m1个计数值后关断tim3,此时tim3的计数值为m2,通过公式计算得到当前电机转速,在进入下一次循环之前将tim3清零,使编码器正交信号都是以整数个数出现,实时根据当前电机转速设定高频脉冲m1的值,实现了对电机低速到高速的不同电机转速阶段的精确测量,同时也实现了对电机测速实时性的要求。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1