关于定时器设置成编码器模式时的思路问题

2019-07-21 02:48发布

   编码器模式时序图.png
我的编码器是360线的,所以是1°一个脉冲。并且只有AB两相。

①位置:如果是按照上面的时序图来看的话,应该是编码器主轴每走1度计数器就计数4次,并且根据转动方向加减,我想问这种情况的话是不是设置成上下边沿都触发了,如果想每走1度计数2次的话是不是就可以设置成上边沿触发或下边沿就可以了,如果是每走1度计数一次是不是只连A相或B相就可以了啊。这样就可以通过读计数器的值获取位置信息了,但是如何确定基准呢。
②方向:是不是设置一个中断,然后在A相的上升沿或下降沿检测B相的电平以确定方向了。
③速度:如果想算速度是不是应该再用一个定时器固定时间产生中断,然后在中断里用两次计数器的差值/固定时间就可以得出编码器的速度了,但这样算的是平均速度啊,是不是如果时间足够小就可以当做是瞬时速度了,而且如果在这段时间里编码器换了转动方向那速度不就不对了,那这种情况应该如何解决了,是不是应该设置一个标志量,若标志量改变,就记录此刻的计数器值,这样用标志量改变时的计数器值减去两边的然后相加就可以了。
④加速度是直接速度微分吗。
希望大虾看看我这思路有没有错误
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
Acuity
2019-07-21 06:20
1、位置,理解基本正确,一般都是用4倍频(AB相正交),用2或者1就是浪费编码器精度;用相对基准,不用绝对基准;
2、方向,方向根据计数值相对加减确定,加为正,减为负;一般不用中断(Z相)也可,特别是STM32F1鸡肋的16位定时器,用Z相中断如果速度快将高频进中断;通过查询方式,计算相个时间差的脉冲数;
3、速度、加速度与编码器无关系,简单理解就是单位时间脉冲数,有两种计算方式,自行百度研究;加速度是速度的微分是正确,这是物理上的连续模拟量,计算机计算要转为离散。

一周热门 更多>