求兄弟姐妹们一定帮忙看看啊:stm32 测旋转编码器转速

2019-07-21 03:45发布

大家好,原子哥好。小妹菜鸟,模仿原子哥的输入捕获代码相对旋转编码器计数。分三次写,都是TIM2CH1(PA1)产生PWM波给步进电机驱动器,步进电机与旋转编码器(一圈1024个脉冲)同轴,TIM3(PA6 PA7)来捕获旋转编码器A B 脉冲 ,都没有采用滤波。结果是TIM3捕获结果都不对,烦请做过测速的亲友帮忙分析一下吧
第一次用一个TIM3CH1 对旋转编码器A的脉冲信号进行输入捕获.当PA1与PA6短接时,捕获脉冲个数=PWM产生个数。PA1接步进电机驱动器,PA6接旋转编码器A信号,捕获试验就是实验一次,一个结果,每转一圈脉冲个数达四五万,每次都不一样,都不是1024,好悲催呀。具体见代码1.
第二次用TIM3CH1 TIM3CH2 同时对旋转编码器A B 脉冲进行捕获计数。几乎同上,就是多了一路TIM3CH2捕获旋转编码器B信号,结果就是 TIM3中断程序进不入,不解呀。。。请兄弟姐妹们一定帮忙看看这个呀,具体见代码2
第三次用TIM3CH1 编码器模式  对旋转编码器A脉冲计数 结果是0 ,1,0,1.。。这个就更无语了,看着论坛里别人的代码,抄来还用不了。。。
谢谢大家,请帮我指点指点吧,小妹不胜感激哪

[mw_shl_code=c,true][/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
青山小树
2019-07-22 09:27
因为上面三个代码都不能正确检测旋转编码器的个数,我有个疑问,
1)是不是编码器一圈不是1024?如果是脉冲个数一定是1024个,那是不是需要滤波啥的,像我这样直接将A B信号接入stm32单片机并且代码中也没有滤波,是不是就会有计数误
差,可是我的结果跑一圈49000多呀,远大于1024,这是怎么回事呢
2)我的编码器波形是这样的




蓝 {MOD}的是A信号



黄 {MOD}的是B信号

需要滤波吗
是硬件滤波 还是软件滤波呢

一周热门 更多>