简单平安 发表于 2016-5-31 16:23:11

阅读代码过程中,发现的疑难点,在网上发现了很好的解释,摘抄与此。

Marlin的步进电机驱动,是由中断响应函数实现的。然而远没有这句话来的那么简单:我认为整个控制系统的关键在于路径规划器(planner)。如果步进电机一直匀速运动,不需要任何规划器。不过对于3D打印机而言,x,y轴的运动往往速度变化非常频繁,如果采用匀速运动,速度的突然变化会给电路带来很大的冲击,影响机器的稳定性。这个物理层的原理,就决定了算法层应该采用加速减速的运动算法。路径规划器意味着,程序在执行步进电机的动作之前,就已经计算好了整个过程的速度曲线。后面就只是Stepper模块忠实地执行。这样的好处在于减少了中断响应函数中的运算量。由于3D打印机的机械运动相比控制器的16M主频来说要慢很多,采用缓存技术就能够有效的利用控制器速度。这里面蕴藏着“空间换取时间”的思想。路径规划器会在每次调用时,兢兢业业地把动作规划好,压入block_buffer这个队列。 步进电机的移动速度是严格按照规划器的规划结果,通过设置每次中断的周期寄存器来实现的。

简单平安 发表于 2016-6-12 10:57:57

网上找的一个用c改写的精简版的marlin固件源码
http://blog.csdn.net/oxiaridebing/article/details/47760259
页: 1 [2]
查看完整版本: 3D打印机Marlin固件的详细分析