|
Arduino的程序要实现脱机SD卡打印,全部工作都要单片机来做,所以使用了32K Flash容量的Mega328,用查表法即时处理加速减速,它是对速度进行控制。AVR有硬件乘法器,换成你现在的CPU,看起来这个算法不太合适,可以考虑改为对距离进行控制。D版维宏卡也是用51输出100K脉冲,性能应该足够。改为对距离进行控制后,PC机处理前瞻和G代码解释,解释完把预先处理好的数据传给单片机,单片机只负责输出脉冲。下面的图是在恒定加速度情况下,距离和时间的关系,是一个标准抛物线,等分成5段,每段使用匀速,在段和段之间变速,只要5段,就非常接近理论移动距离。单片机的定时器维持不变的最高脉冲速度,在定时器中断里对一个变量A做累减,减到0就输出一个脉冲,然后恢复A的初值,PC机只要预先计算好各段的A的初值,传给单片机就可以了,这样做可以消除单片机的乘法,减轻单片机负担,提高脉冲输出频率,同时解决了PC机操作系统无法稳定输出脉冲的问题
|
|