五、步进电机常见问题
1.步进电机T型加速几个参量的作用?
步进电机运行最大步数(steps):步进电机运行的总步数,决定了步进电机运行的时间。
步进电机加速阶段加速度accel:该参量决定了步进电机达加速快慢,值越大越早达到最大速度。但是选择加速度过大,将导致脉冲频率增大过快,会导致步进电机丢步,从而卡死。最好选择在5至10。
步进电机减速阶段减速度(decel):该参量决定步进电机减速快慢,与加速度一样,过大会导致步进电机过冲。从而卡死。
步进电机运行速度(speeds):该参数决定步进电机运行最快速度,步进电机最快速度由步进电机所能接收的极限频率决定。本例测试步进电机达到速度25时,端口输出脉冲频率为62.5kHz。
2.如何防止步进电机加速或减速阶段卡死?
有以下几种解决方法:1.调低加速或减速值
2.加入合适的延时时间----一般以微秒计。可以得到极高的运行速度。
3.步进电机运行速度与延迟时间的关系
虽然AVR算法提供了控制步进电机的有效解决方案,但是该算法在不同的时间端频率依旧存在骤升现象,因此步进电机会出现卡死现象。所以相让步进电机运行在高频状态仅仅依靠AVR算法不能胜任。在程序适当位置加上延时,能平稳加速,不出现卡死现象。但是,随之而来的是步进电机加速阶段时间延长。
Speeds(无单位) |
Delay(us) |
运行状态 |
<10 |
无需延时 |
平稳 |
25 |
10 |
平稳 |
35 |
10 |
平稳,有小噪声。 |
45 |
10 |
平稳 |
55 |
10 |
平稳,噪声变大。 |
步进电机运行可靠速度选择在0至50之间。加速度确定为5,减速度确定为5.步数为5000,延时时间为10微秒.所以PID所要计算的只是速度。
4.如何进行位置控制?
步进电机的运行方式,决定步进电机能够使用开环方式进行控制。开环状态下,能够计算步进电机接收脉冲的次数,也就能实现步进电机精确定位,也就能够根据此获得步进电机旋转圈数,或转换为步进电机转轴旋转总位移。在直线状态,就转换为皮带移动距离,进而能够判断平台大致处于何位置。
32细分下,步进电机旋转圈数r=pluse/(32*200)。旋转一圈皮带移动60mm。
取主轴长600mm,左侧、右侧剩下10mm。从左侧到右侧仅需10圈。也就是64000个脉冲。
理论上,统计脉冲数,便能控制住平台不撞上边缘。
开环控制总会存在一些误差,想要完全消除误差,只能采用其它方式,进行闭环控制。
5.换向过程中会遇到的问题?
步进电机在换向过程中,往往是向某一方向快速运动,突然停止,并且在高频率下换向,这将导致步进电机卡死。因此,想要换向的前提必定是当前端口输出的频率设置为零,这样就能够解决步进电机在高频换向的情况下卡死。
总结一下,步进电机可能出现以下几种卡死现象。
1.步进电机启动频率过高导致卡死。
2.步进电机减速频率过高导致卡死。
3.T型加速频率提升过快卡死。
4.T型减速频率降低过快卡死。
5.步进电机高频换向卡死。
从不同情景下会出现这些情况,但是,具体只有一种卡死,就是频率变化过快导致卡死。
6.程序运行中,将运行状态设置为stop,步进电机依旧运转,什么原因?
经过测试,发现步进电机运行状态已经被设置为零,但是,时钟依旧在进行比较输出,不断地进入中断,也就不断地拉高及拉低IO口。因此,步进电机在脉冲的输入下,依旧在旋转。如果设置步进电机运行状态停止,那么就应当关闭时钟。
对应的函数为 TIM_Cmd(TIM4,DISABLE); 。虽然该函数能够解决脉冲输出问题,但是再次开启需要再次配置。(似乎又不用了----给定合适的延迟时间,给10ms延时即可。)
7.程序运行步数远远多于实际步数,怎么回事?
这是由于T型加速算法造成的,经过测试,程序会从加速阶段进入运行阶段,但是需要很长时间才能进入减速阶段。T型算法计算出的减速阶段的值为8亿5千万。而运行步数则是进入中断的次数,想要到达减速阶段,需要运行较长时间。
8.步进电机换向停顿问题,如何解决?
步进电机换向停顿是由于在换向过程中端口输出的脉冲数量过少,故步进电机移动缓慢,也就出现了换向停顿问题。一解决方法是增大加速度,使得一换向就有较大频率的脉冲输出。但是加速度过快倒立摆卡死。 二是减少延迟时间。
对问题5的进一步解释,换向需要完成这个动作。
1.检测是否换向 |
2.电机停转---运行状态设stop,关中断。(关闭时钟) |
3.置相反位(方向位0设1,1设0)。 |
4.清零中断函数中的step_count new_step_delay Rest PMotorPara->accel_count PMotorPara->run_state设定为加速状态 |
5.Speed_Parameter()设定速度 |
6.使能时钟 清除PMotorPara->pulse |