步进电机的转速由由输出给驱动器的PWM频率而定,使用MCU的一个定时器(TIM2_CH1)输出占空比 D=50% 的脉冲。
定时器的时钟频率为72MHz,分频后8Mhz,于是输出PWM的频率大约为120Hz。
假定需要在时间 t 内运行 θ角度,根据驱动器的细分数,齿轮传动比等可以算出所需要的脉冲数 pls_cnt。
刚开始的想法是,前半程加速,后半程减速,加减速时间间隔为 delta_t,由另一定时器的中断周期而定,在定时器ISR里面对频率进行调整,便能让电机平滑地起停。
但是我并不能直接改变输出PWM的频率 freq,能直接改变的只是定时器的自动重载值 period,freq 和 period 之间显然是双曲线的关系:
让 period 线性化,结果导致 freq 呈双曲线变化,加速过程很慢,减速很快,实验现象也是如此,而且这个过程的时间也不好控制。
既然可以用线性加速曲线,那应该可以用更为平滑的加速曲线,在印象中S形曲线是非常平滑的,会得到速度连续,加速度也连续的调速过程。于是用S形曲线再试试。
这里选择[-5, 5]这段曲线比较合适,加速过程可能有点长,如有要求可以选择[-4, 4]。
由于在0~t时间段内,指数项不可能为∞,所以起始频率要略高于 freq_min,指数项也不可能为0,所以频率要略低于 freq_max。
上式中 freq_min 可以自己先给定,这样还有一个参数 freq_max,需要确定。
这样S形曲线便确定了,然后再算出 period 数组即可。减速过程同样的可以将数组反过来,例如:
实验中S形曲线自然是为平滑的,精度不算太好,如有可能的话,可用编码器进行修正。
以上信息由无锡惠斯通电机科技有限公司整理编辑,了解更多步进电机,两相步进电机,混合式步进电机信息请访问http://www.huistong.com