huangxiaolpbany 发表于 2013-5-10 10:27:58

使用MEGA16计算机床合成速度的问题

情况如下:
1、设备的上的一个功能模块需要机床的实际运行速度,但是机床无法提供
2、机床驱动器可以提供X/Y轴的实时速度(模拟量)

目前使用的方法:
1、使用TLC2543(12bitAD)采集X/Y轴的速度
2、TLC2543提供的AD结果在MEGA16中进行计算,计算公式为SQRT(X*X+Y*Y)
3、由于机床最快速度为1000mm/s,而AD的分辨率为4096,所以X/Y轴的修正系数为1000/4096=0.2441,而且X/Y修正系数可能不同
4、要求2ms刷新一次实际速度

问题:
1、如果按照最简单的方法
实际速度=SQRT[(AD_X*0.2441)*(AD_X*0.2441)+(AD_Y*0.2441)*(AD_Y*0.2441)]
实际计算时间需要达到1.3ms左右(包括其他的一些计算),其他如显示之类的无法进行
时间被浮点运算消耗掉了

2、如果将修正系数改为整数,如乘以256,最终计算结果右移8位得到结果,本例为62
实际速度=SQRT[(AD_X*62)*(AD_X*0.2441)+(AD_Y*62)*(AD_Y*0.2441)]

考虑到AD输出结果为12bit,修正系数为8bit,则实际的X/Y轴速度需要20bit表示,那么X/Y轴速度的平方需要40bit表示,再两个相加需要41bit表示

MEGA16无法满足要求



请教如何解决此问题


huangxiaolpbany 发表于 2013-5-10 14:58:17

有13个人看了,但是没有给回答,牛人出来帮帮我。

huangxiaolpbany 发表于 2013-5-10 21:37:23

30人浏览了,没有人回复。自己定
页: [1]
查看完整版本: 使用MEGA16计算机床合成速度的问题