在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4975|回复: 3

[求助] 有做过旋转增量式编码器的加减计数的吗?关于加减计数的误差问题。

[复制链接]
发表于 2011-5-18 22:35:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 pengjunjun0807 于 2011-5-18 22:52 编辑

我的伺服电机带的编码器是2500线,AB相位差为90,电机旋转一周输出一个Z脉冲。我想把编码器做成绝对值式的一样,不管你在任何时候以任意的方式去旋转电机(正转、逆转)都能输出当前的计数值(即输出0-2499之间的一个数字)。

我实现的方法是:利用A脉冲的posedge检测B状态,如果B为1则做加计数(正转),如果B为0则做减计数(逆转)。用Z脉冲做同步清零。

现在的问题是:如果我按一个方向旋转,那么输出的数值比较接近,相差几个到几十个数值而已,但是如果我重复的正转、逆转,它输出的数值偏差就越来越大了。

猜想:由于编码器精度很高,即便电机上有很小的振动都会有AB脉冲输出(用示波器观察过),所以用手转动的时候电机不一定准确的按一个方向转,在停下来的那一刻电机可能会因为振动会往回走一点点(确实如此)。假如A脉冲刚从0变到1,还没从1变到下一个0的时候电机往回跑了一点点,自然A又从1变回刚才的0了。如果电机又往前走一点点,A又从0变到1,这样电机实际上只往一个方向移动了一个脉冲的距离,却因为上面的原因产生了两个上升沿,结果计数了两次。那么,误差就出在这了?

改进:利用posedge A检测B,如果B为1则做加计数(正转),如果B为0则保持。用negedge A检测B,如果B为1则做减计数(逆转),如果B为0则保持计数值。这样解决了上面的问题,因为电机从0变到1(做一个加计数)后如果往回跑一点点则会产生negedge,此时便做减计数了,如果电机再往前走一点点,又产生posedge,又做一个加计数,这样下来做了两个加计数和一个减计数,合起来刚好一个加计数,和电机的位移吻合。

改进后的效果:问题依旧....晕啊?????

再猜一次:是不是由于电机的微小振动使得A脉冲在同一个边沿上来回posedge和negedge,产生高频率脉冲超过了CPLD的7.5ns反应时间??我的CPLD是lattice 4000系列的。计算了一下2500线脉冲在3000rpm的时候频率是3000/60 * 2500 = 125K = 0.008ns而已啊
 楼主| 发表于 2011-5-18 22:38:23 | 显示全部楼层
附上代码:
//2500加减计数器
module Counter_2500(out,reset,clk_a,clk_b);
output[12:0] out;
wire[12:0] out;
reg[12:0] out0,out1;
input reset,clk_a,clk_b;

always @(posedge clk_a)
begin
        if(reset)     out0 = 0;//同步复位
        else if(clk_b)out0 = out0 + 1;
end
always @(negedge clk_a)
begin
        if(reset)     out1 = 0;//同步复位
        else if(clk_b)out1 = out1 + 1;
end
assign out = out0 - out1;
endmodule
发表于 2011-5-19 06:46:48 | 显示全部楼层
你的代码有什么意义呢?assign out = out0 - out1;
始终在0和1之间跳变,怎么可以完成加减计数器的功能呢?
发表于 2011-5-23 16:13:49 | 显示全部楼层
最好是有一个高频的时钟,用高频的时钟采A、B异或的上升沿,同时用你的方法产生一个计数方向信号,这样你的计数器就准了。ABZ的输入信号最好是经过一个滤波窗口。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-31 20:05 , Processed in 0.017553 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表