2019-08-13 19:53发布
eyancool 发表于 2017-10-13 18:27 用F4系列32位TIM2,TIM5定时器做正交编码器接口,省了很多事情,只要读取计数器数据就行了.
Acuity 发表于 2017-10-13 18:08 1、如果按照常规的控制模式控制步进电机,编码器没什么作用;因为步进电机必须有一个加速过程,速度没法突 ...
最多设置5个标签!
是的,通用定时器都有编码器模式,设置一下就能读取数据了。
嗯,我们项目精度要求还是蛮高的。然后我们使用的是3600的光栅编码器,四倍频后是14400。16位还是够用的,主要是我们是控制圆盘,计数器的值最大也就14400。步进电机控制是用的TIM2和TIM4,主从定时器模式,主定时器产生PWM,在从定时器中断中修改主定时器的步数和频率,这样来实现加减速的。然后TIM5设置成编码器模式去读光栅的脉冲数。发现,一但步进电机加减速时(其实也就是从定时器进中断了),TIM5读取脉冲数就会丢失。现在考虑TIM5用DMA的方式记录计数值,正在实现中。。。。。
其实加编码器也没想做成完全闭环的控制。事项实现这样的控制,比如步进电机跑200步能够到达指定位置,然后我先让步进电机跑198步,然后根据编码器的值来一步一步的让步进电机接近目标位置。编码器的z轴接到外部中断了,当检测到z轴中断来时,编码器计数值被置零。这样编码器的计数值和圆盘360°的每一个角度都有一个固定的对应关系。也是说比如我要让圆盘转动20°,对应的编码器计数值是3000,步进电机步数是200,然后我让步进电机跑198步,编码器计数值是2800,然后步进电机一步一步的跑,对比编码器计数值是不是等于3000,等于3000了就停下来。想法是这样的,不知兄台意下如何?
之所以想做成这样的控制是因为圆盘虽然是步进电机带动的,但是是通过皮带把两个齿轮连起来的,然后传动比也不是整数,这样一来,圆盘需要转20°步进电机对应的步数就不是一个对应的固定步数,控制起来很麻烦,然后我们就像到了这种策略。不知兄台是否有更好的建议。谢谢
一周热门 更多>