本文为在用龙芯1c做3D打印机过程中的笔记。龙芯1c做的3d打印机简称“龙印”
参考了《Delta机型M666调平原理》http://tieba.baidu.com/p/3669279278?fr=good
那个帖子里面的视频讲得很清楚,楼主又截图讲解了重难点,只要对三角洲3D打印机有一定了解,对marlin固件源码比较熟悉更好,看懂理解那个帖子应该不成问题。这里根据我自己的一些理解写点读书笔记。
首先需要明确两个概念——调平和打印精度。这是两个不同的事,调平了并不意味着打印精度很高,详情请参考《Kossel打印机调试中的几个疑问,适用于delta机型》http://tieba.baidu.com/p/3893488682
这个帖子和上面那个是同一个楼主,从帖子内容能看得出来那个楼主严谨的科学态度。这里给他点赞!
打印机的校准还包括步进电机参数的调节,比如挤出机的校准。这是上面的帖子和视频没讲的,详情请参考《Marlin固件:关于步进电机参数调节的分析》http://tieba.baidu.com/p/4446984321
在笛卡尔坐标z相同时,改变坐标x和y,会有
一,挤出头离打印平面四周的距离不等,典型的是挤出头的运行轨迹与打印平面成一定的夹角,看上去好像是“斜的”,这是由于三个限位器不在同一平面,可以通过调整限位器的位置或者用M666调整变量endstop_adj进行补偿;
二,挤出头离打印平面中心的距离与四周的不同,即常说的挤出头的运行轨迹是凹或凸的,这是由于三角洲3D打印机的机械参数不对,可以通过M665修改参数。
这也是为什么第一个帖子中那个视频名字叫《Manual Delta Calibration using M665 and M666》的原因。那个视频讲得很好,为了更好保存和推广这个视频,我已上传到土豆了(作者做这个视频就是为了分享,我像作者会同意的,这里先谢过了,哈哈),网址是http://www.tudou.com/listplay/2q6McxaetKk/C_WNBRnTRt0.html
视频的由来
视频一开始就说了,他的三角洲3D打印机用的固件是“Smoothieware”不是“Marlin”,但是后面的演示中遇到与marlin不同的地方,增加了注释。如下
moothieware官网 http://smoothieware.org/
smoothieware中关于三角洲3D打印机手动和自动调平的资料http://smoothieware.org/delta
基础知识
图中大写的XYZ是三个铝合金导轨,也可以认为是3个电机。XYZ的编号可以换吗?这个问题一直困扰了很久。
在接线时,通常是按照这个“规定”连接的。即正对方的为Z电机,左下方的为X电机,右下方的为Y电机。分别连接到电路板的XYZ电机的牛角头插座上,插错了可能导致打印出来的物品与电脑上的模型不一致。
其实,这个可以改,但是需要把marlin中对应的代码也修改了,函数calculate_delta()就是把笛卡尔坐标系中的绝对坐标转换为三个电机的运动量。
从注释可以看出tower1就是左前方的tower,tower2就是右前方的tower,tower3就是位于后面中间的tower。这个是平视三角洲3D打印机时的划分,如下图
在结合代码中宏“TOWER_1”、“TOWER_2”和“TOWER_3”的定义
#define TOWER_1 X_AXIS
#define TOWER_2 Y_AXIS
#define TOWER_3 Z_AXIS
可知:tower1就是tower X,tower2就是tower Y,tower3就是tower Z。
当我们俯视时,就是
刚才提到笛卡尔坐标系,那么其原点是?XYZ轴是?
原点就是三个tower组成的等边三角形的外接圆的圆心;X轴平行于tower X和tower Y的连线,并穿过圆心;Y轴经过tower Z,并经过圆心;Z轴经过圆心,且垂直于打印平面。如下所示
由此可知,tower Z与笛卡尔坐标系的X轴的夹角为90度,tower X的夹角为210=180+30度,tower Y的夹角为330=360-30度,所以视频中有如下描述
了解了这个,那么每个tower在笛卡尔坐标系的坐标也就清楚了。如malin代码所示
关于笛卡尔坐标系怎么转换为电机的运动量的详细解说请参考
http://wenku.baidu.com/link?url=w_GhcBYN6OgUjRCKQKR-3S4Whem6KdO_TRNvlH_3SclXbSsp4X3eI8QqfPTd92qb9H04IS0BfnGwBNelpypMUgaetC9xhVK8nB4Jv2G4u7y
调平相关的几个关键参数
Delta_radius是斜杆投影到笛卡尔空间的XY平面的长度。Marlin源码中是经过几个参数计算得来,这个参数很重要,不对的话会导致在打印平面四周调平后,中间不平。即挤出头从打印平面的一边运行到另一边的轨迹为凹或凸的,不是与打印平面平行的。
Max z是笛卡尔空间坐标中z轴的最大值,即打印物品的最大高度。
Build radius是打印物品的最大半径,我的理解是玻璃的半径。
上图计算出了三个点的坐标,分别为下图中打印平面上的点x、点y和点z。
注意计算这几个点的坐标时选用的是100,而不是build_radius的116。其实只要小于build_radius就行,通常取0.8*build_radius。
后面的调平就是将打印头移动到点c,点x,点y和点z上方,然后手动降低高度,并用指令m114查看当前坐标进行反馈。
调限位器把四周调平
注意观察发送的命令,视频的7:15分时,发送命令”G1 X0 Y0 Z5 F7000”,把打印头移到原点上方5mm处,然后手动降低高度到合适位置,通过M114查看当前打印头的位置,重点关注z轴的值,如果为负数,则说明原点在此时打印头喷嘴的上方,即之前设置的高度值设高了,反之,则设低了。
指令G1的参数S为1时,不检查边界。Marlin-1.1.0源码中只支持XYZEF,不支持参数S,源码如下
来看看x电机限位器调平,注解已写在图中,y电机和z电机的限位器调平类似。
在视频的19:45分,xyz三个电机的限位器已经调平,即四周已经调平。
调delta_radius和限位器把中间和四周都调平
这里的截图和解释只是为了提供一个大概的参考,我还是觉得看视频更直观生动,建议反复多看几篇视频。
最后,需要提醒的是影响调平和精度的因素除了限位器位置和delta_radius之外,还有斜杆长度是否与实际相符,皮带轮与皮带齿距是否与固件相符等。请再看看
《Kossel打印机调试中的几个疑问,适用于delta机型》http://tieba.baidu.com/p/3893488682