superluminal 发表于 2012-10-7 10:09:06

求教问题:将绝对位置数据转换为正交编码脉冲

将17位绝对位置编码器数据转换为正交编码脉冲,输入为17位绝对值位置数据(131072个脉冲/转),要求输出:ABZ信号,4位——14位(16~16384个脉冲/转)。转换出的正交编码脉冲数准确无误不会多出也不会减少。
使用vhdl语言编程。cpld频率为20Mhz。目前我的思路是
1、每100us读取一次绝对值编码器的绝对位置数据,将本次读到的位置数据x2 与上一次读到的位置数据x1 比较,即本次与上一次的位置偏差Δx=x2-x1。
2、根据位置偏差Δx 的正数或负数,来决定输出正交编码脉冲A 信号超前B 信号90°还是B 信号超前A 信号90°。
3、根据Δx 确定本周期正交编码需要发出的脉冲数p1。
4、算出输出每个脉冲所需要的时间,即脉冲周期t1,t1=T÷p1(T=100us)。
5、零点Z 信号是根据位置偏差Δx 绝对值的大小来得出的,当位置偏差Δx 的绝对值大于装有绝对式编码器电机的最高转速所产生的位置偏差Δxmax 时,则说明绝对式编码器转轴已经过了零点,此时输出零点Z 信号。为了防止误差,取位置偏差大于Δxmax 的2 倍再输出零点Z 信号。
6、根据计算所得的t1输出A、B脉冲信号。(在周期T之内,认为电机是匀速的)
电机转向改变时A、B如何转换相位关系?每次运算并不能得到整数,有累计误差产生,怎么处理这个误差。
有没有大师有这方面经验的?求教。

XP85118978 发表于 2012-10-7 22:03:41

我也正在做光栅尺信号处理板卡,顶下
页: [1]
查看完整版本: 求教问题:将绝对位置数据转换为正交编码脉冲