步进电机控制之控制精度讨论

步进电机是一种将电脉冲信号转换成角位移或线位移的一种器件。在不超载情况下,步进电机的转速和运动距离取决于控制电脉冲的频率和数量。

其控制精度主要由两方面决定:

1、步进电机的每步精度,以2相混合式步进电机为例,一个200步的步进电机在不细分情况下,单步的步距为:360°/200=1.8°,即该步进电机单步行走的最小距离就是1.8°。但实际使用中,一般都会细分步数。以2细分为例,此时步进电机行走两步相当于原来走一步,则现在单步的步距为:360°/(200*2)=0.9°;同理,4细分下,单步步距为:360°/(200*4)

=0.45°;8细分下,单步步距为:360°/(200*8)=0.225°;16细分下,单步步距为:360°/(200*16)=0.1125°;32细分下,单步步距为:360°/(200*32)=0.05625°。所以驱动细分下,步进电机单步步距角计算公式为:360/(步进电机固有步数*细分数)。

由此可见,要减小步进电机单步步距角以达到较高精度,需要从两个方面着手,一是提高或采用固有步数更多的步进电机以获得较小的单步步距角,如0.9°。二是提高步数细分的程度。

2、计算精度,在控制步进电机进行动作时,计算系统在将要移动的角位移或者线位移转换成步进电机步数的计算时应该保证计算精度高于步进电机每步精度。比如说,步进电机每步的步距角为0.1125°,要移动的角位移为143.45°,要走的步数应该为=143°/0.1125°,计算结果为1275.11.....步,实际结果为1275步,移动误差为:0.11111*0.1125

=0.0125°。而如果计算移动的角位移是以1°为单位的,143.45°=143°,小数部分就被舍弃了。143/0.1125=1271.1111步,则比较之前的移动,误差为:(1275-1271)*0.1125°

=0.45°。这里之所以这样提出,主要是因为在嵌入式系统中,因为数据类型的限制,如果不使用float或double来进行计算,则一般都会舍弃掉小数部分,从而造成较大的计算误差。

本文转自:FireStarway的专栏