stm32精密控制步进电机(升级篇)

这一篇文章里会深入的对步进电机控制方法进行论述


如何避免步进电机丢转的问题

1.机械结构:排查一下传动的问题,举个例子,我的毕设里大臂机械臂的步进电机有时会有丢转问题,造成无法运动到指定位置,后面发现是因为皮带轮传动,皮带绑的不紧,造成步进电机的小直齿轮无法很好的带动大齿轮。

2.看一下供电的电流和电压:使用步进电机驱动器控制时,电源最好选用开关电源。如果其中有使用DCDC或者LDO降压的操作,要保证可以完成稳定的电流供应。

3.看一下是不是负载太大,造成末端或者是部分关节难以移动

4.进行速度变化控制,先调节一下驱动器的细分数,尝试运行条件下最快且不丢转的速度,定下此时的arr与psc值。之后再试一下运行条件下最慢且可以完成任务的速度,记录为arr2和psc2。让步进电机在一个运动周期内,先加速,后匀速,再减速,这就是一般会说到的梯型速度控制/S型速度控制方法,另外也可以使用阶梯调速的方法

5.进行闭环PID速度控制,可使用matlab仿真

6.写位置插补,或者是速度插补函数,补足运行的距离

如果上述方法还是有些误差,可以减少每次步进电机运动的脉冲数,让步进电机多运行几次,以此达到相应的距离

阶梯调速原理及代码解析

这个想法同样来自毕设,当时毕设使用脉冲数控制运动距离,发现梯型速度和S型速度控制方法都很难融入到实际成品里,也是我当时不太会写公式,索性将每次运动的总脉冲数pulse_we_need分为n份,每份脉冲结束后都会对arr和psc加/减,以此完成减速/加速的运动控制。

把总共需要运行的脉冲数分成相对应的十份,pulse1_speed4被设置为从加速到匀速的临界点脉冲,pulse1_speed7被设置为从匀速到减速的临界点脉冲。

设置定时器的句柄后,通过if判断改变十份脉冲间隔时的arr和psc值,重新设置,再打开定时器继续运行。arr和psc值越小,运行速度越快,arr和psc值越大,运行速度越慢。

定时器中断内的pulse计数大于pulse_we_need时,pulse重新置0,arr和psc值设置为工作范围内运行速度最慢的值,重新设定定时器后关闭定时器的中断。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值