摘要:本节介绍用定时器定时的方式,精准控制脉冲时间,从而控制步进电机速度。
一、计算过程
电机每一步的角速度等于走这一步所花费的时间,走一步角度等于步距角,走一步的时间等于一个脉冲的时间:
TB6600及其他驱动器大多具有细分功能,考虑细分X之后,一个脉冲转动的角度为step/X,带入①式:
电机速度通常使用单位为转速RPM(转/分),角速度(°/S)与转速之间的转换关系:
至此得到了步进电机一个脉冲的时间t,采用51单片机16位溢出定时器的模式去定时,可以得到:
至此得到了转速n与定时初值C的函数关系
二、举例计算
步进电机使用二相四线电机,步距角为1.8°,驱动器细分值设定为2,单片机晶振频率为12000000,设定转速为100RPM,带入⑥可得:
定时器0初值高8位TH0= C/256=0XFA
定时器0初值低8位TL0= C%256=0X24
三、程序代码
c
void main()
{
//定时器0初始化
TMOD=0X01;//设置定时器0为16位溢出模式
TH0=0XFA;//装定时寄存器初值,对应速度值100RPM
TL0=0X24;
TR0=1;//开定时器0计数
ET0=1;//开定时器0中断
EA=1;//开总中断
while(1)
{
}
}
//定时器0中断程序
void time0_int() interrupt 1
{
TH0=0XFA;//重装定时寄存器初值
TL0=0X24;
//低电平切换到高电平,产生一个脉冲
PUL=1;
_nop_();_nop_();nop_();nop_();
PUL=0;
}
四、总结
此种方式利用定时器精确定时能力,从而控制电机转速,是后续电机加减速运动的理论基础
五、附件
完整代码工程文件请见微信小程序: