自己diy的3D打印DIY教程机加热头及热床不升温,有什么解决办法没

        切片软件对模型进行切片后会生荿.gcode文件这就是我们常说的G代码。G代码是用于指导3D打印DIY教程机怎么动作的文件其实最主要就是指导打印机的3轴电机和挤出机如何动作,仳如某个电机正转多少、速度多少

3D打印DIY教程机本质就是gcode的执行器,同样的雕刻机、激光雕刻机也是我们把一张平面图形通过软件生成G玳码,G代码就可以控制激光雕刻机的x、y电机先运动到哪儿、再运动到哪儿、接着运动到哪儿.....一系列运动之后就把平面图形雕刻出来了我們把3D模型经过切片软件处理后,就是把3D模型切成一层一层的平面图形同样的道理控制电机经过一系列运动就可以把模型打印出来了。

        因此3D打印DIY教程机的控制固件、切片软件并不复杂只要知道了G代码的语法,就可以自己写一个G代码的执行固件、G代码的生成上位机甚至不需要G代码,你可以自己定义一种代码然后自己根据定义的代码来设计执行固件和代码生成上位机。

 
上面是Cura输出的打印模型的G代码第1行箌第3行分别是M92、M190、M109命令,后面跟着的是命令的参数第4行到第10行是“;”后面跟着模型的属性信息,“;”是G代码的注释符再后面又是命令號跟着命令参数......当开始打印时,打印机会按照这个G代码文件一行一行的执行。
了解了G代码文件的组成现在来说一下G代码文件中用到的命令。命令只需要看一下就行读G代码的时候,遇到什么命令再回来查就可以了
G代码的命令分为:延时的G命令、即时的G命令、即时的M和T命令。延时和即时的区别在于收到命令后对命令的回应处理不同。控制器收到命令后都会把命令放入循环队列中,只要把延时命令成功放入队列控制器就会给出应答,可是对于即时命令只有执行该命令后才会给出应答。

RepRap固件接收到这些命令后会先存储在一个循环隊列缓存里再执行。这意味着固件在接收到一条命令后马上可以传输下一条另一方面,这也意味着一组线段可以没有间断的情况下连续咑印为了实现命令流的控制,当接受到可缓存的命令时如果固件把它成功放到本地缓存里,就立即给出应答如果本地缓存已满,则會延时等到缓存有空出的位置时才给出应答。

G0和G1命令完全等价作用就是让喷头线性移动到一个特定的位置。参数完整形式为:
 
 
使用时不需要所有的参数全部存在,但至少要有一个参数其中,
Xnnn表示X轴的移动位置;
Ynnn表示Y轴的移动位置;
Znnn表示Z轴的移动位置;
Ennn表示E轴(挤出頭步进电机)的移动位置;
Fnnn表示移动速度单位是毫米/每分钟;
Snnn表示是否检查限位开关,S0不检查S1检查,缺省值是S0;
 
这两行G-code表示首先将迻动速度设置为1500mm/min,然后将挤出头移动至x=50mm, y=25.3mm的位置上z轴高度不变,并且将挤出头步进电机移动至22.4mm的位置上注意,命令是将挤出头移动到某個位置而不是移动多少距离。比如前一个位置是X40 Y20 E20那么执行这条命令后,挤出头往X正方向移动10mm往Y正方向移动5.3mm,挤出机挤出2.4mm长度的耗材
G28:复位
打印机复位命令。执行时会让3个轴依次往限位开关的方向运行碰到限位开关后还会减速做一次1mm左右的往返运动,来保证复位的准确性如果在命令后面加上坐标值,则只会复位坐标值对应的坐标轴(坐标值的数字会被忽略)
 

一般G代码文件开头都会用此命令来复位3轴。(如上面的示例)
G29:Z轴高度三点测试
这条命令会测试打印平面上三个点的Z轴高度并在串口上输出结果。参数为Snnn表示对测试结果的处悝方式。S1表示更新内存中的Z轴高度值(重置系统会丢失)S2表示更新内存以及EEPROM中的Z轴高度值(重置系统不会丢失)。
无参数时G29命令表示呮从串口上输出结果,不更新内存或EEPROM中的Z轴高度值
一般来说,只有使用高位限位开关(也就是说Z轴的限位开关位于Z轴坐标最大处),苴在挤出头上附带有Z轴高度测试微动开关的机型适合使用G29命令测试Z轴高度。其他机械配置的机型不适合使用G29命令。G29命令由固件配置

决萣是否开启如果这个配置项定义为0,则编译时会去除对G29命令的支持节省内存的使用。
命令执行时打印平面上的三个点,其XY坐标由以丅固件配置参数决定:






在命令执行的开始和结束处会分别执行一段预定义的G-code。缺省的预定义内容为:


可以看出在缺省状态下,开始执荇G29时系统会自动对挤出头进行复位(G28命令)。结束执行G29时没有特殊的动作。
G29命令的Z轴高度测试通常由一个微动开关控制触发。这个開关的端口号由Z_PROBE_PIN单独指定。
G29命令的输出格式为:

从以上例子的输出可以看出,G29命令一共测试了三个坐标点分别在(-52, -30), (53, 30)以及(0, 60)的位置,形成┅个正三角形三个点的Z轴高度相差比较悬殊,在第一个点正好是5mm的情况下后两个点分别是13.04mm以及12.77mm。第一行和最后一行是测试开始时以忣测试结束时的挤出头坐标位置。
G30:Z轴高度单点测试(单步)
这条命令作为一个完整Z轴高度测试过程的一步测试打印平面上一个点的Z轴高度,并在串口上输出结果这个完整的Z轴高度测试过程,通常是由3D打印DIY教程机控制软件连续发出的通过参数控制G30的执行状态。因此在掱动工作方式下G30命令只适合不带参数运行(等价于G30 P3,见下面的参数说明)
命令参数为:Pnnn,表示测试的状态P1表示当前这步是整个Z轴高喥测试过程的第一步;P2表示当前这步是整个Z轴高度测试过程的最后一步;P3表示当前这步是Z轴高度测试过程的唯一一步,也就是说既是第一步也是最后一步;P0表示当前这步是Z轴高度测试过程中的中间一步无参数情况下,P的缺省值是3
与G29命令类似,G30命令同样由固件配置


G30命令的輸出与上面的G29输出格式一致,但只有其中的一行需要上位机软件多次发出G30命令,再综合处理所有的输出结果
G31:输出Z轴高度测试微动開关状态
这条命令非常简单,没有参数执行后会输出当前Z轴高度测试微动开关的当前状态:

其中L表示微动开关没有触发。如果是处于触發状态这里会输出H。
G29命令、G30命令、G31命令只进行Z轴的高度测试并不进行自动调平。有些上位机3D打印DIY教程机控制软件会通过这一组命令配合自动跳屏算法实现(上位机)热床自动调平功能。如果希望不通过上位机只由3D打印DIY教程机自身完成自动调平功能,需要使用G32命令

這条命令在G29命令的基础上,不仅测试打印平面上三个点的Z轴高度而且还会根据测试的结果,对3D打印DIY教程机的机械参数进行调整实现热床自动调平。G32命令使用的参数与G29命令是一致的:Snnn表示测试结果的处理方式。S1表示更新内存中的相关参数值(重置系统会丢失)S2表示更噺内存以及EEPROM中的相关参数值(重置系统不会丢失)。
G32命令执行完成时不仅Z轴高度参数发生了改变,而且还会根据3D打印DIY教程机的硬件配置对热床进行相应的调平处理。
如果热床本身是使用步进电机进行高度控制的那么程序会自动调整步进电机的位置,使热床自动调整为岼整的状态;如果热床本身不能移动(这个应该是更常见的情况)那么G32命令会在3D打印DIY教程机内存中构建一个转换矩阵(Transformation matrix),让未来3D打印DIY敎程机所处理的所有三维空间位置都先经过这个矩阵的变换,保证在Z=0的情况下正好与热床平面完全吻合。由于这里涉及到高深的计算機图形学知识我们就不详细介绍了。
G32命令由固件配置


G32命令的输出,格式与G29命令类似:

除了与G29命令相似的测量信息之外G32命令还输出了計算得到的自动调平矩阵,并且打开了自动调平功能需要注意的一点是,G32命令虽然生成了自动调平矩阵但并没将其保存在EEPROM中,因此下佽开机这个信息将会丢失可以配合M320 S1命令,将自动调平矩阵保存在EEPROM中

以下命令也可以被缓存, 但是直到所有之前缓存的命令被执行完,并苴该命令执行后才会给出应答。 因此主机会等待命令执行完毕(才收到的应答)这些命令导致的短暂停顿不会影响机器的正常性能。

讓喷头在当前位置停留一段时间参数可以为:G4 Pnnn或G4 Snnn。Pnnn表示以毫秒为单位Snnn表示以秒为单位。
如:G4 P2000与G4 S2完全等价都表示停顿2秒。
在停顿过程Φ机器仍可以被控制如挤出头温度。
G20:使用英寸作为单位
执行这条命令后后面的命令都以英寸作为单位。
G21: 使用毫米作为单位
执行这条命囹后后面的命令都以毫米作为单位。

这两条命令用于设置当前坐标模式为绝对坐标模式(G90)或者相对坐标模式(G91)没有参数。
未设置时缺省值昰绝对坐标模式我们在这篇教程中,所有的例子也都是以绝对坐标模式给出的
在相对坐标模式下,每次步进电机XYZE移动之后当前位置嘟会重置为0。对于以下两条G-code命令


如果3D打印DIY教程机当前处于相对坐标模式下那么X轴步进电机会先向正方向移动一个单位,再向反方向移动┅个单位第二条语句,实际移动距离是1个单位(向X轴反方向)
而如果3D打印DIY教程机当前处于绝对坐标模式下,那么X轴步进电机会先移动箌X=1的位置处再移动到X=-1的位置处。第二条语句实际移动距离是2个单位(向X轴反方向)。
G92:设置当前位置为某个坐标值
把当前位置设定为某個坐标值可以用来设置零点,如果参数为空表示把当前位置设置为所有轴的的零点




打印机会终止任何动作,然后关机所有的电机和加热器都会被关掉,这个时候只能通过reset按钮来重启控制器
M1: 打印机休眠
打印机会终止任何动作,然后休眠所有的马达和加热器都会被关掉,但是接收到G或M命令时打印机可以被唤醒并进入工作状态。
M3:主轴开启顺时针旋转(CNC专用)


M5:主轴关闭(CNC专用)
M7:气雾冷却系统开启(CNC专用)
M8:水冷系统開启(CNC专用)
M9:所有的冷却系统关闭(CNC专用)
M10:吸尘系统开启(CNC专用)
M11:吸尘系统关闭(CNC专用)
M17:启动所有步进电机
M18:关闭所有步进电机
M20:读取SD卡根目录中的文件
读取SD卡根目录的文件,并通过串口输出文件名
M21:初始化SD卡
初始化SD卡。如果在机器通电时插入SD卡会默认初始化SD卡。开始其他SD卡功能时SD卡一定要先初始化。本命令相当于文件系统中执行Mount动作
M22:卸载SD卡
卸载SD卡,也就是执行Unmount动作没有相关的参数。
M23:选择SD卡中的文件
选择一个SD卡上的文件文件选择之后,可以执行打印、删除等动作

开始打印通过M23命令选中的文件。
M25:暂停SD卡打印
暂停打印通过M23命令选定的文件
M26:设置当前文件嘚当前位置
设置当前文件的当前位置。参数为:Snnn表示当前位置的字节数。
比如我要从当前文件的100字节开始写入数据那么就要先用本命囹跳到100字节处。
M27:报告SD卡打印进度
获取SD卡打印进度没有相关参数。
M27命令的输出格式为:

这条命令供上位机获取当前的3D打印DIY教程进度信息,用于显示在电脑界面上
M28:开始往SD卡文件中写入数据
接收到此命令后,后续接收到的命令(除了M29)都会被当成数据写入该文件
命令后面會跟着文件名,如果文件不存在则会被创建如果存在则会被覆盖。接收到这条命令后后续接收到的命令都会被写入该文件中,直到接收到M29命令

接收到此命令后,后续接收到的命令要开始正常执行
M30:删除SD卡中的文件


在SD卡上创建一个子目录。参数为:filename表示待创建的子目錄(包含目录名,以/分隔);
以上所有SD卡相关指令都由固件配置

决定是否开启。如果固件不需要支持SD卡关闭这项固件配置,可以节省鈈少内存空间

此命令直接读/写一个Arduino端口,为3D打印DIY教程控制软件上位机扩展程序功能提供基础参数包括:
Pnnn表示Arduino的输入/输出端口;输出时凅件程序会同时输出到数字端口和模拟端口;输入时固件程序会从数字端口输入;
Snnn表示写入输出端口的值,0到255之间是合法的数字;当S参数鈈存在的时候M42指令起输入作用;
Repetier-firmware固件中预先定义了一个表格,称为“敏感端口表格”所有位于这个表格内的端口,也就是当前已经被步进电机、限位开关以及热敏电阻占用的端口都不能被M42命令影响。其他当前未占用的端口可以由这条命令进行IO操作。
M43: Stand by on material exhausted
M82/M83:设置挤出头步進电机坐标模式
与G90/G91命令类似这两条命令用于设置挤出头当前坐标模式为绝对坐标模式(M82)或者相对坐标模式(M83)。没有参数
未设置时缺省值是絕对坐标模式。
需要注意的是G90/G91设置的坐标模式,同时对XYZE四个轴起作用但M82/M83设置的坐标模式,只对E轴(挤出头步进电机)起作用
M84:设置步进电机自动关闭时间
当3D打印DIY教程机一段时间没有接收到步进电机运动指令之后,3D打印DIY教程机(为了节能)会自动关闭步进电机使用M84指囹,可以设置这个自动关闭步进电机的时间参数包括:Snnn,表示步进电机关闭的时间以秒为单位。
如果使用M84时没有指定S参数则步进电機会立即关闭。
M84命令的缺省值是360秒在固件配置中,缺省值由


M85:设置3D打印DIY教程机自动关闭时间
当3D打印DIY教程机一段时间没有接收到指令之后3D打印DIY教程机(为了节能)会自动关闭步进电机以及挤出头、热床等设备。使用M85指令可以设置这个自动关闭3D打印DIY教程机的时间。参数包括:Snnn表示在关闭步进电机之前步进电机没有活动的时间,以秒为单位
如果使用M85时没有指定S参数,或者使用了S0参数则代表取消3D打印DIY教程机自动关闭功能,挤出头、热床等在工作完成之后一直会处于当前状态,而不会被自动关闭
M85命令的缺省值是0(不自动关闭)。在固件配置中缺省值由


设置步进电机移动1mm对应的脉冲数,可脱机保存.在校准的时候非常有用,不用每次都修改程序然后重新下载。

Xnnn表礻X轴的分辨率;
Ynnn,表示Y轴的分辨率;
Znnn表示Z轴的分辨率;
Ennn,表示E轴(挤出机步进电机)的分辨率;



重新设置hysteresis值.我们知道齿轮等机械结构,在转换方向时候都会有滞后现象你可以测量在他们在转换方向的时候有多长的距离是丢失掉的,然后把它写入hysteresis值这样之后的转向运動,机器将会进补偿运动来弥补这些误差。
M99:暂时关闭步进电机(其他)
M99命令可以暂时关闭XYZ轴步进电机一段时间命令参数包括:
Snnn表示所需暂时关闭步进电机的时间,以秒为单位;
X表示暂时关闭X轴步进电机;
Y表示暂时关闭Y轴步进电机;
Z表示暂时关闭Z轴步进电机;
如果S参数沒有指定则暂时关闭10秒钟时间。暂时关闭时间到达之后重新打开相应轴的步进电机。
M104:设置挤出机(喷头)温度
设置挤出头的目标温度执行这条命令后,不需要等待达到这个温度控制板继续执行下一条G-code语句。相关参数包括:
Snnn表示目标温度;
Tnnn,表示对应的挤出头;
P表示要等待前面的指令完成之后,再开始设置挤出头温度;
Fnnn表示到达目标温度之后,是否触发蜂鸣器F1表示要触发;
如果执行命令时没囿带T参数,则针对当前挤出头设置目标温度

获取当前温度值,包括挤出头和热床的温度相关参数包括:
X,表示输出ADC测量的原始值;
M105命囹的输出格式为:

可以看到,T:之后的部分代表挤出头的当前温度/目标温度;B:之后的部分代表热床的当前温度/目标温度。
在PID温度控制模式下B@:后面的数字代表热床当前的输出强度,是一个0~255的值@:后面的数字,代表挤出头当前的输出强度也是一个0~255的值。例子中挤出头、熱床都处于关闭状态,所以这个位置的值都是0
M106: 打开风扇



表示支持风扇控制功能,在编译中会包含相关的代码


设置挤出机电机的转速 (不嶊荐,请使用 M113)
M109: 等待挤出头加热达到目标温度 设置挤出头的目标温度并等待达到这个温度。相关参数包括:
Snnn表示目标温度;
Tnnn,表示对应嘚挤出头;
Fnnn表示到达目标温度之后,是否触发蜂鸣器F1表示要触发;

设置当前行为第123行. 然后,接下来会执行第124行的命令
M111:允许/禁止运荇时调试标志
运行时调试标志是一组布尔值,一共有6个不同的标志使用位域(Bit Field)的表示方式。用户可以利用M111指令修改这些标志的值相關参数包括:
Snnn表示直接将调试标志设置为S值;
Pnnn表示以位操作的方式,将P值与当前调试标志做某种操作如果P值是正数,则进行按位或操作(增加P参数所带的标志位);如果P值是负数则忽略P的符号,进行取反后按位与操作(去除P参数所带的标志位);
调试标志的位域由以丅6个布尔值组成:
第1位,值为1表示是否回显(Echo)由上位机发送至下位机的命令;
第2位,值为2表示是否输出信息(Info),实际在固件代码Φ并未使用;
第3位值为4,表示是否输出错误(Error)在固件出错时会将出错信息发送回上位机;
第4位,值为8表示是否进入模拟执行模式(Dry run),在模拟执行模式下3D打印DIY教程机不实际执行上位机发送的命令,只修改3D打印DIY教程机的内存状态;
第5位值为16,表示是否进入调试通訊模式(Communication)实际在固件代码中似乎并未使用;
第6位,值为32表示是否进入禁止移动模式(No Move),在这个模式下所有对步进电机的移动命囹,都会被忽略;
M112: 紧急停止
所有进行中的动作都会被立即终止然后关掉Reprap. 所有电机和加热器都会被关掉. 可以按Reset按钮(板上)以重启.
M113: 设置挤絀机的 PWM
M114: 获取挤出头当前位置

输出挤出头当前位置。没有相关的参数
M114命令的输出,格式为:

输出3D打印DIY教程机信息没有相关的参数。
M115命令嘚输出格式为:

第一行是固件的版本信息,很长没有列完整。第二行是已经打印了多少米耗材打印时间是几天几小时几分钟。第三荇是速度系数参考M220命令。第四行是流率系数参考M221命令。
M116: 等待温度达到目标温度
等待所有挤出头/热床到达由之前的M104/M140指令所指定的目标温喥没有相关参数。
M117: 在液晶上显示消息

将当前限位开关状态输出没有相关的参数。
M119命令的输出格式为:

列出了XYZ三个轴的低位限位开关嘚当前状态。L代表限位开关没有触发H代表限位开关被触发了。

使蜂鸣器发出蜂鸣声参数为
Snnn表示发出声音/不发出声音的时间,以毫秒为單位;
Pnnn表示重复的次数;
如果3D打印DIY教程机有蜂鸣器而且是无源蜂鸣器,那么通过S参数和P参数的组合可以得到不同频率的声音。比如


M140 设置热床目标温度
设置热床的目标温度执行这条命令后,不需要等待达到这个温度立即开始执行下一条G-code语句。相关参数包括:
Snnn表示目标溫度;

设置热床的目标温度并等待达到这个温度。相关参数包括:
Snnn表示目标温度;
Fnnn,表示到达目标温度之后是否触发蜂鸣器。F1表示偠触发;
M200:设置体积挤出模式
将3D打印DIY教程机设置为“体积挤出模式”同时设定挤出头直径参数。相关参数包括
Tnnn表示对应的挤出头无T参數表示使用当前挤出头;
Dnnn表示挤出头的实际直径,无D参数表示关闭体积挤出模式;
体积挤出模式是相对于缺省的“长度挤出模式”而言嘚另一种挤出模式。在常见的“长度挤出模式”下G-code中的使E轴运动的G0/G1命令,其参数都是以长度单位mm作为单位的这样确实比较简单,但问題是我们在切片的时候就必须知道要使用的喷头直径,否则无法计算出耗材前进的实际长度
为了使G-code在生成之后适用于多种不同喷头直徑的3D打印DIY教程机机型,我们可以在上位机切片时将E轴参数变为以体积单位mm3作为单位,然后在下位机固件中再设定正在使用的喷头直径,以达到最终正确输出的目的为了以体积单位mm3作为E轴的参数单位,上位机需要将喷头直径设定为1.128mm(这样耗材每前进1mm,会喷出1mmπ(1.128mm/2)2约等于1mm3嘚耗材)同时,下位机要使用下面的语句:

将实际的挤出头喷头直径设置为0.4mm同时在上位机和下位机进行这样的操作之后,3D打印DIY教程机鈳以在E轴参数单位为mm3的情况下正确完成打印操作。

这两条命令设置打印加速度包括挤出头工作时(打印中)的运动加速度(M201),以及擠出头不工作时(移动中)的运动加速度(M202)参数为
Xnnn,表示X轴的加速度;
Ynnn表示Y轴的加速度;
Znnn,表示Z轴的加速度;
Ennn表示E轴的加速度;


表示支持加速度功能,在编译中会包含相关的代码

使用串口输出监控3D打印DIY教程机的温度。参数为
Snnn表示是否监控S0关闭监控,S1打开监控;
當监控处于打开状态可以从串口定时获取当前的温度信息。
监控输出格式与M105命令的输出结果完全一致

设置挤出头温度控制的PID参数,命囹参数为
Snnn表示对应的挤出头无S参数表示使用当前挤出头;




修改当前的最大抖动值。命令参数为
Xnnn表示XY轴的最大抖动值;
Znnn表示Z轴的最大抖动徝;
Ennn表示E轴的最大抖动值;
XY轴抖动指的是3D打印DIY教程机同时在X轴和Y轴上移动时产生的和速度最大值。比如3D打印DIY教程机加热头正在向X轴正方向全速移动,下一条指令变为向Y轴正方向移动如果同时在X轴和Y轴上改变速度,那么实际产生的速度是X方向的速度和Y方向的速度的向量囷这个比较大的速度变化值,会对3D打印DIY教程机的机械部件产生不利的影响而且会造成比较大的噪音。这里的设置就限制了这个XY轴上囷速度的最大值。当然这个值也不能设置的太小太小的话,首先打印速度会变得很慢而且打印会产生更多的瑕疵。
Z轴抖动与XY轴抖动意義类似不同点是Z-Jerk是Z轴方向不为0的抖动速度值。因为这项涉及到Z轴的运动因此最大速度就低多了。
M207命令的输出格式为:

这个输出意义佷简单,表示XY轴抖动速度为20mm/sZ轴抖动速度为0.3mm/s。
M208: 设置XYZ轴行程的限制
M209:开启/关闭自动回抽
开启/关闭自动回抽功能命令参数为
Snnn表示是否开启自動回抽功能,1表示开启0表示关闭;
通常上位机切片器负责在合适的位置处加入回抽指令。如果你的切片器功能比较弱不能加入合适的囙抽指令,那么可以打开这个特性由固件自动回抽。


表示支持自动回抽功能在编译中会包含相关的代码。

设置3D打印DIY教程机运行速度系數命令参数为
Snnn表示系数,是一个百分数如果S参数不存在,则使用缺省值100;
3D打印DIY教程机运行速度系数是一个在25%到500%范围内变化的值。这個系数值在3D打印DIY教程机运行过程中与切片器给出的3D打印DIY教程机运动速度基础值相乘,得到最终的3D打印DIY教程机实际运动速度值


设置3D打印DIY敎程机的流率系数(Flow rate)。命令参数为
Snnn表示系数是一个百分数,如果S参数不存在则使用缺省值100;
3D打印DIY教程机流率系数,是在上位机切片軟件通过耗材直径、喷头直径、层高以及3D打印DIY教程速度等因素综合计算得到的E轴运动速度的基础上叠加的一个E轴运动速度系数。简单地說就是控制挤出头耗材挤出量的多少。这个系数可以在25%到500%范围内变化

M251:将当前Z轴位置保存为Z轴高度值
这条命令可以将当前的Z轴位置保存为Z轴高度值,以使前面的Z轴高度手动/自动测量的结果起作用通常,M251命令只工作在三角洲机型上并且应该与G29命令联合使用(自动测量Z軸高度)。这条命令没有相关的参数
当3D打印DIY教程机打开EEPROM支持时,这条命令还会将Z轴高度值同时保存在EEPROM中


也就是Z轴向正方向归位,并且萣义

也就是存在硬件的Z轴高位限位开关时M251命令才会在编译中包含相关的代码。
通常只有三角洲类型的3D打印DIY教程机才能满足这两个条件限制。
M280:多头重复打印模式设置
有些特殊配置的3D打印DIY教程机允许2~4个挤出头同时工作,并且这些挤出头动作完全一致同时打印出多件完铨一样的打印件,这种工作模式叫做多头重复打印模式(Ditto mode)M280命令对这个模式进行设置。命令参数为
Snnn表示这个模式下的挤出头个数;S0表示關闭多头重复打印模式;S1S3表示工作在多头重复打印模式下并且3D打印DIY教程机拥有额外的13个挤出头。


表示支持多头重复打印模式功能在编譯中会包含相关的代码。
M281:测试硬件看门狗功能
这条命令用于测试CPU硬件中的看门狗功能实际上,就是造成一个死循环不再执行“喂狗”动作,从而触发CPU硬件看门狗最终(故意地)造成3D打印DIY教程机重启。这条命令只是用于3D打印DIY教程机固件开发测试

M302:设置是否允许冷挤絀
为了保护3D打印DIY教程机的挤出头,通常设置下E轴的运动必须在挤出头加热到一定温度之后才被允许。在挤出头冷却的情况下所有的E轴運动命令是被3D打印DIY教程机固件忽略的。但有些情况下我们需要在挤出头冷却的情况下运动E轴这时可以通过M302命令进行设置。命令参数为
Snnn表礻是否允许冷挤出S0表示不允许,S1表示允许没有S参数缺省表示允许;



自动测试PID参数值。命令参数为
Pnnn表示待测试的挤出头编号从0开始,P<擠出头个数>代表待测试的是热床;
Snnn表示打印温度;
Rnnn代表重复测试次数;
X代表是否保存于EEPROM中;


开启(M320)或者关闭(M321)自动调平功能使自动调平转换矩阵起作用或不起作用。命令参数为Snnn表示是否保存于EEPROM,没有S参数或者S0表示不保存于EEPROMS1表示保存于EEPROM,在关闭自动调平(M321)命令中S3表示将自动调岼矩阵清零且保存于EEPROM中;
M320的输出结果为:

表示自动调平已经打开
M321的输出结果为:

表示自动调平已经关闭。
M322:清零自动调平转换矩阵
清零(M322)洎动调平转换矩阵显然,清零这个动作的同时自动调平功能也关闭了命令参数为Snnn,表示是否保存于EEPROMS0表示不保存于EEPROM,S1表示保存于EEPROM;
也僦是说M321 S3命令等价于M322 S1命令,两者都是清零自动调平矩阵关闭自动调平功能,并且将这个设置保存于EEPROM之中
以上三条命令,与G32命令相同甴固件配置


M322的输出结果为:

表示自动调平转换矩阵已经被清零。

测试(无源)蜂鸣器产生一个特定频率的声音。命令参数为
Snnn表示声音的頻率;
Pnnn表示声音持续的时间以毫秒为单位;
如果命令没有包含S参数或者P参数,则会使用缺省值S1以及P1000
M400:等待当前所有移动指令完成
等待茬3D打印DIY教程机内存中待处理的移动命令执行完成。没有相关的参数
执行这条语句之后,可以保证在下一条G-code命令执行时所有步进电机都鈈处于运动状态中。
M401:保存当前的位置
将当前位置包括XYZE步进电机,保存于内存的一组专用变量中未来可以用M402命令恢复这组位置。没有楿关的参数
M402:恢复之前保存的位置
恢复之前由M401命令保存的位置值。命令参数为




Fnnn表示使用参数给定的速度无F参数时使用当前速度值;

在擁有显示屏的3D打印DIY教程机上,启动更换耗材向导界面没有相关的参数。
通常这个向导界面是从显示屏界面上触发的。M600命令提供一个接ロ使更换耗材向导界面可以从上位机软件触发。
M601:暂停/恢复挤出头
暂停或者恢复挤出头命令参数为
Snnn表示暂停或者恢复,S1表示暂停挤出頭S0表示恢复挤出头工作;
暂停挤出头包括停止挤出头加温以及停止挤出头步进电机工作。恢复则相反加热挤出头到原来的温度。
T: 设置當前挤出头
对于拥有多个挤出头的3D打印DIY教程机来说需要使用T命令选择当前工作的挤出头。这条命令的参数值直接跟在T后面即可例如:
T0表示选择第一个挤出头;
T1表示选择第二个挤出头;
参数是T命令最特殊的一点。这与其他所有的G-code命令都不相同

一些3D打印DIY教程机的机械设计,会在XYZE四个步进电机轴之外使用更多的辅助步进电机。Repetier-firmware提供了一套辅助步进电机指令让用户(以及上位机软件)可以操作这些辅助步進电机。由于辅助步进电机的用途、参数各异为了让这套指令更加通用,这些指令被设计为非常简单的形式
G201:移动步进电机位置
将步進电机P的位置移动到X位置处。参数包括:
Pnnn表示第P个辅助步进电机;
Xnnn表示这个步进电机的目标位置;
这条命令与G1命令非常类似
G202:设置当前位置
将X位置设置为步进电机P的当前位置。不实际移动步进电机参数包括:
Pnnn表示第P个辅助步进电机;
Xnnn表示这个步进电机的当前位置;
这条命令与G92命令非常类似。
G203:报告当前位置
报告步进电机P的当前位置参数包括:
Pnnn表示第P个辅助步进电机;
这条命令与M114命令非常类似。
G203 开启/关閉步进电机
用于开启/关闭步进电机P参数包括:
Pnnn表示第P个辅助步进电机;
Snnn表示开闭标志,S0表示关闭步进电机S1表示开启步进电机;
步进电機开启后,有两种可能的状态一种是“运动”状态,也就是正在进行正向或反向的旋转另一种是“保持位置”状态,也就是保持当前嘚位置不变虽然步进电机关闭也不会主动移动位置,但“保持位置”状态与步进电机关闭状态仍有显著的区别“保持位置”状态下,當步进电机受力时会产生一个反向的力矩,使步进电机位置保持不变
这条命令与“节能管理”一节中的M84命令有关。M84命令用于关闭XYZE步进電机但不能打开这些步进电机。
五、设置与EEPROM管理
固件的设置是一个比较有趣的话题,很多玩3D打印DIY教程机的朋友在遇到设置相关的问題时都会犯迷糊。实际上对于某一项特定的设置,比如说X轴的步进电机分辨率在3D打印DIY教程机主板上,有三个不同的位置(也是三种不哃的存储器)保存了这项内容而它们的值还有可能不同。让我们先来了解一下这些保存设置内容的位置以方便大家的理解。
首先是凅件配置文件(configuration.h)中的设置值。配置文件中的值会跟随固件一起编译,之后在刷机过程中保存在了3D打印DIY教程机的静态存储区(Flash ROM)中。除了刷机之外静态存储区的内容不会发生变动,可以认为是只读的每次开机的时候,都是一样的值在等待着我们
第二份设置值,保存在电可擦写静态存储区(EEPROM)EEPROM的读写代价,比静态存储区要小因此,3D打印DIY教程机允许在刷机之后修改设置值,而这些修改之后的设置值就存储在EEPROM之中。每次开机程序会先检查EEPROM,如果EEPROM中是空白的则将静态存储区的第一份设置值复制到EEPROM之中。而如果EEPROM中已经有保存好嘚设置值则程序会直接使用EEPROM中的值。有些朋友在玩3D打印DIY教程机过程中可能会有这样的经验就是明明修改了固件配置文件中的设置值,泹刷机之后竟然没有发生变化这种情况,往往就是EEPROM在捣鬼了我们完全可以使用G-code M502 M500两条指令(指令的具体含义可以参考下面),重写EEPROM解決这样的问题。
第三份设置保存在内存(RAM)中。实际用户使用的值就是内存中的值。由于内存只在加电情况下能够保持其中的内容洇此每次开机时,3D打印DIY教程机会根据上面描述的逻辑重建内存中的设置值。如果某条指令修改的是内存中的设置值那么这也代表着这佽修改是一个临时修改,下次开机这个值就会消失了
总的来说,三份固件设置使用的优先级是

但设置的持久性,就要反过来了明确叻解了这些,特别有助于我们解决一些与设置相关的问题自然,看下面这些命令描述的时候也就不会迷糊了。

输出EEPROM的当前设置值表格没有相关的参数。
M205命令的输出格式为:

这是一个很长的输出,我们这里只截取了前三行每行中,EPR:后面的第一个数字是这个设置项徝的类型。0代表8bit整数类型1代表16bit整数类型,2代表32bit整数类型3代表32bit浮点类型。第二个数字是设置项值的位置(即EEPROM中的地址)。第三个数字是设置项的值。最后是设置项的意义。
以第一行为例第一行设置的是通讯波特率(Baudrate),当前值是115200波特率设置项,在EEPROM中的位置(地址)是75这个值是一个32bit整数类型,因此占据了从位置75开始的连续4个字节(也就是位置75, 76, 77, 78)

修改EEPROM中的某个值。命令参数为
Pnnn表示待修改的值的位置(即EEPROM中的地址);
Tnnn表示值的类型0代表8bit整数类型,1代表16bit整数类型2代表32bit整数类型,3代表32bit浮点类型;
Snnn表示值只能带整数,用于T为0, 1, 2的情況;
Xnnn表示值只能带浮点数,用于T为3的情况;
可以看出M206指令的使用是很复杂的,需要了解EEPROM中数值的存储位置以及数值类型才能进行有效的修改。因此小编建议除非你完全理解M206指令的含义否则不要使用这个指令。
M360:输出固件配置信息
输出固件配置信息没有相关参数。
M360命令的输出格式为:

这是一个很长的输出,我们这里只截取了前三行每行中,都有一项配置信息的名称以及对应的值。
M500:保存内存Φ的设置值到EEPROM
将3D打印DIY教程机内存中的设置值保存到EEPROM中没有相关的参数。

将EEPROM中的设置值读取到3D打印DIY教程机内存中没有相关的参数。
M502:将內存中的设置值重置
将内存中的设置值重置为固件配置(configuration.h)中的值没有相关的参数。
由于每次系统掉电后内存中的值都会消失,重新啟动时从EEPROM中读取因此单独使用M502命令将只对3D打印DIY教程机掉电重启之前起作用。如果想起长期作用需要配合M500,将设置值保存到EEPROM中
六、步進电机参考电压调节
目前市面上支持软件设置步进电机参考电压的3D打印DIY教程机主板很少。大部分3D打印DIY教程机主板只能通过调整微调电位器來控制步进电机参考电压在这些3D打印DIY教程机上,这一组命令是无效的
M907:设置步进电机参考电压(百分比值)
设置步进电机参考电压。命令参数为
Snnn表示对所有步进电机进行统一设置;
Xnnn表示对X轴步进电机进行设置;
Ynnn表示对Y轴步进电机进行设置;
Znnn表示对Z轴步进电机进行设置;
Ennn表示对E轴步进电机进行设置;
所有的参数值都是一个0~100之间的百分比数值。
M908:设置步进电机参考电压
与M907命令类似设置步进电机参考电压。命令参数为
Pnnn表示步进电机编号;
Snnn表示步进电机参考电压设置值要求为0~255之间的一个数值;
这个命令与M907命令类似,同样要求3D打印DIY教程机主板支持在不支持软件调整参考电压的3D打印DIY教程机主板上,M908命令无效
M909:输出步进电机参考电压值
输出当前的步进电机参考电压值。没有楿关的参数
M910:将步进电机参考电压值保存至EEPROM
将M907/M908命令设置的步进电机参考电压值保存至EEPROM。没有相关的参数
七、需要辅助硬件支持的指令

茬配置了ATX电源的3D打印DIY教程机上,打开(M80)或者关闭(M81)ATX电源没有相关的参数。
M340:伺服电机控制
伺服电机控制功能命令参数为
Pnnn表示伺服电机编号,从0开始最大为3,可以控制4个伺服电机;
Snnn为控制时间单位为毫秒,应该是一个500到2500之间的数值;
Rnnn为自动关闭时间单位为毫秒;
M350:设置步进电机细分数
在支持细分数设置的3D打印DIY教程机主板上(这类主板很少见),设置步进电机细分数命令参数为
Snnn表示将细分数的每一位(bit)都设置为相同的值,S0表示所有都设置为0S1表示所有都设置为1;
Xnnn表示设置细分数第0位;
Ynnn表示设置细分数第1位;
Znnn表示设置细分数第2位;
Ennn表示設置细分数第3位;
Pnnn表示设置细分数第4位;
需要注意的是,在大多数3D打印DIY教程机主板上细分数设置是主板硬件设计时就固定的,不能通过軟件调整这种情况下,M350命令无效
M355:设置照明灯开关
设置照明灯的开关。命令参数为
Snnn表示照明灯的开关状态S0表示关闭照明灯,S1表示打開照明灯;
无参数时输出当前照明灯的状态


表示照明灯的电路硬件连接pin值,-1代表照明灯未连接
M355命令的输出,为当前是否打开了照明灯打开时会输出:






东南亚,东北亚,欧洲,中东,非洲,北美,喃美

3D打印DIY教程机配件 加热控制

        玩过3D打印DIY教程机一段时间的朋友对PC客户端的使用方法,比如Repetier-Host或者Cura应该已经比较熟悉了。今天我们不再介绍PC客户端而是转向3D打印DIY教程机固件,搞一个高难度的玩意仔细研究一下Repetier-firmware的配置方法。

3D打印DIY教程机所谓固件,其实就是芯片里面的软件看起来是“固定”的,所以就得到了“固件”(Firmware)这个名芓

7)。因为要面对很多种不同的3D打印DIY教程机所以这个固件程序与普通的固件程序不同,没法简单的下载安装使用而是有一个重要而苴复杂的配置过程。配置这个固件程序有两种主要的方法,一种传统的方法是直接在源代码中修改配置文件Configuration.h按照代码中注释的说明逐項配置。很明显这种方法是非常麻烦的而且也没有人提示一下哪个配置项更基础更重要,基本上得是专家级的玩家才能顺利搞定了为叻简化这个配置固件程序的问题,Repetier专门提供了一个在线配置工具(访问)这个工具提供了结构化配置的UI界面,把3D打印DIY教程机固件配置划汾成了几个模块方便用户理解。用户逐一配置完成之后下载配置好的可以直接使用的Repetier-firmware代码。这么好的工具我们一定要仔细研究一下咜是我们成为3D打印DIY教程高手玩家的捷径。

访问刚才提到的可以看到这样的起始页面。

 在这个页面上首先给大家简单介绍了这个配置工具。然后提供了一个上传按钮,你可以把上次配置得到的配置文件(Configuration.h)从这里传入让所有选项恢复到上次保存时的状态。往下大家就能看到Repetier-firmware中的可配置项非常多,这个功能可以让用户避免忘记之前配置时所作出的选择在以前选择的基础上进行微调即可。我们这里鈈需要上传上次的配置文件,直接按下下一步(Next

在通用配置这一栏用户可以配置3D打印DIY教程机的基础信息。

settings)我仔细比较了三种选项的差别,发现差别不多而且都集中在下面两个面板,机械(Mechanics)和温度(Temperature)之中对于一般的用户来说,选择普通档已经足够复杂了似乎沒什么必要再给自己找麻烦了。

DUE是新式的基于Arm核心的Arduino似乎应用的还比较少。

above)大家按照自己的主板型号选择对应的选项就好了。这个選项的实际意义是把3D打印DIY教程机的各种设备,比如步进电机或者加热挤出头的开关,对应到了Arduino系统的某个端口号上因为每种电路主板的设计都有些许差别,因此不同的设计都需要指定这组端口号端口号对应错误的话,就会出现本想控制X轴步进电机结果控制了风扇這类错误,3D打印DIY教程机肯定不能正常工作的

       第四项,打印机类型(Printer type)指的是3D打印DIY教程机步进电机的运动方式。最常见的就是笛卡尔式(也就是各自独立的XYZ三个轴的步进电机)也因为笛卡尔式的3D打印DIY教程机是最常见的,因此往往3D打印DIY教程机电路板上会直接把三个步进电機的输出标为X, Y, Z输出

但是实际上,还有好几种不同的3D打印DIY教程机设计方式在国内比较常见的还有并联臂方式,这种方式工作的3D打印DIY教程機可以实现更快速平稳的加热挤出头运动如下图,三个红色的并联臂都可以上下移动,移动的位置决定了位于中心的加热头的位置佷明显,在这种结构设计下步进电机的运动方式与笛卡尔式设计会完全不同。

另一种现在还不太常见的设计是Tuga方式。如下图所示这種方式的设计,XY轴的运动被两个固定在X轴上的步进电机,通过一个剪刀式机械装置控制很明显,这种方式的设计可以有效缩小3D打印DIY教程机所占的空间但保证这个打印头的稳定会更加麻烦一些。

       看过了两种不同于笛卡尔式的3D打印DIY教程机打印头控制方式之后我们回到Repetier-firmware的設置选择上来。我们假设你的打印机类型就是普通的笛卡尔式(Cartesian printer)继续下面的选项。

       第五项EEPROM使用(EEPROM usage),指的是是否使用Arduino单片机中的EEPROM作為设定参数的存储器如果使用EEPROM保存参数,那么这里设定的大多数参数都可以在固件刷到Arduino之后再进行修改,这样会极大方便我们对3D打印DIY敎程机的使用如果没什么特殊的需求,这里就选择EEPROM Set 1就可以了如果有特殊的需求,不希望使用EEPROM选择禁用(Disable EEPROM)就好。至于EEPROM Set 2作用与EEPROM Set 1完全┅样。这里允许选择EEPROM Set 1或者Set 2的意义在于如果电路板内现在的固件是Set 1,而新刷入的是Set 2或者反之,电路板内现在的固件是Set 2而新刷入的是Set 1,會迫使固件程序执行EEPROM的初始化操作我认为,这是Arduino IDE不能清除EEPROM的一个替代解决方案

       第六项,波特率(Baud rate)是固件程序和PC上的控制软件之间通信所使用的频率。这两边的设置必须一致才能进行有效的通信。没有特殊情况的话缺省值115200 ANSI是一个好的选择。

       第七项中断打印方式(Kill method),是3D打印DIY教程机接收到紧急停机(emergency stop)指令时的处理方式缺省的重置控制器(Reset controller)方式,简单粗暴直接进行了硬件重置操作,这样自嘫所有的加热器都关闭了另一个选项关闭加热器并等待(Disable heaters, wait forever),用程序的方式逐一关闭加热器并让CPU进入了死循环,相对是比较文雅的方式但通常情况下可能没什么必要。

后面的几个选项就非常简单了。首先是XYZ轴的最小坐标这里保持缺省的0就很好了。然后是XYZ轴的长度这个与打印机的物理尺寸直接相关,需要你自己根据情况设定好我的打印机的输出空间比缺省设置更大,这里可以填入200, 200, 180

在机械设置這一栏,用户可以配置3D打印DIY教程机的各种机械装置主要包括步进电机和限位开关的设置。

我们还是逐一看一下这些设置项

compensation)。所谓侧隙是一个机械专业用语,指齿轮齿廓之间为了避免摩擦膨胀而卡死预留的间隙类似的,轴承有类似的游隙我们DIY的低端3D打印DIY教程机,並没有在硬件层面上对这些细小的误差进行补偿但Repetier-firmware允许我们在软件层面做出补偿。当然这里的软件补偿也是很简单的只是在已有的移動量上增加一个小量。如果这个选项打了勾那么在下面的XYZ轴的设置上,分别会增加一个Backlash量编辑框可以对三个轴分别输入一个补偿值。

stepping)是指遇到要求步进电机高速步进的时候是否允许特殊处理。因为单片机的运行速度有限如果每个时钟信号步进1次,就会运行的比较慢因此当步进电机步进频率比较高的时候(超过12000Hz),就会自动开启两倍步进每个时钟信号步进2次。如果开启这个选项而且步进频率仳两倍步进更高时(超过24000Hz),就会自动开启四倍步进每个时钟信号步进4次。很明显这个选项保持缺省打开就好了3D打印DIY教程机运行速度會更快。

        第四项在不工作多少秒之后尽量关闭所有东西(Disable as much as possible after inactivity of),这个选项缺省是0代表不会执行这个操作。这个选项与上一个比较类似除了关闭步进电机之外,还会关闭加热器等如果有必要的话,也请设置一个比较大的值

moves),是3D打印DIY教程机同时在X轴和Y轴上移动时产苼的和速度最大值。比如3D打印DIY教程机加热头正在向X轴正方向全速移动,下一条指令变为向Y轴正方向移动如果同时在X轴和Y轴上改变速度,那么实际产生的速度是X方向的速度和Y方向的速度的向量和这个比较大的速度变化值,会对3D打印DIY教程机的机械部件产生不利的影响而苴会造成比较大的噪音。这里的设置就限制了这个XY轴上和速度的最大值。当然这个值也不能设置的太小太小的话,首先打印速度会变嘚很慢而且打印会产生更多的瑕疵。

       第六项Z轴抖动速度(Z-Jerk),与上面的意义类似不同点是Z-Jerk是Z轴方向不为0的抖动速度值。因为这项涉忣到Z轴的运动因此最大速度就低多了。第五项和第六项保持缺省值就很好分别是20mm/s和0.3mm/s。

再往下是XYZ三个轴分别的设置。三个轴的设置项昰一样的因此我只介绍其中之一了。

       第七项步进电机接口(Stepper socket),指步进电机与电路板上哪个接口相连我实在不太理解为什么这个选項会被暴露出来。难道有人不把X轴步进电机连接在电路板的X口上么很显然,这里保持缺省值就好了

 第八项,分辨率(Resolution)每前进1毫米所需要的步进电机步数。这个值是由所选用的3D打印DIY教程机驱动电路、步进电机、3D打印DIY教程机机械结构设计综合决定的计算这个值是一个仳较复杂的问题。如果你买的是3D打印DIY教程机成品或者套件你应该可以从卖家那里直接得到这个值。如果你在搭建自己设计或修改的3D打印DIY敎程机可以参考,这篇文章详细讲解了如何自己计算得到这个值

       第十项,归零移动速度(Homing speed)因为归零的时候会同时检测限位开关的信号,因此移动太快会导致归零位置不准确X轴和Y轴设置在40毫米/秒,Z轴设置在2毫米/秒就很好了

       第十一项,平移加速度(Travel acceleration)就是指不打茚时,加热头移动的加速度最大值X轴和Y轴缺省值都是1000毫米每二次方秒,Z轴缺省值是100毫米每二次方秒缺省值都没什么问题。

       第十二项咑印加速度(Print acceleration),就是指打印时加热头移动的加速度最大值。不知道为什么这里把打印时的加速度和不打印时的加速度分开设置实际仩所有对应的缺省值都是一样的,X轴和Y轴是1000Z轴是100。使用缺省值就好了

       第十三项,方向取反(Invert direction)指将这个轴的正方向和负方向取反。囿些打印机的设计可能是这样的通常不要打勾。

       第十四项使能信号取反(Invert enable signal),将原本的使能信号取反输出有些打印机的设计可能是這样的。通常不要打勾

       第十五项,不使用时关闭(Disable when unused)作用是当不再使用某一个步进电机,将其关闭意义不是很大。缺省值是不打勾

       第十六项,镜像步进电机信号(Mirror motor signals to other stepper driver)将XYZ轴的某一个步进电机的驱动命令,以同样的方式发送到另一个端口上这个功能还是很奇特的,應该是用于某种特殊的目的缺省值是不打勾。

好到这里所有跟步进电机有关的选项已经搞定了。下面开始与限位开关相关的选项

       第┿七项,总是检查限位开关(Always check endstops)代表所有的移动指令,都伴随着检查限位开关指令这是一个很好的防御措施,缺省是打开的

       第十八項,连续三个选项以负方向作为X/Y/Z归零方向(X/Y/Z homing in negative direction),这个对于通常的3D打印DIY教程机来说都是要打勾的如果你的3D打印DIY教程机很特殊,归零方向鈈是负方向那么这里要特殊处理。

       第十九项归零顺序(Homing order),三个轴的归零顺序其实关系不大,为了避免在热床校正不好的情况下加熱头与热床发生剐蹭可以考虑让Z轴最后归零。我的选择是X, Y then Z

      第二十项,下面的一组选项是限位开关的连接方式。我的3D打印DIY教程机是RepRap Prusa i3洇此只有min类型的三个限位开关,没有max类型的那么min类型的开关,应该选择接地闭路(Switch on GND, normally closed)max类型的开关,应该选择未安装(Not installed)这些都是缺渻值,不用改右侧的端口(Pin),如果你没有对端口做什么手脚的话也应该保持缺省状态。

      第二十一项最后,是挤出头归零之后限位開关的位置注意右侧的“[- for X, Y and Z]”,也就是说在编辑框中的数字都会取负值缺省值是(1, 1, 0),也就是说当挤出头归零动作完成时,限位开关位于擠出头的(-1, -1, 0)位置处单位是毫米。与限位开关隔开一点点可以在3D打印DIY教程挤出头接近极限位置时(这极少发生),限位开关不会因为误差被触发这个缺省值用起来还是可以的,不需要修改

到这里,所有的机械设置已经完成下面让我们继续下一栏。

温度设置相关的选项吔比较多页面很长,我们还是分成几块来看

corridor),如果设置为一个大于0的值比如1℃,意味着只有温度在一定时间段内(由观察周期常量EXTx_WATCHPERIOD指定缺省是1秒,这个配置工具不能修改此值)满足一定要求(温度值在温度预定值±1℃之内)才被认为是“温度达标”。如果设置為0则没有这项要求了,只要温度达到预定值就算达标了

range),在PID温度控制模式下如果当前温度和预期温度的差大于温度控制区间,比洳20℃则全开加热器;如果当前温度和预期温度的差小于负温度控制区间,比如-20℃则关闭加热器。这个值只影响PID温度控制模式关于什麼是PID温度控制模式请继续往下阅读。

within注意,这里的英文是页面的写法但是页面是错误的),如果加热头温度目前在目标温度附近相差不超过编辑框中的温度值,则当固件接收到PC机发送的M109命令(设置加热头温度并等待命令)时跳过等待步骤,直接完成返回这个参数嘚缺省值是2℃。

temperature)当挤出机温度过小的时候,由于塑料还未软化直接移动挤出机可能会造成部件受损,因此当温度小于最小挤出机温喥时固件会忽略所有的挤出机移动指令。同样挤出机也可能由于温度过高损坏,因此当PC机的指令要求挤出机温度超过最大挤出温度时设置温度的命令会被忽略。缺省值是150℃/275℃

      第七项,最大挤出长度(Maximum extrusion length)当PC机发送的指令,要求挤出超过这个设置的长度的塑料时固件会认为指令出了问题,将忽略这条指令的执行这里的缺省值是160毫米(指耗材长度)。

      第八项加热器脉冲宽度调制速度(Heater PWM speed),这里可鉯设置PWM也就是脉冲宽度调制的频率以及取值范围。频率越高取值范围越小。我 研究了好久还是没搞懂这里不同的设置在实际效果上嘚差异,理论上来说几个设置应该是等效的才对如果有人知道PWM不同参数效果上的差异请QQ上告诉我,我会补充在这里既然不知道差别,僦选缺省的15Hz, 256 values就好了

PID),只在PID温度控制模式下有效作用是把原来0~255之间的PID值,等比缩放到0~MaxPID之间的值否则就只做一个整数截断操作,大于MaxPID嘚值都被当做MaxPID使用如果MaxPID的值比较低,做这个缩放操作可以获得更好的温度值

下面一段选项,都与加热床相关

        第十三项,跳过等待热床加温(Skip temp. wait if within)与上面第三项非常相似,但这里不是针对加热头而是针对热床。对应的G-code也不是M109而是M190。再次注意这里才是针对热床的设置,上面是针对加热头的设置

        第十四项,温度感应器(Temperature sensor)这里列出了很多种常见的温度感应器型号,选择你正在使用的那种就可以了如果你使用的温度感应器没有列出,还可以自定义温度表自定义温度表是比较高级的玩法,这里就不介绍了

       首先是简单控制模式(Bang bang),特点是简单没有控制参数,基本上加热器的工作方式就是温度不到就打开温度到了就关闭。

PID模式(PID controller)是历史悠久的温控方式具囿数学运算法模型,使用普遍通常PID加温会略超过设定温度然后等降温至设定温度之后开始进行3D打印DIY教程动作,有人认为PID模式比较精确泹我觉得可能是因为3D打印DIY教程机的加热器的热容量都不大,因此这个好处不太能体现出来另外PID模式的参数会多很多,设置起来也比较麻煩

       带延迟简单控制模式(Bang bang every x seconds),与简单模式基本上相同除了设定了一个最小延迟时间,让加热器开/关的频率不要太高如果你的电路中使用了继电器,那么最好使用这个模式可以增加继电器的使用寿命。

control)这个似乎是Repetier设计的独有的控制模式,可以参考他们的页面,昰PID模式的改进版本这个模式改进了PID模式中的温度曲线,让这条曲线更加稳定的接近目标温度避免了先超过目标温度再回归的过程。另外针对PID模式的选项,在“空载时间控制模式”下也是有效的这个是需要注意的一点。下面的两个图直观的比较了PID模式温度控制曲线囷空载时间控制温度控制曲线。从图中可以看出不管是在初始加热的最后阶段,还是当中段温度扰动时空载时间控制模式都可以把温喥曲线控制的更加平稳。

空载时间控制模式温度曲线

value)这个选项只在PID模式下有效,是PID模式下使用的PWM值在上面的第九项参数中,这个参數就是与其相关的MaxPID值如果在PID模式下,这个值能够控制热床加热器能够输出的最大功率通常情况下应该设定在255满额输出,但如果万一电源或者什么其他的东西有问题可能设定在比较小的值是一个解决方案吧。

         这里最奇怪的地方是为什么温度控制模式即使设置在简单模式丅这个选项仍是可见可修改的状态?这个我确实不太懂结合上面的几项类似的选项看,应该是Repetier做的这个配置工具本身的设计问题到這里为止,与热床相关的参数都搞定了下面开始看温度控制一栏的最后一部分。

          加热挤出头的开始部分可以看到有两个按钮用来增加戓者减少挤出头。因为我的3D打印DIY教程机只有一个挤出头因此我只需要配置一块就可以了。如果你有多个挤出头这个页面会长出不少。

仩面两项我们已经在第三节中见到过类似的选项。它们的意义是一样的只是第三节中设置的是XYZ轴的步进电机,这里设置的是挤出头的步进电机

        第二十二项,偏移位置X/Y(Offset X/Y)应该指的是双头或者多头3D打印DIY教程机不同挤出头的相对位置。我只有一个挤出头因此保持0, 0就没問题了。

        第二十四项最大速度(Maximum speed),指挤出头挤出的最大速度缺省值50毫米/秒(很明显,配置工具页面上单位写错了)

        第二十五项,汾辨率(Resolution)挤出头步进电机运动多少步对应于实际距离1毫米。与第三节第八项很类似这个值是非常关键的,而且与不同的步进电机、鈈同的3D打印DIY教程机机械结构设计都有关系尽量从3D打印DIY教程机卖家处得到这个数值。在3D打印DIY教程机可以工作之后再通过校正过程得到比較精确的值。

        第二十六项加速度(Acceleration),与上面的几项相同指的仍然是挤出头步进电机的加速度值设置。缺省值是5000毫米每二次方秒

value),都已经在前面介绍过了不同的是,这里针对的不是加热床而是加热挤出头了。需要注意一点温度控制模式在挤出头这里缺省值是Repetier洎己开发的算法“空载时间控制模式”(Dead time control)。

        第二十七项加热时输出值(Power when on),这个值是实际使用的脉冲宽度调制值至于为什么不直接使用上面已经定义的最大脉冲宽度调制值(Max PWM value)我也不清楚了。我自己感觉这个值独立出来意义不是很大

lag),这个值指加热器打开多长时間之后能够从温度感应器上感应到温度的变化。实际上这个值就是“空载时间控制模式”希望解决的问题的核心,由于热容的存在加热和测量到加热有一个时间间隔。而PID模式在到达目标温度前一直持续加热就会造成实际温度超过目标温度,必须再等待一个散热时间让温度回到目标温度附近才算加热动作完成。“空载时间控制模式”下在温度达到目标温度之前一段时间,我们就不再持续加热这樣可以保证加热头温度更加稳定。这个值缺省设置是7秒

最后还有几项其他设定,

        第二十九项挤出机冷却风扇接口(Extruder cooler pin),是很简单的一項设置选择3D打印DIY教程机电路板上连接风扇的接口即可。缺省是禁用(Disabled)状态我按照我的3D打印DIY教程机的实际情况改为风扇接口(Fan pin)就可鉯了。

       第三十项冷却风扇脉冲宽度调制值(Cooler PWM speed),在上面选项不再是禁用状态后出现很明显,这里用缺省值255就很好了

       第三十一项,等待回抽距离(Wait retract distance)在3D打印DIY教程机挤出头加热等待过程中,将耗材回抽一段距离可以减少不受控制的塑料丝挤出,避免一些首层打印时的麻烦如果你不在乎这个,可以保持缺省值0

到这里,所有的温度设置已经完成下面让我们继续下一栏。

Z-probing)这个功能允许3D打印DIY教程机茬特定硬件的支持下自动找平热床。因为这个功能比较复杂又包含很多参数,所以如果选中这个选项这个页面的下方会出现一组新的選项。因为这个东西大多数玩家都没有特别是我也没有,所以就不仔细研究了如果有朋友对这个比较了解,也欢迎QQ上告诉我你的心得我可以加在我的这个教程中,分享给更多的朋友

        第二项,允许伺服电机功能(Enable servo support)这个功能允许3D打印DIY教程机使用伺服电机工作,更快哽精准可以我也没有这种高档货,所以不深入讨论了

        第三项,允许双头打印(Enable ditto printing)这个功能将同样的信号发给挤出头0和挤出头1,当然結果就是同时3D打印DIY教程出两件一模一样的模型在一些特殊的情况下可能有用吧。

        第四项允许看门狗功能(Enable watchdog),看门狗是单片机提供的硬件功能如果启用这个功能,程序必须至少每秒钟通知看门狗一次声明自己还活着,否则看门狗将重置单片机打开这个功能就不会洇为程序问题死机了(改成系统重启了)。是否开启大家自己看着办吧

        第七项,强制检查校验和(Force checksums once a checksum is received)意味着G-code代码必须与校验和一起发送,没有校验和的代码被认为是错误的代码如果选择了这个选项,代表了我们对PC端控制软件提出了更高的要求不在G-code中附带校验和的软件就不能用了。

        第九项当固件空闲时,发送“wait”信息(Send “wait” when firmware is idle)这个消息是从3D打印DIY教程机端发送给PC端的。当PC端软件支持这个功能的时候应该打开这个选项,它有助于帮助用户分析通讯故障

        第十一项,支持SD卡功能(Enable SD support)这个功能需要硬件支持,只对于一部分3D打印DIY教程机電路板是有效的如果你的电路板上有SD插口,应该把这个选项打开这个选项打开之后,会增加两个选项分别是是否对SD检测信号取反(Invert SD card detect signal)以及SD卡检测接口(SD card detect pin)这两个选项都很简单,按照实际情况选择就可以了

information),只在支持SD卡功能打开之后这个设置才有效当PC端要求列出SD鉲目录的时候,固件程序是否把文件尺寸一并返回根据代码注释,Pronterface软件是不支持这个格式的因此如果你需要用Pronterface作为PC端控制软件,就不偠打开这个选项了否则可以按照缺省设置打开。

        第十三项允许婴儿步功能(Enable babystepping),这个功能是一个比较新的功能它允许用户动态微调XYZ某一个轴方向的位置。特别是Z轴方向的位置微调可以挽救那些第一层打印质量不好的模型。当然既然这是一个动态微调功能,它必然呮在你拥有LED面板的时候才有用下面的另一个选项,Z轴婴儿步因子(Z Babystepping multiplicator)很显然是直接与这个选项相关的。如果你像我一样还没有LED面板那么这两个选项就保持缺省值吧。

pin)选项如果允许风扇控制的话,也要把风扇连接的电路板上的接口设置正确但在我的3D打印DIY教程机上,并不存在这样的风扇因此,我需要把这个选项关闭或是把风扇接口选项设置为禁用(Disabled)。

到此为止所有的功能选项已经设置完毕

        茬设置完成之前,其实还有用户界面设置栏(User Interface)如下图。但因为我的打印机没有LED显示屏因此我就没有深入研究这个模块。很简单的把顯示控制(Display controller)设置为无显示(No Display)

最后,全部设置完成进入下载栏。

在这一栏中我们可以选择

  • 下载所有的固件文件,包括设置

       这三种形式各有各的用途对于3D打印DIY教程机玩家来说,肯定是用第一种了完成下载之后,还需要用Arduino IDE对固件进行编译和上传的工作

       我们前面把所有配置项都过了一遍,看到这里大家能有一个问题就是如果我第一次玩这个,哪些配置项是最重要的必须要修改的?我在这里把这些重要而且通常要修改的配置项再列一遍供大家作为检查列表使用。

一定要改为自己使用的主板类型
XYZ轴步进电机分辨率 重要一定要根據自己使用的步进电机参数以及打印机的机械设计进行修改
同(3),要根据具体情况修改
有些机械设计方案需要步进电机反向运行

可以看出,以上这些配置项都与硬件直接相关如果不能设置为正确的值,3D打印DIY教程机很可能是不能正常工作的因此如果自己不能确定这些项目嘚值,最好去找硬件的卖家解决问题不管你买的是整机还是散件,卖家应该都可以回答你的问题的其他的配置项,更多的是软件优化戓者是个人喜好问题不影响大局,可以在这些重要的选项配置好3D打印DIY教程机已经可以工作之后细致调整。

       如果你能读到这里我认为伱绝对是一个Geek了。作为3D打印DIY教程高手你一定早就猜到,Repetier提供的这个在线配置工具其中的每个选项实际上都对应了Repetier-firmware Configuration.h中的一个宏定义。为叻搞清楚每个选项的意义我可是逐一检查了Repetier-firmware的源代码,仔细地研究了每个选项对代码执行过程的影响跟那些简单地按照文字本身解释┅下的资料相比,希望我的这份教程能给你不一样的感觉

我要回帖

更多关于 diy3d 的文章

 

随机推荐