CN103954316B - 一种角度编码器的标定方法及装置 - Google Patents
一种角度编码器的标定方法及装置 Download PDFInfo
- Publication number
- CN103954316B CN103954316B CN201410183048.0A CN201410183048A CN103954316B CN 103954316 B CN103954316 B CN 103954316B CN 201410183048 A CN201410183048 A CN 201410183048A CN 103954316 B CN103954316 B CN 103954316B
- Authority
- CN
- China
- Prior art keywords
- angle
- particle
- data
- error
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Transmission And Conversion Of Sensor Element Output (AREA)
Abstract
本发明公开了一种角度编码器的标定方法及装置,方法包括控制步进电机分步旋转不少于360度,通过高精度编码器和待标定的角度编码器分步采集所述步进电机旋转指定角度后的角度数据得到多个角度数据组,初始化设置误差因子并生成多个误差因子组,将误差因子组作为粒子通过粒子群算法根据前述角度数据组选择最优的误差因子组作为标定结果输出;装置包括主机、步进电机控制器和底座支架,底座支架上设有步进电机和高精度编码器,步进电机上的输出轴且分别与角度编码器、高精度编码器相连,高精度编码器、角度编码器分别与主机相连,步进电机控制器与步进电机相连。本发明具有标定精度高、标定成本低、标定所需数据量少、标定速度快的优点。
Description
技术领域
本发明涉及高精度角度测量技术,具体涉及一种角度编码器的标定方法及装置。
背景技术
汽车和工业领域上采用的角度传感器主要有基于磁力线测量技术的霍尔和磁阻角度编码器,以及光电开关原理的绝对和相对角度编码器。光电编码器的测量精度可以做到很高,但是基于光电原理的绝对角度编码器在输出绝对角度时以编码形式传输,处理较复杂,成本也较高。传统的基于霍尔或磁阻的角度编码器多通过使齿轮盘上的齿轮带有磁性,通过采集齿轮旋转带来的磁力线变化测量角度,难以实现绝对角度测量,安装需要较大空间且测量精度也不高。霍尔器件由于其非接触式测量,低功耗高精度等方面的优势,在控制系统中得到了广泛的应用。而传统的线性霍尔传感器采用平面霍尔技术,仅仅能够感应垂直于芯片表面的磁场强度。新型的基于hall盘的角度编码器通过垂直对置的两对或多对霍尔盘测量水平旋转的单极性磁体,通过不同对霍尔盘上的正弦电压来计算绝对角度。这种方法安装简单,空间要求小,成本也低。但是,受到了测量精度的影响。通过应用CMOS芯片表面沉积的集磁材料IMC(IntegratedMagneto-Concentrator),调理通过霍尔盘上的磁路是提高传感器的精度的有效途径之一。但是,由于采用正交的电信号进行测量,IMC材料也存在饱和问题,三轴霍尔传感器非常容易引入系统误差。现有技术的角度编码器的标定方法是角度编码器组装完成后,通过与高精度编码器的对比测量获取其工作误差,并根据误差对角度编码器的实际测量值进行修正,从而达到提高角度编码器检测精度的目的。但是,现有技术的角度编码器的标定方法的误差是简单测量得出来的,因此导致其工作误差的获取并不精确,直接影响到了角度编码器的测量精度。因此,为了提高角度编码器的检测精度,如何针对角度编码器的标定完成高精确度的标定,已经称为角度编码器在应用过程中一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题是提供一种标定精度高、标定成本低、标定所需数据量少、标定速度快的角度编码器的标定方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种角度编码器的标定方法,其实施步骤如下:
1)通过步进电机驱动待标定的角度编码器以指定角度逐步旋转完成不少于360度的转动,通过与步进电机输出轴相连的高精度编码器获取待标定的角度编码器在每一个指定角度的位置输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组,最终得到分别对应每一个指定角度的位置的多个角度数据组;
2)初始化设置六个误差因子的步长、最大值、最小值,所述六个误差因子包括角度编码器的x轴偏移、x轴失配、y轴偏移、y轴失配、相位偏移和磁场强度,其中,x轴偏移用于表征角度编码器输出信号电压幅值上的x轴偏差,y轴偏移用于表征角度编码器输出信号电压幅值上的y轴偏差,x轴失配用于表征角度编码器输出信号在放大过程中的x轴偏差,y轴失配用于表征角度编码器输出信号在放大过程中的y轴偏差,相位偏移用于表征角度编码器输出信号在放大过程以及信号处理中引入的相位偏移,磁场强度用于表征作用在角度编码器的传感器芯片上的磁场强度;
3)根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
进一步地,所述步骤1)的具体步骤如下:
1.1)定时采集待标定的角度编码器输出的角度数据;同时通过步进电机以指定角度旋转待标定的角度编码器,同时通过与步进电机输出轴相连的高精度编码器采集步进电机旋转的角度数据,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组;
1.2)根据高精度编码器输出的角度数据判断步进电机是否已完成旋转,如果已完成,则跳转执行步骤1.3),否则跳转执行步骤1.1);
1.3)判断得到的每一个角度数据组是否稳定,如果角度数据组中的多个角度数据存在抖动,则将角度数据组中抖动的角度数据视为废数据进行丢弃;最终跳转执行步骤1.4);
1.4)判断得到的角度数据组的数量是否已经满足要求,如果满足要求则跳转执行步骤2),否则跳转执行步骤1.1)。
进一步地,所述步骤3)的详细步骤如下:
3.1)随机取得粒子群的初始位置和速度;
3.2)根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,误差因子组中每一个误差因子的值表示为粒子的位置,误差因子组中每一个误差因子的变化值表示为粒子的速度,根据式(1)采用新的速度更新位置;
Vij(K+1)=wVij(K)+c1r1(Pij(K)-Xij(K))+c2r2(Pgj(K)-Xij(K))(1)
式(1)中,Vij(K+1)表示下一时刻粒子速度,Vij(K)表示当前时刻粒子速度,Xij(K)表示当前时刻粒子位置,K为迭代次数,w为惰性因子;c1和c2为加速常数,r1和r2为0或1的随机数,Pij(K)表示全局最优位置,即计算过的所有参数组中使得误差之差为最小值的误差因子组,Pgj(K)为局部最优位置即当前粒子群中使得误差之差为最小值的误差因子组,i为粒子标示,N为粒子群内粒子个数,j为误差因子组中分别对应六个误差因子的序号,j有1~6共六个取值,分别对应着六个误差因子;惰性因子w的表达式如式(2)表示;
式(2)中,iter为迭代次数且与式(1)中K相等,itermax表示最大迭代次数,wmax表示惰性因子的最大值,wmin表示惰性因子的最小值;
根据式(1)更新位置所采用的速度的表达式如式(3)表示;
Xij(K+1)=Xij(K)+Vij(K+1),i=1,2,…,N;j=1,2,3,4,5,6(3)
式(3)中,Xij(K+1)表示下一时刻粒子位置,Xij(K)示当前粒子位置,Vij(K+1)表示下一时刻粒子速度,i为粒子标示,N为粒子群内粒子个数;
3.3)从所述多个角度数据组中选择一个角度数据组作为待处理的当前角度数据,跳转步骤3.4)开始进行迭代运算;
3.4)根据式(4)计算当前粒子在当前角度数据下角度偏差;
式(4)中,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;Vyk当前粒子的y轴偏移,Ayk当前粒子的y轴失配,F(αn-pi/2+βk)表示对应角度为αn-pi/2+βk的磁场强度,αn表示当前角度数据组中由高精度编码器输出的角度数据,pi表示180度,βk表示当前粒子的相位偏移,Vxk表示当前粒子的x轴偏移,Axk表示当前粒子的x轴失配,F(αn)表示待标定的角度编码器的磁铁拟合函数,所述磁铁拟合函数的表达式如式(5)所示;
F=K1*magx2+K2*magx+K3(5)
式(5)中,F表示磁铁拟合函数,K1~K3表示拟合系数,magx表示磁场强度变量;
3.5)判断式(6)是否成立,如果成立则跳转执行步骤3.2),否则跳转执行步骤3.6);
abs(Pnk-α′+α)>△E(6)
式(6)中,abs(·)表示绝对值运算符,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;α′表示当前角度数据组中由待标定的角度编码器输出的角度数据,a表示当前角度数据组中由高精度编码器输出的角度数据,△E表示预设的误差限制范围;
3.6)判断所有的角度数据组是否均已处理完毕,如果均已处理完毕则跳转执行步骤3.7),否则从所述多个角度数据组中选择下一个角度数据组作为待处理的当前角度数据,并跳转执行步骤3.4);
3.7)根据式(7)计算当前粒子在所有角度数据组下的误差和;
式(7)中,Rk表示当前粒子在所有角度数据组下的误差和,Pnk表示当前粒子在当前角度数据下角度偏差;
3.8)将当前粒子在所有角度数据组下的误差和、本轮迭代运算的局部最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为本轮迭代运算的局部最小误差和;将当前粒子在所有角度数据组下的误差和、所有迭代运算的全局最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为所有迭代运算的全局最小误差和;
3.9)判断是否所有粒子均已处理完毕,如果是则跳转执行步骤3.10),否则所述粒子群中选择下一个粒子作为当前粒子,跳转执行步骤3.3);
3.10)判断迭代运算的次数是否已经达到最大迭代次数,如果尚未达到最大迭代次数则更新粒子群的速度,跳转执行步骤3.2);如果已经达到最大迭代次数,则跳转执行步骤3.11);
3.11)将当前粒子作为最优的标定结果输出。
本发明还提供一种角度编码器的标定装置,包括:
角度数据组采集单元,用于通过步进电机驱动待标定的角度编码器以指定角度逐步旋转完成不少于360度的转动,通过与步进电机输出轴相连的高精度编码器获取待标定的角度编码器在每一个指定角度的位置输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组,最终得到分别对应每一个指定角度的位置的多个角度数据组;
粒子群算法初始化单元,用于初始化设置六个误差因子的步长、最大值、最小值,所述六个误差因子包括角度编码器的x轴偏移、x轴失配、y轴偏移、y轴失配、相位偏移和磁场强度,其中,x轴偏移用于表征角度编码器输出信号电压幅值上的x轴偏差,y轴偏移用于表征角度编码器输出信号电压幅值上的y轴偏差,x轴失配用于表征角度编码器输出信号在放大过程中的x轴偏差,y轴失配用于表征角度编码器输出信号在放大过程中的y轴偏差,相位偏移用于表征角度编码器输出信号在放大过程以及信号处理中引入的相位偏移,磁场强度用于表征作用在角度编码器的传感器芯片上的磁场强度;
粒子群算法执行单元,用于根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
进一步地,所述角度数据组采集单元包括:
角度编码器转动控制及数据检测单元,用于定时采集待标定的角度编码器输出的角度数据;同时通过步进电机以指定角度旋转待标定的角度编码器,同时通过与步进电机输出轴相连的高精度编码器采集步进电机旋转的角度数据,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组;
旋转进度判断单元,用于根据高精度编码器输出的角度数据判断步进电机是否已完成旋转,如果已完成,则调用角度数据组抖动处理单元,否则继续调用角度编码器转动控制及数据检测单元;
角度数据组抖动处理单元,用于判断得到的每一个角度数据组是否稳定,如果角度数据组中的多个角度数据存在抖动,则将角度数据组中抖动的角度数据视为废数据进行丢弃;最终调用角度数据组数量检测单元;
角度数据组数量检测单元,用于判断得到的角度数据组的数量是否已经满足要求,如果满足要求则调用粒子群算法初始化单元,否则继续调用角度编码器转动控制及数据检测单元。
进一步地,所述粒子群算法执行单元包括:
粒子群初始化模块,用于随机取得粒子群的初始位置和速度;
速度更新模块,根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,误差因子组中每一个误差因子的值表示为粒子的位置,误差因子组中每一个误差因子的变化值表示为粒子的速度,根据式(1)采用新的速度更新位置;
Vij(K+1)=wVij(K)+c1r1(Pij(K)-Xij(K))+c2r2(Pgj(K)-Xij(K))(1)
式(1)中,Vij(K+1)表示下一时刻粒子速度,Vij(K)表示当前时刻粒子速度,Xij(K)表示当前时刻粒子位置,K为迭代次数,w为惰性因子;c1和c2为加速常数,r1和r2为0或1的随机数,Pij(K)表示全局最优位置,即计算过的所有参数组中使得误差之差为最小值的误差因子组,Pgj(K)为局部最优位置即当前粒子群中使得误差之差为最小值的误差因子组,i为粒子标示,N为粒子群内粒子个数,j为误差因子组中分别对应六个误差因子的序号,j有1~6共六个取值,分别对应着六个误差因子;惰性因子w的表达式如式(2)表示;
式(2)中,iter为迭代次数且与式(1)中K相等,itermax表示最大迭代次数,wmax表示惰性因子的最大值,wmin表示惰性因子的最小值;
根据式(1)更新位置所采用的速度的表达式如式(3)表示;
Xij(K+1)=Xij(K)+Vij(K+1),i=1,2,…,N;j=1,2,3,4,5,6(3)
式(3)中,Xij(K+1)表示下一时刻粒子位置,Xij(K)示当前粒子位置,Vij(K+1)表示下一时刻粒子速度,i为粒子标示,N为粒子群内粒子个数;
角度数据组选择模块,用于从所述多个角度数据组中选择一个角度数据组作为待处理的当前角度数据,调用角度数据组迭代运算模块;
角度数据组迭代运算模块,用于根据式(4)计算当前粒子在当前角度数据下角度偏差;
式(4)中,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;Vyk当前粒子的y轴偏移,Ayk当前粒子的y轴失配,F(αn-pi/2+βk)表示对应角度为αn-pi/2+βk的磁场强度,αn表示当前角度数据组中由高精度编码器输出的角度数据,pi表示180度,βk表示当前粒子的相位偏移,Vxk表示当前粒子的x轴偏移,Axk表示当前粒子的x轴失配,F(αn)表示待标定的角度编码器的磁铁拟合函数,所述磁铁拟合函数的表达式如式(5)所示;
F=K1*magx2+K2*magx+K3(5)
式(5)中,F表示磁铁拟合函数,K1~K3表示拟合系数,magx表示磁场强度变量;
偏差判断模块,用于判断式(6)是否成立,如果成立则调用速度更新模块,否则调用角度数据组处理进度判断模块;
abs(Pnk-α′+α)>△E(6)
式(6)中,abs(·)表示绝对值运算符,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;α′表示当前角度数据组中由待标定的角度编码器输出的角度数据,a表示当前角度数据组中由高精度编码器输出的角度数据,△E表示预设的误差限制范围;
角度数据组处理进度判断模块,用于判断所有的角度数据组是否均已处理完毕,如果均已处理完毕则调用误差和计算模块,否则从所述多个角度数据组中选择下一个角度数据组作为待处理的当前角度数据,并调用角度数据组迭代运算模块;
误差和计算模块,用于根据式(7)计算当前粒子在所有角度数据组下的误差和;
式(7)中,Rk表示当前粒子在所有角度数据组下的误差和,Pnk表示当前粒子在当前角度数据下角度偏差;
误差和更新模块,用于将当前粒子在所有角度数据组下的误差和、本轮迭代运算的局部最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为本轮迭代运算的局部最小误差和;将当前粒子在所有角度数据组下的误差和、所有迭代运算的全局最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为所有迭代运算的全局最小误差和;
粒子处理进度判断模块,用于判断是否所有粒子均已处理完毕,如果是则调用迭代次数判断模块,否则所述粒子群中选择下一个粒子作为当前粒子,调用角度数据组选择模块;
迭代次数判断模块,用于判断迭代运算的次数是否已经达到最大迭代次数,如果尚未达到最大迭代次数则更新粒子群的速度,调用速度更新模块;如果已经达到最大迭代次数,则调用结果输出模块;
结果输出模块,用于将当前粒子作为最优的标定结果输出。
本发明角度编码器的标定方法具有下述优点:
1、本发明综合考虑到影响角度编码器检测精度的误差因素有多个,在生产过程中多个误差因素可能相互叠加导致整体误差并没有出现问题,但是单个误差因素的影响却已经比较大。本发明通过x轴偏移、x轴失配、y轴偏移、y轴失配、相位偏移和磁场强度共六个误差因子来考虑角度编码器的误差因素,根据六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出,根据作为标定结果输出的误差因子组能够快速找到角度编码器的误差环节,从而方便修正角度编码器的生产工艺,减少以往修正角度编码器的生产工艺所使用高精度、高灵敏度的测量设备所花费的费用,具有标定精度高、标定成本低的优点。
2、本发明利用角度编码器输出的角度数据、高精度编码器输出的角度数据组成的角度数据组,将高精度编码器输出的角度数据作为对比的依据,完成标定只需要完成360度旋转得到多个角度数据组即可,具有标定所需数据量少的优点。
3、本发明根据六个误差因子的步长、最大值、最小值生成多个误差因子组;将每一个误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出,充分利用了粒子群算法的实现容易、精度高、收敛快的优点,具有标定速度快的优点。
本发明角度编码器的标定装置具有下述优点:本发明角度编码器的标定装置为本发明角度编码器的标定方法完全对应的装置,因此也具有与本发明角度编码器的标定方法相同的技术效果,故在此不再赘述。
附图说明
图1为本发明实施例方法的实施流程示意图。
图2为本发明实施例方法中粒子群算法的详细实施流程示意图。
图3为角度编码器利用本发明实施例的标定结果修正检测值的原理示意图。
图4为本发明实施例装置的结构示意图。
图5为本发明实施例装置与待标定的角度编码器的连接结构示意图。
图6为待标定的角度编码器的结构示意图。
图例说明:1、主机;11、CAN总线;12、CAN适配器;2、步进电机控制器;3、底座支架;31、步进电机;311、第一连杆;312、第二连杆;32、高精度编码器;4、角度编码器;41、永磁体;42、CMOS芯片;43、集磁材料沉积板;431、霍尔传感器;44、切换开关;45、放大器;46、滤波器;47、解调器;48、模数转换器;49、DSP芯片;410、微处理器。
具体实施方式
如图1所示,本实施例角度编码器的标定方法的实施步骤如下:
1)通过步进电机驱动待标定的角度编码器以指定角度逐步旋转完成不少于360度的转动,通过与步进电机输出轴相连的高精度编码器获取待标定的角度编码器在每一个指定角度的位置输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组,最终得到分别对应每一个指定角度的位置的多个角度数据组。
本实施例中,步骤1)的具体步骤如下:
1.1)定时采集待标定的角度编码器输出的角度数据;同时通过步进电机以指定角度旋转待标定的角度编码器,同时通过与步进电机输出轴相连的高精度编码器采集步进电机旋转的角度数据,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组。
本实施例中,具体是指以10ms的频率采集待标定的角度编码器输出的角度数据,通过步进电机旋转待标定的角度编码器的指定角度具体取值为15度。
1.2)根据高精度编码器输出的角度数据判断步进电机是否已完成旋转,如果已完成,则跳转执行步骤1.3),否则跳转执行步骤1.1)。
本实施例中,以360度作为判断步进电机是否已完成旋转的依据,如果高精度编码器输出的角度数据大于或者等于360度,则判定步进电机已完成旋转;此外,也可以根据需要设置更大的角度值来作为判断步进电机是否已完成旋转的依据,这样通常会增加标定的准确性,但是会导致标定数据较多、时间较长,影响标定的效率。
1.3)判断得到的每一个角度数据组是否稳定,如果角度数据组中的多个角度数据存在抖动,则将角度数据组中抖动的角度数据视为废数据进行丢弃;最终跳转执行步骤1.4)。
由于本实施例中指定角度具体取值为15度,通过步进电机在每一个指定角度的位置的停顿,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据。如果角度数据组中的某个角度数据与其它角度数据的差值超过指定范围,则判定角度数据组中的多个角度数据存在抖动,与其它角度数据的差值超过指定范围的角度数据即为该角度数据组中抖动的角度数据,因此需要将抖动的角度数据视为废数据进行丢弃,从而提高标定的精度。
1.4)判断得到的角度数据组的数量是否已经满足要求,如果满足要求则跳转执行步骤2),否则跳转执行步骤1.1)。本实施例中,由于指定角度具体取值为15度,因此360度旋转共会得到24个角度数据组,如果角度数据组的数量等于24,则判定为满足要求,否则判断为不满足需求;此外,也可以根须需要指定其它角度值作为步骤1.1)中的指定角度,则用于判断是否满足要求的角度数据组的数量也会发生适应性的变化。
2)初始化设置六个误差因子的步长、最大值、最小值,六个误差因子包括角度编码器的x轴偏移Vx、x轴失配Ax、y轴偏移Vy、y轴失配Ay、相位偏移Px和磁场强度Magx,其中,x轴偏移Vx用于表征角度编码器输出信号电压幅值上的x轴偏差,y轴偏移Vy用于表征角度编码器输出信号电压幅值上的y轴偏差,x轴失配Ax用于表征角度编码器输出信号在放大过程中的x轴偏差,y轴失配Ay用于表征角度编码器输出信号在放大过程中的y轴偏差,相位偏移Px用于表征角度编码器输出信号在放大过程以及信号处理中引入的相位偏移,磁场强度Magx用于表征作用在角度编码器的传感器芯片上的磁场强度,磁场强度Magx与磁铁类型、磁铁与传感器的位置相关联。
3)根据六个误差因子的步长、最大值、最小值生成多个误差因子组;将每一个误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
本实施例中,初始化设置六个误差因子的步长、最大值、最小值如表1所示。根据六个误差因子的步长、最大值、最小值生成多个误差因子组如表2所示。
表1:误差因子初始化信息表。
误差因子 | 变量名 | 最小值 | 最大值 | 步长 |
x轴偏移 | Vx | -0.01 | 0.01 | 0.000001 |
x轴失配 | Ax | 0.99 | 1.01 | 0.000001 |
y轴偏移 | Vy | -0.01 | 0.01 | 0.000001 |
y轴失配 | Ay | 0.99 | 1.01 | 0.000001 |
相位偏移 | Px | -0.9/pi | 0.9/pi | 0.00009/pi |
磁场强度 | Magx | 50 | 150 | 1 |
表2:标定得到的几组误差因子组数据表示例。
误差因子 | 误差因子组#1 | 误差因子组#2 | 误差因子组#3 | 误差因子组#4 |
x轴偏移 | 0.008943 | 0.005878 | 0.007500 | 0.007711 |
x轴失配 | 1.008607 | 1.000057 | 0.993573 | 0.994878 |
y轴偏移 | 0.000491 | 0.007176 | -0.006990 | -0.003980 |
y轴失配 | 0.994536 | 0.995089 | 1.003337 | 0.992822 |
相位偏移 | 0.000368 | 0.001508 | 0.003005 | 0.002122 |
磁场强度 | 113 | 135 | 71 | 110 |
如图2所示,本实施例中步骤3)的详细步骤如下:
3.1)随机取得粒子群的初始位置和速度;本实施例中,粒子速度为步长的倍数,粒子的位置为最大最小值之间的取值。
3.2)根据六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个误差因子组作为粒子群算法的粒子群中的一个粒子,误差因子组中每一个误差因子的值表示为粒子的位置,误差因子组中每一个误差因子的变化值表示为粒子的速度,根据式(1)采用新的速度更新位置;
Vij(K+1)=wVij(K)+c1r1(Pij(K)-Xij(K))+c2r2(Pgj(K)-Xij(K))(1)
式(1)中,Vij(K+1)表示下一时刻粒子速度,Vij(K)表示当前时刻粒子速度,Xij(K)表示当前时刻粒子位置,K为迭代次数,w为惰性因子;c1和c2为加速常数,r1和r2为0或1的随机数,Pij(K)表示全局最优位置,即计算过的所有参数组中使得误差之差为最小值的误差因子组,Pgj(K)为局部最优位置即当前粒子群中使得误差之差为最小值的误差因子组,i为粒子标示,N为粒子群内粒子个数,j为误差因子组中分别对应六个误差因子的序号,j有1~6共六个取值,分别对应着六个误差因子;惰性因子w的表达式如式(2)表示;
式(2)中,iter为迭代次数且与式(1)中K相等,itermax表示最大迭代次数,wmax表示惰性因子的最大值,wmin表示惰性因子的最小值;
根据式(1)更新位置所采用的速度的表达式如式(3)表示;
Xij(K+1)=Xij(K)+Vij(K+1),i=1,2,…,N;j=1,2,3,4,5,6(3)
式(3)中,Xij(K+1)表示下一时刻粒子位置,Xij(K)示当前粒子位置,Vij(K+1)表示下一时刻粒子速度,i为粒子标示,N为粒子群内粒子个数;
需要说明的是,针对每一个误差因子,都有一个最大最小值和步长,它们的更新是独立的,且采用如公式(1)中的j来标示对每一个误差因子的更新。
3.3)从多个角度数据组中选择一个角度数据组作为待处理的当前角度数据,跳转步骤3.4)开始进行迭代运算。
3.4)根据式(4)计算当前粒子在当前角度数据下角度偏差;
式(4)中,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;Vyk当前粒子的y轴偏移,Ayk当前粒子的y轴失配,F(αn-pi/2+βk)表示对应角度为αn-pi/2+βk的磁场强度,αn表示当前角度数据组中由高精度编码器输出的角度数据,pi表示180度,βk表示当前粒子的相位偏移,Vxk表示当前粒子的x轴偏移,Axk表示当前粒子的x轴失配,F(αn)表示待标定的角度编码器的磁铁拟合函数,磁铁拟合函数的表达式如式(5)所示;
F=K1*magx2+K2*magx+K3(5)
式(5)中,F表示磁铁拟合函数,K1~K3表示拟合系数,magx表示磁场强度变量;本实施例中,K1=0.320;K2=13.458;K3=106.24。
3.5)判断式(6)是否成立,如果成立则跳转执行步骤3.2),否则跳转执行步骤3.6);
abs(Pnk-α′+α)>△E(6)
式(6)中,abs(·)表示绝对值运算符,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;α′表示当前角度数据组中由待标定的角度编码器输出的角度数据,a表示当前角度数据组中由高精度编码器输出的角度数据,△E表示预设的误差限制范围。
3.6)判断所有的角度数据组是否均已处理完毕,如果均已处理完毕则跳转执行步骤3.7),否则从多个角度数据组中选择下一个角度数据组作为待处理的当前角度数据,并跳转执行步骤3.4);本实施例中,当前角度数据组在所有角度数据组中的序号n初始化取值为1,每处理完一个当前角度数据,则将n的值加1,然后对n值进行判断。由于角度数据组的数量等于24,因此如果n值大于25,则可判定所有的角度数据组均已处理完毕。
3.7)根据式(7)计算当前粒子在所有角度数据组下的误差和;
式(7)中,Rk表示当前粒子在所有角度数据组下的误差和,Pnk表示当前粒子在当前角度数据下角度偏差。
3.8)将当前粒子在所有角度数据组下的误差和、本轮迭代运算的局部最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为本轮迭代运算的局部最小误差和;将当前粒子在所有角度数据组下的误差和、所有迭代运算的全局最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为所有迭代运算的全局最小误差和。粒子群是运动并不断更新的,对于粒子群内部来说有一个当前的最优解,但是,对于粒子群已经移动更新过的历史位置也有一个最优解,就是要找全局最优解(即全局最小误差和对于的参数组取值)。
3.9)判断是否所有粒子均已处理完毕,如果是则跳转执行步骤3.10),否则粒子群中选择下一个粒子作为当前粒子,跳转执行步骤3.3);
3.10)判断迭代运算的次数是否已经达到最大迭代次数,如果尚未达到最大迭代次数则更新粒子群的速度,跳转执行步骤3.2);如果已经达到最大迭代次数,则跳转执行步骤3.11)。一般来说退出迭代有两种方式,一种是限定迭代次数,一种是限定收敛值,本实施例中采用的最大迭代次数方法是由经验得到数百次的整体迭代就能够达到效果,用限定次数方法有助于控制运算时间。
3.11)将当前粒子作为最优的标定结果输出。本实施例中,表2中的误差因子组#1即为最终得到的最优的标定结果。
如图3所示,图中的曲线即为本实施例通过粒子群算法寻找出最优的一组误差因子得到的方程曲线,其对应关系是:取值为Vx、Ax、Vy、Ay、Px、Magx对应的取值,为得到的最优解对应的参数值,通过将这几个参数值放到actan计算公式中,然后让角度在0到360间取值,可以得到连续的曲线。图中幅度值较大的星形离散点取值,即补偿前的误差值,幅度值小的点形离散点即补偿后的误差值。当角度编码器在工作状态下,角度编码器的DSP在解算得到原始角度数据(如图中星形符号所示)后,则进一步根据本实施例通过粒子群算法寻找出最优的一组误差因子进行修正,修正后即得到角度数据(如图中圆形符号所示)即为最终输出的角度数据。从该图中可以看出,通过根据本实施例通过粒子群算法寻找出最优的一组误差因子进行修正,使得最终输出的角度数据不会受角度编码器工作状态的影响,在任何工作状态下,其误差均基本被修正为0度左右。
如图4和图5所示,本实施例角度编码器的标定装置包括主机1、步进电机控制器2和底座支架3,底座支架3上设有步进电机31和高精度编码器32,步进电机31的输出轴一端通过第一连杆311与待标定的角度编码器4的永磁体41相连,步进电机31的输出轴另一端通过第二连杆312与高精度编码器32的转轴相连,高精度编码器32、角度编码器4的输出端分别通过CAN总线11与主机1相连,主机1的输出端通过CAN总线11与步进电机控制器2相连,步进电机控制器2的输出端与步进电机31相连。
本实施例中,主机1采用计算机实现,用于通过CAN总线11向步进电机控制器2发送控制命令以及接收来自高精度编码器32、角度编码器4的输出端输出的角度数据;步进电机控制器2用于接收来自CAN总线11的控制命令,并根据控制命令控制步进电机31的转动,本实施例中每360度旋转分为24次控制命令发送,每一次的控制命令为控制步进电机31转动15度,在标定工作中,高精度编码器32、角度编码器4同时输出角度数据并通过CAN总线11发送给主机1。本实施例中,主机1上设有基于USB接口的CAN适配器12,主机1通过CAN适配器12与CAN总线11相连。主机1通过USB接口与CAN适配器12相连,从而利用通用的USB接口即可实现与CAN总线11的连接适配,从而使得本实施例对不同计算机的适应性更好。本实施例角度编码器的标定装置的工作步骤如下:1A)在底座支架3上固定待标定的角度编码器4,主机1通过CAN总线11向步进电机控制器2发送控制命令,通过步进电机31控制待标定的角度编码器4旋转15度,采集待标定的角度编码器4输出的角度数据,同时通过与步进电机31的输出轴相连的高精度编码器32同步采集步进电机31旋转的角度数据,主机1通过CAN总线11得到由角度编码器4输出的角度数据α′、高精度编码器32输出的角度数据α组成的角度数据组。2A)主机1根据高精度编码器32输出的角度数据判断步进电机31是否已完成360度旋转,如果已完成,则跳转执行步骤3A),否则跳转执行步骤1A)。3A)主机1判断得到的多个角度数据组是否稳定,如果多个角度数据组存在抖动,则将多个角度数据组视为废数据进行丢弃;最终跳转执行步骤4A)。4A)主机1判断得到的角度数据组的数量是否已经满足要求,如果满足要求则跳转执行步骤5A),否则跳转执行步骤1A)。5A)主机1初始化设置六个误差因子的步长、最大值、最小值,六个误差因子包括角度编码器4的x轴偏移Vx、x轴失配Ax、y轴偏移Vy、y轴失配Ay、相位偏移Px和磁场强度Magx,根据六个误差因子的步长、最大值、最小值生成多个误差因子组;将每一个误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
如图5和图6所示,角度编码器4的永磁体41为条状,用于产生围绕于永磁体41的磁力线(如图5中的虚线所示)。除永磁体41和CMOS芯片42以外,待标定的角度编码器4还包括集磁材料沉积板43、霍尔传感器431、切换开关44、放大器45、滤波器46、解调器47、模数转换器48、DSP芯片49和微处理器410。集磁材料沉积板43在CMOS芯片42的表面上沉积形成,集磁材料沉积板43用于将不平行不均匀的磁力线调理均匀,并平行于CMOS芯片42的平面。集磁材料沉积板43上设有两对相互垂直布置的霍尔传感器431,每一对霍尔传感器431由相对集磁材料沉积板43的中心对称布置的两个霍尔传感器431组成,用于检测永磁体41产生磁力线所行程的电压信息。在工作状态下,步进电机31通过第一连杆311驱动永磁体41以15度为单位旋转,在两对相互垂直布置的霍尔传感器431上分别产生两路相差90度的正弦信号x轴偏移Vx和y轴偏移Vy。由于图中采用先用切换开关44放大两对相互垂直布置的霍尔传感器431输出的两个电压,然后,用解调器47进行解调分离出两个放大后电压的方法,主要是考虑到放大倍数和相位偏移的一致性。但是,放大倍数和相位偏移的一致性的问题会依然存在在信号的处理过程当中。x,y轴放大倍数的不一样导致了轴的失配,同时相位延时的不一样也导致了相位上的偏移。磁场会随着测量位置与磁铁距离的增加而减小,这个会反映到检测的电压幅值上。切换开关44分别对两路相差90度的正弦信号进行开关调制,然后依次通过放大器45进行放大、滤波器46进行滤波,再通过解调器47解调得到两路模拟信号,在模数转换器48将其转换为数字信号后后输入DSP芯片49,DSP芯片49根据本实施例角度编码器的标定方法得到的标定结果进行结算,从而得到修正后的角度数据输出。本实施例在步进电机31的输出轴一端通过第一连杆311与待标定的角度编码器4的永磁体41相连,步进电机31的输出轴另一端通过第二连杆312与高精度编码器32的转轴相连,通过步进电机31分别实现了高精度编码器32、待标定的角度编码器4的同轴连接,同时主机1通过CAN总线11分别与高精度编码器32、角度编码器4的输出端以及步进电机控制器2相连,主机1通过步进电机控制器2控制步进电机31运动,从而能够实现高精度编码器32、待标定的角度编码器4的角度数据的同步采集,既可以用于实现本实施例针对前述结构的角度编码器4的标定方法,而且由于提供了作为标定参照的高精度编码器32,显然本实施例同样也可以用于其它类型的角度编码器4的标定,标定过程全自动化运行、操作灵活方便,具有标定成本低、标定所需数据量少、标定速度快、通用性好的优点。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种角度编码器的标定方法,其特征在于实施步骤如下:
1)通过步进电机驱动待标定的角度编码器以指定角度逐步旋转完成不少于360度的转动,通过与步进电机输出轴相连的高精度编码器获取待标定的角度编码器在每一个指定角度的位置输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组,最终得到分别对应每一个指定角度的位置的多个角度数据组;
2)初始化设置六个误差因子的步长、最大值、最小值,所述六个误差因子包括角度编码器的x轴偏移、x轴失配、y轴偏移、y轴失配、相位偏移和磁场强度,其中,x轴偏移用于表征角度编码器输出信号电压幅值上的x轴偏差,y轴偏移用于表征角度编码器输出信号电压幅值上的y轴偏差,x轴失配用于表征角度编码器输出信号在放大过程中的x轴偏差,y轴失配用于表征角度编码器输出信号在放大过程中的y轴偏差,相位偏移用于表征角度编码器输出信号在放大过程以及信号处理中引入的相位偏移,磁场强度用于表征作用在角度编码器的传感器芯片上的磁场强度;
3)根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
2.根据权利要求1所述的角度编码器的标定方法,其特征在于,所述步骤1)的具体步骤如下:
1.1)定时采集待标定的角度编码器输出的角度数据;同时通过步进电机以指定角度旋转待标定的角度编码器,同时通过与步进电机输出轴相连的高精度编码器采集步进电机旋转的角度数据,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组;
1.2)根据高精度编码器输出的角度数据判断步进电机是否已完成旋转,如果已完成,则跳转执行步骤1.3),否则跳转执行步骤1.1);
1.3)判断得到的每一个角度数据组是否稳定,如果角度数据组中的多个角度数据存在抖动,则将角度数据组中抖动的角度数据视为废数据进行丢弃;最终跳转执行步骤1.4);
1.4)判断得到的角度数据组的数量是否已经满足要求,如果满足要求则跳转执行步骤2),否则跳转执行步骤1.1)。
3.根据权利要求1或2所述的角度编码器的标定方法,其特征在于,所述步骤3)的详细步骤如下:
3.1)随机取得粒子群的初始位置和速度;
3.2)根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,误差因子组中每一个误差因子的值表示为粒子的位置,误差因子组中每一个误差因子的变化值表示为粒子的速度,根据式(1)采用新的速度更新位置;
Vij(K+1)=wVij(K)+c1r1(Pij(K)-Xij(K))+c2r2(Pgj(K)-Xij(K))(1)
式(1)中,Vij(K+1)表示下一时刻粒子速度,Vij(K)表示当前时刻粒子速度,Xij(K)表示当前时刻粒子位置,K为迭代次数,w为惰性因子;c1和c2为加速常数,r1和r2为0或1的随机数,Pij(K)表示全局最优位置,即计算过的所有参数组中使得误差之差为最小值的误差因子组,Pgj(K)为局部最优位置即当前粒子群中使得误差之差为最小值的误差因子组,i为粒子标示,N为粒子群内粒子个数,j为误差因子组中分别对应六个误差因子的序号,j有1~6共六个取值,分别对应着六个误差因子;惰性因子w的表达式如式(2)表示;
式(2)中,iter为迭代次数且与式(1)中K相等,itermax表示最大迭代次数,wmax表示惰性因子的最大值,wmin表示惰性因子的最小值;
根据式(1)更新位置所采用的速度的表达式如式(3)表示;
Xij(K+1)=Xij(K)+Vij(K+1),i=1,2,…,N;j=1,2,3,4,5,6(3)
式(3)中,Xij(K+1)表示下一时刻粒子位置,Xij(K)示当前粒子位置,Vij(K+1)表示下一时刻粒子速度,i为粒子标示,N为粒子群内粒子个数;
3.3)从所述多个角度数据组中选择一个角度数据组作为待处理的当前角度数据,跳转步骤3.4)开始进行迭代运算;
3.4)根据式(4)计算当前粒子在当前角度数据下角度偏差;
式(4)中,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;Vyk当前粒子的y轴偏移,Ayk当前粒子的y轴失配,F(αn-pi/2+βk)表示对应角度为αn-pi/2+βk的磁场强度,αn表示当前角度数据组中由高精度编码器输出的角度数据,pi表示180度,βk表示当前粒子的相位偏移,Vxk表示当前粒子的x轴偏移,Axk表示当前粒子的x轴失配,F(αn)表示待标定的角度编码器的磁铁拟合函数,所述磁铁拟合函数的表达式如式(5)所示;
F=K1*magx2+K2*magx+K3(5)
式(5)中,F表示磁铁拟合函数,K1~K3表示拟合系数,magx表示磁场强度变量;
3.5)判断式(6)是否成立,如果成立则跳转执行步骤3.2),否则跳转执行步骤3.6);
abs(Pnk-α′+α)>△E(6)
式(6)中,abs(·)表示绝对值运算符,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;α′表示当前角度数据组中由待标定的角度编码器输出的角度数据,a表示当前角度数据组中由高精度编码器输出的角度数据,△E表示预设的误差限制范围;
3.6)判断所有的角度数据组是否均已处理完毕,如果均已处理完毕则跳转执行步骤3.7),否则从所述多个角度数据组中选择下一个角度数据组作为待处理的当前角度数据,并跳转执行步骤3.4);
3.7)根据式(7)计算当前粒子在所有角度数据组下的误差和;
式(7)中,Rk表示当前粒子在所有角度数据组下的误差和,Pnk表示当前粒子在当前角度数据下角度偏差;
3.8)将当前粒子在所有角度数据组下的误差和、本轮迭代运算的局部最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为本轮迭代运算的局部最小误差和;将当前粒子在所有角度数据组下的误差和、所有迭代运算的全局最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为所有迭代运算的全局最小误差和;
3.9)判断是否所有粒子均已处理完毕,如果是则跳转执行步骤3.10),否则所述粒子群中选择下一个粒子作为当前粒子,跳转执行步骤3.3);
3.10)判断迭代运算的次数是否已经达到最大迭代次数,如果尚未达到最大迭代次数则更新粒子群的速度,跳转执行步骤3.2);如果已经达到最大迭代次数,则跳转执行步骤3.11);
3.11)将当前粒子作为最优的标定结果输出。
4.一种角度编码器的标定装置,其特征在于包括:
角度数据组采集单元,用于通过步进电机驱动待标定的角度编码器以指定角度逐步旋转完成不少于360度的转动,通过与步进电机输出轴相连的高精度编码器获取待标定的角度编码器在每一个指定角度的位置输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组,最终得到分别对应每一个指定角度的位置的多个角度数据组;
粒子群算法初始化单元,用于初始化设置六个误差因子的步长、最大值、最小值,所述六个误差因子包括角度编码器的x轴偏移、x轴失配、y轴偏移、y轴失配、相位偏移和磁场强度,其中,x轴偏移用于表征角度编码器输出信号电压幅值上的x轴偏差,y轴偏移用于表征角度编码器输出信号电压幅值上的y轴偏差,x轴失配用于表征角度编码器输出信号在放大过程中的x轴偏差,y轴失配用于表征角度编码器输出信号在放大过程中的y轴偏差,相位偏移用于表征角度编码器输出信号在放大过程以及信号处理中引入的相位偏移,磁场强度用于表征作用在角度编码器的传感器芯片上的磁场强度;
粒子群算法执行单元,用于根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,通过粒子群算法根据每一个角度数据组对所有误差因子组进行迭代运算选择最优的误差因子组作为标定结果输出。
5.根据权利要求4所述的角度编码器的标定装置,其特征在于,所述角度数据组采集单元包括:
角度编码器转动控制及数据检测单元,用于定时采集待标定的角度编码器输出的角度数据;同时通过步进电机以指定角度旋转待标定的角度编码器,同时通过与步进电机输出轴相连的高精度编码器采集步进电机旋转的角度数据,在每一个指定角度的位置采集得到待标定的角度编码器输出的多个角度数据,将多个角度数据与对应的指定角度的位置关联作为一个角度数据组;
旋转进度判断单元,用于根据高精度编码器输出的角度数据判断步进电机是否已完成旋转,如果已完成,则调用角度数据组抖动处理单元,否则继续调用角度编码器转动控制及数据检测单元;
角度数据组抖动处理单元,用于判断得到的每一个角度数据组是否稳定,如果角度数据组中的多个角度数据存在抖动,则将角度数据组中抖动的角度数据视为废数据进行丢弃;最终调用角度数据组数量检测单元;
角度数据组数量检测单元,用于判断得到的角度数据组的数量是否已经满足要求,如果满足要求则调用粒子群算法初始化单元,否则继续调用角度编码器转动控制及数据检测单元。
6.根据权利要求4或5所述的角度编码器的标定装置,其特征在于,所述粒子群算法执行单元包括:
粒子群初始化模块,用于随机取得粒子群的初始位置和速度;
速度更新模块,根据所述六个误差因子的步长、最大值、最小值生成多个误差因子组,将每一个所述误差因子组作为粒子群算法的粒子群中的一个粒子,误差因子组中每一个误差因子的值表示为粒子的位置,误差因子组中每一个误差因子的变化值表示为粒子的速度,根据式(1)采用新的速度更新位置;
Vij(K+1)=wVij(K)+c1r1(Pij(K)-Xij(K))+c2r2(Pgj(K)-Xwj(K))(1)
式(1)中,Vij(K+1)表示下一时刻粒子速度,Vij(K)表示当前时刻粒子速度,Xij(K)表示当前时刻粒子位置,K为迭代次数,w为惰性因子;c1和c2为加速常数,r1和r2为0或1的随机数,Pij(K)表示全局最优位置,即计算过的所有参数组中使得误差之差为最小值的误差因子组,Pgj(K)为局部最优位置即当前粒子群中使得误差之差为最小值的误差因子组,i为粒子标示,N为粒子群内粒子个数,j为误差因子组中分别对应六个误差因子的序号,j有1~6共六个取值,分别对应着六个误差因子;惰性因子w的表达式如式(2)表示;
式(2)中,iter为迭代次数且与式(1)中K相等,itermax表示最大迭代次数,wmax表示惰性因子的最大值,wmin表示惰性因子的最小值;
根据式(1)更新位置所采用的速度的表达式如式(3)表示;
Xij(K+1)=Xij(K)+Vij(K+1),i=1,2,…,N;j=1,2,3,4,5,6(3)
式(3)中,Xij(K+1)表示下一时刻粒子位置,Xij(K)示当前粒子位置,Vij(K+1)表示下一时刻粒子速度,i为粒子标示,N为粒子群内粒子个数;
角度数据组选择模块,用于从所述多个角度数据组中选择一个角度数据组作为待处理的当前角度数据,调用角度数据组迭代运算模块;
角度数据组迭代运算模块,用于根据式(4)计算当前粒子在当前角度数据下角度偏差;
式(4)中,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;Vyk当前粒子的y轴偏移,Ayk当前粒子的y轴失配,F(αn-pi/2+βk)表示对应角度为αn-pi/2+βk的磁场强度,αn表示当前角度数据组中由高精度编码器输出的角度数据,pi表示180度,βk表示当前粒子的相位偏移,Vxk表示当前粒子的x轴偏移,Axk表示当前粒子的x轴失配,F(αn)表示待标定的角度编码器的磁铁拟合函数,所述磁铁拟合函数的表达式如式(5)所示;
F=K1*magx2+K2*magx+K3(5)
式(5)中,F表示磁铁拟合函数,K1~K3表示拟合系数,magx表示磁场强度变量;
偏差判断模块,用于判断式(6)是否成立,如果成立则调用速度更新模块,否则调用角度数据组处理进度判断模块;
abs(Pnk-α′+α)>△E(6)
式(6)中,abs(·)表示绝对值运算符,n表示当前角度数据组在所有角度数据组中的序号,k表示当前粒子在粒子群中的序号,Pnk表示当前粒子在当前角度数据下角度偏差;α′表示当前角度数据组中由待标定的角度编码器输出的角度数据,a表示当前角度数据组中由高精度编码器输出的角度数据,△E表示预设的误差限制范围;
角度数据组处理进度判断模块,用于判断所有的角度数据组是否均已处理完毕,如果均已处理完毕则调用误差和计算模块,否则从所述多个角度数据组中选择下一个角度数据组作为待处理的当前角度数据,并调用角度数据组迭代运算模块;
误差和计算模块,用于根据式(7)计算当前粒子在所有角度数据组下的误差和;
式(7)中,Rk表示当前粒子在所有角度数据组下的误差和,Pnk表示当前粒子在当前角度数据下角度偏差;
误差和更新模块,用于将当前粒子在所有角度数据组下的误差和、本轮迭代运算的局部最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为本轮迭代运算的局部最小误差和;将当前粒子在所有角度数据组下的误差和、所有迭代运算的全局最小误差和进行比较,如果当前粒子的误差和更小,则将当前粒子在所有角度数据组下的误差和作为所有迭代运算的全局最小误差和;
粒子处理进度判断模块,用于判断是否所有粒子均已处理完毕,如果是则调用迭代次数判断模块,否则所述粒子群中选择下一个粒子作为当前粒子,调用角度数据组选择模块;
迭代次数判断模块,用于判断迭代运算的次数是否已经达到最大迭代次数,如果尚未达到最大迭代次数则更新粒子群的速度,调用速度更新模块;如果已经达到最大迭代次数,则调用结果输出模块;
结果输出模块,用于将当前粒子作为最优的标定结果输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410183048.0A CN103954316B (zh) | 2014-04-30 | 2014-04-30 | 一种角度编码器的标定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410183048.0A CN103954316B (zh) | 2014-04-30 | 2014-04-30 | 一种角度编码器的标定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103954316A CN103954316A (zh) | 2014-07-30 |
CN103954316B true CN103954316B (zh) | 2016-04-13 |
Family
ID=51331625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410183048.0A Active CN103954316B (zh) | 2014-04-30 | 2014-04-30 | 一种角度编码器的标定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103954316B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104197978B (zh) * | 2014-09-25 | 2016-08-31 | 南京埃斯顿自动化股份有限公司 | 一种角度旋转控制设备的数据检测装置 |
CN105897091A (zh) * | 2016-05-25 | 2016-08-24 | 北京先驱威锋技术开发公司 | 馈液器降噪装置及其使用方法 |
CN106774451B (zh) * | 2016-12-31 | 2019-11-15 | 深圳市优必选科技有限公司 | 基于磁编码的多圈角度控制方法及装置 |
CN106679710B (zh) * | 2017-02-08 | 2020-03-10 | 亿航智能设备(广州)有限公司 | 一种磁编码器校准方法及系统 |
CN108474671B (zh) * | 2017-11-14 | 2021-06-18 | 深圳市大疆创新科技有限公司 | 机械角度检测方法、云台及机器可读存储介质 |
CN107843280B (zh) * | 2017-11-28 | 2024-03-22 | 哈尔滨理工大学 | 一种旋转式球形磁电编码器的标定装置 |
CN109560743B (zh) * | 2018-12-26 | 2020-10-02 | 歌尔股份有限公司 | 电机补偿方法、装置、驱动器及系统 |
CN109855668B (zh) * | 2019-03-11 | 2021-05-11 | 中电海康无锡科技有限公司 | 磁角度传感器的自校准方法、装置、磁角度传感器及系统 |
CN110940371B (zh) * | 2019-12-13 | 2020-08-21 | 浙江禾川科技股份有限公司 | 一种旋转磁电编码器的校准方法、装置及设备 |
CN111336952B (zh) * | 2020-02-26 | 2022-04-12 | 北京空间机电研究所 | 一种感应同步器角度修正的系统、方法及装置 |
CN112304210B (zh) * | 2020-11-10 | 2023-03-21 | 陕西宏星电器有限责任公司 | 一种霍尔角度传感器角度校准方法 |
CN113670201B (zh) * | 2021-08-24 | 2024-10-01 | 杭州微影软件有限公司 | 标定数据生成方法、装置及标定数据生成系统 |
CN115876229B (zh) * | 2022-10-14 | 2023-06-20 | 哈尔滨理工大学 | 基于粒子群的新型编码器角度过零跳点抑制方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102506914A (zh) * | 2011-11-04 | 2012-06-20 | 北京理工大学 | 一种光电编码器的误差补偿方法 |
CN102680016A (zh) * | 2012-05-14 | 2012-09-19 | 北京理工大学 | 一种光电编码器的误差补偿方法 |
CN102798409A (zh) * | 2011-05-23 | 2012-11-28 | 长春翔翼科技有限公司 | 绝对式轴角编码器的标定装置 |
TW201314181A (zh) * | 2011-09-16 | 2013-04-01 | Univ Minghsin Sci & Tech | 校準裝置及其校準方法 |
CN103162614A (zh) * | 2013-03-28 | 2013-06-19 | 重庆理工大学 | 一种角位移传感器在线自标定方法 |
CN103208956A (zh) * | 2013-04-28 | 2013-07-17 | 西安科技大学 | 电机霍尔位置传感器安装误差自动检测与补偿装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9423281B2 (en) * | 2012-02-07 | 2016-08-23 | Mitsubishi Electric Research Laboratories, Inc. | Self-calibrating single track absolute rotary encoder |
-
2014
- 2014-04-30 CN CN201410183048.0A patent/CN103954316B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102798409A (zh) * | 2011-05-23 | 2012-11-28 | 长春翔翼科技有限公司 | 绝对式轴角编码器的标定装置 |
TW201314181A (zh) * | 2011-09-16 | 2013-04-01 | Univ Minghsin Sci & Tech | 校準裝置及其校準方法 |
CN102506914A (zh) * | 2011-11-04 | 2012-06-20 | 北京理工大学 | 一种光电编码器的误差补偿方法 |
CN102680016A (zh) * | 2012-05-14 | 2012-09-19 | 北京理工大学 | 一种光电编码器的误差补偿方法 |
CN103162614A (zh) * | 2013-03-28 | 2013-06-19 | 重庆理工大学 | 一种角位移传感器在线自标定方法 |
CN103208956A (zh) * | 2013-04-28 | 2013-07-17 | 西安科技大学 | 电机霍尔位置传感器安装误差自动检测与补偿装置及方法 |
Non-Patent Citations (1)
Title |
---|
圆光栅角度传感器的误差补偿及参数辨识;高贯斌;《光学·精密工程》;20100831;第18卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103954316A (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103954316B (zh) | 一种角度编码器的标定方法及装置 | |
CN105452815A (zh) | 用于确定移动装置的位置的位置传感器装置 | |
EP3529880B1 (en) | Correcting offset and gain drift related angle errors with motor position detectors | |
JPH07174586A (ja) | 増分位置検出器の可動周期目盛盤の絶対位置測定方法及びその装置 | |
KR20130114193A (ko) | 다회전 앱솔루트 회전각을 검출하는 장치 및 그 회전각을 검출하는 방법 | |
CN102510284A (zh) | 一种交流电压信号和交流电流信号的校准方法及其装置 | |
CN111351512B (zh) | 一种增量式光电编码器信号处理装置及处理方法 | |
CN108429409B (zh) | 一种多路线性霍尔转子位置检测以及补偿矫正系统及方法 | |
CN109502055A (zh) | 控制力矩陀螺外框架的驱动控制系统及方法 | |
CN103604447A (zh) | 一种高分辨率增量型总线式光电编码器的实现方法 | |
CN112636660A (zh) | 伺服驱动控制系统及绝对位置信号处理方法、装置、设备 | |
US20140204046A1 (en) | Capacitive touch sensing device and detection method thereof | |
CN102175889B (zh) | 一种伺服转台角加速度自适应测量方法 | |
CN110133316B (zh) | 一种光电编码器精密测速系统及方法 | |
CN101876558A (zh) | 位置检测装置及其信号处理装置和方法 | |
CN109506681A (zh) | 基于硅霍尔效应的磁编码器芯片结构 | |
CN101886932A (zh) | 位置检测装置及其信号处理装置与方法 | |
CN209857935U (zh) | 用于检测光电编码器精度的检测装置 | |
CN1609558A (zh) | 传感器信号处理器 | |
CN105703773A (zh) | 一种旋转变压器解码方法 | |
CN201667632U (zh) | 一种无刷直流电机及其控制装置和使用它的输送机 | |
CN116481433A (zh) | 确定电机位置的方法及装置、非易失性存储介质 | |
CN108759644B (zh) | 移动距离的检测方法、装置和存储介质 | |
CN116232162A (zh) | 一种组合式绝对位置霍尔编码器检测方法 | |
CN101876559B (zh) | 位置检测装置及其信号处理装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |