增量编码器在步进电机控制中的使用

2019-08-13 19:53发布

     由于项目对步进电机精度控制的需要,决定引入编码器给步进电机作为反馈。选了一个3600的光栅编码器,用TIM5的编码器模式读取脉冲个数,然后TIM2和TIM4定时器主从模式控制步进电机。发现在从定时器进中断修改主定时器的步数和频率的时候,TIM5读取编码器脉冲个数时会不准。有没有使用过编码器的朋友出来给个建议看看应该怎么控制啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
Acuity
1楼-- · 2019-08-14 00:47
sanv 发表于 2017-10-14 09:27
其实加编码器也没想做成完全闭环的控制。事项实现这样的控制,比如步进电机跑200步能够到达指定位置, ...

后面编码器脉冲式换算为电机步数思路正确;前面的好像有点别扭,我的方式是直接走到目标位置(如200),走完后有误差再修正;ps:这么高线数的编码器得多贵啊?对步进电机来说真的意义不大,选择编码器最多与步进电机的步矩角一致(1.8°),有些驱动IC还带细分,以16细分为例,电机转动一圈脉冲:360/1.8*16=3200;所以选一个最大800线的编码器即可,再大也是浪费的,因为电机转动的分辨率达不到;如果是直流电机就不一样了;从自控控制系统理解,就是执行机构和反馈机构要匹配,只有一方提升性能是不能提升整个系统的性能。
xlong_06
2楼-- · 2019-08-14 06:27
 精彩回答 2  元偷偷看……
sanv
3楼-- · 2019-08-14 10:28
xlong_06 发表于 2017-10-13 15:53
你这个肯定会有问题的,你如果编码器与步进电机控制在一起的话,定时器进中断,编码器的脉冲数就会丢,而且 ...

那这种方式不能成功吗?因为见网上有人的论文是这么整的,而且用的还是51之类的。编码器+步进电机做成类似闭环控制。
xlong_06
4楼-- · 2019-08-14 13:57
sanv 发表于 2017-10-13 15:59
那这种方式不能成功吗?因为见网上有人的论文是这么整的,而且用的还是51之类的。编码器+步进电机做成类 ...

要看你的步进电机速度要求了,如果转的很慢的话,可以处理得过来。如果转的快的话就很难说了。
sanv
5楼-- · 2019-08-14 19:20
xlong_06 发表于 2017-10-13 16:04
要看你的步进电机速度要求了,如果转的很慢的话,可以处理得过来。如果转的快的话就很难说了。

是啊。之前想过这样的方法,就是用一个定时器去输出PWM波控制步进电机转动,然后根据编码器的脉冲数来修改步进电机的步数,但是这样会导致步进电机的转速固定。即使更具步数引入加减速的话,也可能导致不准。
Acuity
6楼-- · 2019-08-14 23:48
1、如果按照常规的控制模式控制步进电机,编码器没什么作用;因为步进电机必须有一个加速过程,速度没法突变,否则会失步;也就是说编码器检测到失步,也没法实时修正,只能等待当前动作停止下来再进行修正,当然这样还是有点作用的,实时性差一点而已,目前我就是用这种方式,但产品基本不带编码器,没什么意义;步进电机本来就用于精度要求不高开环场合,要求高的我上直流电机加编码器了,上PID实时性妥妥的;
2、之前有见过一个供应商,做步进电机驱动器,步进电机居然能想伺服电机那样溜,具体什么控制方式我水平有限研究不透;
3、你这个光栅是标准正交编码器吗?如果是正交编码器通过4倍频后,那不得了了;如果不是,那用标准的正交编码器,用stm32定时器的正交编码功能,这样丢脉冲的几率会降低很多;stm32f1定时器很鸡肋只有16位,所以用个100或者400线的正交编码器就可以了,再高stm32f1定时器算不过来,而且高精度编码器比电机贵多了;用正交编码器就简单了,读寄存器值就是编码器脉冲,关键还是算法。
结论:个人觉得步进电机加编码就是浪费(第2点提到的黑科技另外说),要求高精度,那直接用直流电机+编码器(直流伺服电机),速度、力矩、响应时间、控制精度、占用体积都甩步进电机几条街。

一周热门 更多>