最近工作接触到步进电机的项目,经过一段时间的研究,大概了解了一些知识,现做小结。
首先引用该文:步进电机基本结构和工作原理
已经比较详细的介绍了步进电机的驱动原理。
由上文可知,步进电机是由频率驱动控制,应该属于调频控制。
但是控制电机的频率并不是无限且随意的,它有最低启动频率这个参数,一般由厂家提供
或者个人试验得出的,因为频率不够的话,驱动的力矩不足以使电机迅速转动起来
电机的转速公式又上文知道:
---------------------------
N = (θ * f * 60) / 360 -【1】
---------------------------
N:转速RPM[r/min]
θ:步距角:
f :驱动电机的频率
---------------------------
这里又引入一个参数:驱动器细分系数
此为驱动芯片提供决定的参数
细分是控制精度的标志,通过增大细分能改善精度。细分能增加电机平稳性,
通常步进电机都有低频振动的特点,通过加大细分可以改善,使电机运行非常平稳
所以上面的公式变为:
---------------------------
N = (k*θ * f * 60) / 360 -【2】
---------------------------
N:转速RPM[r/min]
k:驱动器细分系数
θ:步距角:
f :驱动电机的频率
---------------------------
如A3979步进电机驱动IC文档给出的
该芯片的12,13引脚[MS1,MS2]就是驱动器细分系数硬件配置引脚
如图给出的,MS1,MS2引脚上的电平配置决定了驱动芯片的细分系数,最大为16.
计算转速代码
#define PULSE_TIMER_FREQ (1000000) //定时器基频:Hz
#define PULSE_TIME_CONVERT(ld_val) ((double)ld_val/PULSE_TIMER_FREQ)//定时器周期换算
#define MOTOR_SPPED_CALC(step_angle,pulse_ld_val,div_k) ((double)(step_angle*div_k)*60/(360*PULSE_TIME_CONVERT(pulse_ld_val)*1.0))//转速计算:单位RPM
附录一个步进电机参考项目链接地址太极创客