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

2019-08-13 19:53发布

     由于项目对步进电机精度控制的需要,决定引入编码器给步进电机作为反馈。选了一个3600的光栅编码器,用TIM5的编码器模式读取脉冲个数,然后TIM2和TIM4定时器主从模式控制步进电机。发现在从定时器进中断修改主定时器的步数和频率的时候,TIM5读取编码器脉冲个数时会不准。有没有使用过编码器的朋友出来给个建议看看应该怎么控制啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
eyancool
1楼-- · 2019-08-15 02:31
 精彩回答 2  元偷偷看……
sanv
2楼-- · 2019-08-15 07:23
eyancool 发表于 2017-10-13 18:27
用F4系列32位TIM2,TIM5定时器做正交编码器接口,省了很多事情,只要读取计数器数据就行了.

是的,通用定时器都有编码器模式,设置一下就能读取数据了。
sanv
3楼-- · 2019-08-15 12:09
Acuity 发表于 2017-10-13 18:08
1、如果按照常规的控制模式控制步进电机,编码器没什么作用;因为步进电机必须有一个加速过程,速度没法突 ...

  嗯,我们项目精度要求还是蛮高的。然后我们使用的是3600的光栅编码器,四倍频后是14400。16位还是够用的,主要是我们是控制圆盘,计数器的值最大也就14400。步进电机控制是用的TIM2和TIM4,主从定时器模式,主定时器产生PWM,在从定时器中断中修改主定时器的步数和频率,这样来实现加减速的。然后TIM5设置成编码器模式去读光栅的脉冲数。发现,一但步进电机加减速时(其实也就是从定时器进中断了),TIM5读取脉冲数就会丢失。现在考虑TIM5用DMA的方式记录计数值,正在实现中。。。。。
sanv
4楼-- · 2019-08-15 17:01
Acuity 发表于 2017-10-13 18:08
1、如果按照常规的控制模式控制步进电机,编码器没什么作用;因为步进电机必须有一个加速过程,速度没法突 ...

   其实加编码器也没想做成完全闭环的控制。事项实现这样的控制,比如步进电机跑200步能够到达指定位置,然后我先让步进电机跑198步,然后根据编码器的值来一步一步的让步进电机接近目标位置。编码器的z轴接到外部中断了,当检测到z轴中断来时,编码器计数值被置零。这样编码器的计数值和圆盘360°的每一个角度都有一个固定的对应关系。也是说比如我要让圆盘转动20°,对应的编码器计数值是3000,步进电机步数是200,然后我让步进电机跑198步,编码器计数值是2800,然后步进电机一步一步的跑,对比编码器计数值是不是等于3000,等于3000了就停下来。想法是这样的,不知兄台意下如何?
sanv
5楼-- · 2019-08-15 21:53
Acuity 发表于 2017-10-13 18:08
1、如果按照常规的控制模式控制步进电机,编码器没什么作用;因为步进电机必须有一个加速过程,速度没法突 ...

   之所以想做成这样的控制是因为圆盘虽然是步进电机带动的,但是是通过皮带把两个齿轮连起来的,然后传动比也不是整数,这样一来,圆盘需要转20°步进电机对应的步数就不是一个对应的固定步数,控制起来很麻烦,然后我们就像到了这种策略。不知兄台是否有更好的建议。谢谢
sanv
6楼-- · 2019-08-16 03:13
 精彩回答 2  元偷偷看……

一周热门 更多>