原文链接(QQ空间):https://user.qzone.qq.com/582760538/blog/1454561861
3D打印机(Prusa I2)DIY经验分享(Part II)
四、组装打印机电路(感谢:深海的小鱼儿
http://www.cnblogs.com/xmphoenix/)
1.软件下载
1.1 固件上传工具——Arduino 可以到官网下载。 http://arduino.org.cn/ 软件是免费的
1.2 3D切片软件——Slic3r 可以到官网下载 http://slic3r.org/ 软件是免费的
1.3 3d打印机控制软件(上位机)——Printrun 下载地址: http://koti.kapsi.fi/~kliment/printrun/ 选择一个版本下载即可
1.4 固件——Marlin 下载地址: https://github.com/ErikZalm/Marlin
2.安装驱动。。。安装Arduino之后就可以自动安装驱动了。。。
3. 配置固件
打开Marlin:
3.1 #define BAUDRATE 250000这是配置串口波特率的,只有上位机波特率和固件波特率相同来能通讯成功,一定需要注意。当然也不能随便改,常见的波特率为:2400,9600,19200,38400,57600,115200,250000。在3d打印机中常用的是后3个。
3.2 #define MOTHERBOARD 33 这个参数是配置板子类型的,3d打印机主控板类型非常多,每个板子的io配置不尽相同,所以这个参数必须要跟你自己的板子类型相同,否则无法正常使用。我的板子是RAMPS1.4版本,对应的配置应该为33(单打印头配置),和34(双打印头配置)。如果你使用的是其它板子,请参考旁边的注释并选择合适的配置。
3.3 #define TEMP_SENSOR_0 1
7.打开Printrun,开始测试
并且,左侧的图形操作区变为可以操作的颜色。勾上温度曲线旁边的watch选项,可以实时获取温度情况,如图。
7.1 查看温度是否正确
如果上面的操作都正确,你可以看到现在两个温度传感器的温度,并且温度应该为室温,手捏在上面可以看到温度的变化。如果你的温度读取到的为0度,请确保连接正确,依然有问题应检查固件中的相关参数。
7.2 测试三个输出端
接上12V电源,点击下图中标红位置的按钮,两个设置温度的按钮,一个风扇按钮(如果没有风扇打开按钮,可以在右侧输入M106 S255命令来实现)。如图:
如果这时RAMPS1.4上亮起了三个红色LED,那说明输出端测试成功。如下图:
7.3 测试电机及驱动
连接步进电机的4跟线到X轴电机输出端,如果你的电机导线颜色是标准颜色,可以用红-蓝-绿-黑的顺序连接,如果你的线颜色不标准或没有颜色区分,你需要通过电机说明书找到4跟线属于哪一相及哪一极,然后安装相B负-相B正-相A正-相A负的顺序连接(还有其它接线方式,请了解一下步进电机的原理)。(其实吧。。。如果懒就看图,按照我接线的颜色接线就好了)
7.3.1 xyz三轴电机测试
点击上位机左侧的手动操作区域,进行对xyz三轴的测试。如果只有一个电机测试完应该轴后,再插到另一个轴上。
1.软件下载
1.1 固件上传工具——Arduino 可以到官网下载。 http://arduino.org.cn/ 软件是免费的
![图片](https://i-blog.csdnimg.cn/blog_migrate/a8ae079a88524185ffc5fe67412003f1.png)
1.2 3D切片软件——Slic3r 可以到官网下载 http://slic3r.org/ 软件是免费的
![图片](https://i-blog.csdnimg.cn/blog_migrate/b636a1e79a2376e49c708797b800d899.png)
1.3 3d打印机控制软件(上位机)——Printrun 下载地址: http://koti.kapsi.fi/~kliment/printrun/ 选择一个版本下载即可
![图片](https://i-blog.csdnimg.cn/blog_migrate/02a90971f4bb545c8559271e1d23f064.png)
1.4 固件——Marlin 下载地址: https://github.com/ErikZalm/Marlin
2.安装驱动。。。安装Arduino之后就可以自动安装驱动了。。。
3. 配置固件
打开Marlin:
![图片](https://i-blog.csdnimg.cn/blog_migrate/644896eb7a6f6145cda1b05cf9db1af4.png)
3.1 #define BAUDRATE 250000这是配置串口波特率的,只有上位机波特率和固件波特率相同来能通讯成功,一定需要注意。当然也不能随便改,常见的波特率为:2400,9600,19200,38400,57600,115200,250000。在3d打印机中常用的是后3个。
![图片](https://i-blog.csdnimg.cn/blog_migrate/b216b2f6fa245cb15fe286cf8faa7fb9.png)
3.2 #define MOTHERBOARD 33 这个参数是配置板子类型的,3d打印机主控板类型非常多,每个板子的io配置不尽相同,所以这个参数必须要跟你自己的板子类型相同,否则无法正常使用。我的板子是RAMPS1.4版本,对应的配置应该为33(单打印头配置),和34(双打印头配置)。如果你使用的是其它板子,请参考旁边的注释并选择合适的配置。
3.3 #define TEMP_SENSOR_0 1
#define TEMP_SENSOR_BED 1这两个参数分别配置温度传感器的类型。这是读取温度是否正常的重要参数,如果读取的温度不正常将不能工作甚至有很大的潜在危险(烧毁器件等)。配置为1说明两个都是100K ntc热敏电阻。如果你使用了其它温度传感器需要根据情况自行更改。
3.4 #define EXTRUDE_MINTEMP 170 这个参数是为了防止温度未达到而进行挤出操作时带来的潜在风险,如果你做其它3d打印机,比如有朋友做巧克力打印机,挤出温度只需要45度,那么这个参数需要配置为较低数值,比如40度。
3.5 const bool X_ENDSTOPS_INVERTING = true;
![图片](https://i-blog.csdnimg.cn/blog_migrate/d674b7be4e9878c1656ca5586a98c13b.png)
3.4 #define EXTRUDE_MINTEMP 170 这个参数是为了防止温度未达到而进行挤出操作时带来的潜在风险,如果你做其它3d打印机,比如有朋友做巧克力打印机,挤出温度只需要45度,那么这个参数需要配置为较低数值,比如40度。
![图片](https://i-blog.csdnimg.cn/blog_migrate/1d05e98b40984d81dd56f52b09a6ed7e.png)
3.5 const bool X_ENDSTOPS_INVERTING = true;
const bool Y_ENDSTOPS_INVERTING = true;
const bool Z_ENDSTOPS_INVERTING = true; 这里的三个参数是配置3各轴的限位开关类型的,配置为true,限位开关默认状态输出为1,触发状态输出为0,也就是机械限位应该接常开段子。如果你接常闭段子,则将true改为false。
3.6 #define INVERT_X_DIR false
![图片](https://i-blog.csdnimg.cn/blog_migrate/868b2284ae4993cfc42bc627a140d07c.png)
3.6 #define INVERT_X_DIR false
#define INVERT_Y_DIR true这两个参数是比较容易错的。根据自己机械的类型不通,两个的配置不尽相同。但是原则就是要保证原点应该在打印平台的左下角(原点位置为[0,0]),或右上角(原点位置为[max,max])。只有这样打印出来的模型才是正确的,否则会是某个轴的镜像而造成模型方位不对。参考下图坐标。
3.7 #define X_HOME_DIR -1
![](https://i-blog.csdnimg.cn/blog_migrate/7a9c256054530e434da0263925bfdc3e.jpeg)
![图片](https://i-blog.csdnimg.cn/blog_migrate/ad49dc80bd4c81d5f035ea8fc46b50f4.png)
3.7 #define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1 如果原点位置为最小值参数为-1,如果原点位置为最大值配置为1.
![图片](https://i-blog.csdnimg.cn/blog_migrate/8174f1b968ea089cc63cd6944c3ec134.png)
3.8 #define X_MAX_POS 205
#define X_MIN_POS 0
#define Y_MAX_POS 205
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0 这几个参数是配置打印尺寸的重要参数,参考上面的坐标系图来填写,这里需要说明的是坐标原点并不是打印中心,真正的打印中心一般在[(x.max-x.min)/2,(y.max-y.min)/2]的位置。中心位置的坐标需要在后面的切片工具中使用到,打印中心坐标应该与这里的参数配置匹配,否则很可能会打印到平台以外。
3.9 #define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} 配置回原点的速率,单位为毫米每分钟,如果你使用的是xy轴同步带传动,z轴螺杆传动,这个参数可以使用默认值。
![图片](https://i-blog.csdnimg.cn/blog_migrate/920818290f18dcfa4087fe146c731d66.png)
3.9 #define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} 配置回原点的速率,单位为毫米每分钟,如果你使用的是xy轴同步带传动,z轴螺杆传动,这个参数可以使用默认值。
![图片](https://i-blog.csdnimg.cn/blog_migrate/1b668955a7bf8effd415d50eec9314cb.png)
3.10 #define DEFAULT_AXIS_STEPS_PER_UNIT {85.3333, 85.3333,2560,158.8308} 这个参数是打印机打印尺寸是否正确的最重要参数,参数含义为运行1mm各轴所需要的脉冲数,分别对应x,y,z,e四轴。多数情况下这个数字都需要自己计算才可以。
【补充】如何计算运行1mm各轴所需脉冲数?
如果是皮带传动:
如果是丝杆传动:
挤出机:
步进电机步数:1.8度步距角的电机为 200, 0.9度步距角的电机为 400
步进电机驱动细分配置: RAMPS默认为 1/16 etc
同步带齿间距 :对于T5为5.00mm , 对于XL为5.08mm ,对于GT2为2.0mm etc
同步轮齿数:问卖家。。。
丝杆导程:对于M8标准丝杆为1.25mm
挤出机齿轮比,从动轮比主动轮 :Wade's Extruder: 39/11, Accessible Wade's by Greg Frost: 43/10, Adrian's Extruder: 59/11, etc
这还有大神做的计算器: http://www.makerlab.me/calc/index.html
4.上传固件
4.1 上传之前,windows用户需要提前安装驱动。 配置板子类型:Tools > Board > Arduino Mega 2560
4.2 配置串口: Tools > Serial Port > 你的mega板子对应串口号一般是最后一个,如果是windows系统,串口号一般是com3、com4、com8之类的形式
4.3 点击对号按钮来检查是否有错误
4.4 再点击向右的箭头按钮来上传固件
4.5 上传过程中,2560板子上的TX RX 和L对应的三个led灯都会闪。如果不闪了,说明上传完成,如图
4.6 上传完成提示
5. RAMPS1.4板子的功能分布
6. 接线,准备测试
把电机驱动按图插上(如果插反了电路板就有可能烧坏),接上热敏电阻,限位开关,风扇。
用一个电机轮流测试
![图片](https://i-blog.csdnimg.cn/blog_migrate/3aff47b1b70b6d9c5950e73f524d7847.png)
【补充】如何计算运行1mm各轴所需脉冲数?
如果是皮带传动:
![](https://i-blog.csdnimg.cn/blog_migrate/21d4c42dfe9be59989f180b130ad8272.jpeg)
如果是丝杆传动:
![](https://i-blog.csdnimg.cn/blog_migrate/1e41dbaff24beb647ad97503312927a3.jpeg)
挤出机:
![](https://i-blog.csdnimg.cn/blog_migrate/3bd13c88a69f2b77fb06bcf65ac7595a.jpeg)
步进电机步数:1.8度步距角的电机为 200, 0.9度步距角的电机为 400
步进电机驱动细分配置: RAMPS默认为 1/16 etc
同步带齿间距 :对于T5为5.00mm , 对于XL为5.08mm ,对于GT2为2.0mm etc
同步轮齿数:问卖家。。。
丝杆导程:对于M8标准丝杆为1.25mm
挤出机齿轮比,从动轮比主动轮 :Wade's Extruder: 39/11, Accessible Wade's by Greg Frost: 43/10, Adrian's Extruder: 59/11, etc
这还有大神做的计算器: http://www.makerlab.me/calc/index.html
4.上传固件
4.1 上传之前,windows用户需要提前安装驱动。 配置板子类型:Tools > Board > Arduino Mega 2560
4.2 配置串口: Tools > Serial Port > 你的mega板子对应串口号一般是最后一个,如果是windows系统,串口号一般是com3、com4、com8之类的形式
4.3 点击对号按钮来检查是否有错误
4.4 再点击向右的箭头按钮来上传固件
4.5 上传过程中,2560板子上的TX RX 和L对应的三个led灯都会闪。如果不闪了,说明上传完成,如图
![](https://i-blog.csdnimg.cn/blog_migrate/c2c97716e92593fc32847e29ea86f059.jpeg)
4.6 上传完成提示
![](https://i-blog.csdnimg.cn/blog_migrate/d4355223fda62d3f758a1ed51628308c.jpeg)
5. RAMPS1.4板子的功能分布
请参考示意图,为了防止接错,请再三确认以下几个方面后再通电,
* 电源正负极是否正确?
* RAMPS电源只接12V,没有5V接入。
* 4988驱动板确保没有插错位和颠倒(如果差错,通电就会烧板子)。
* 机械式限位开关只需要将开关上的com端和NO端接到板子的S(信号线)和-(负)两个位置即可。千万不要尝试将机械开关的三个段子都接在板子上。很可能会造成短路。
![](https://i-blog.csdnimg.cn/blog_migrate/39625442947c86e259524b51fb1a8df3.jpeg)
6. 接线,准备测试
把电机驱动按图插上(如果插反了电路板就有可能烧坏),接上热敏电阻,限位开关,风扇。
用一个电机轮流测试
![图片](https://i-blog.csdnimg.cn/blog_migrate/6a6a39f9127eb251a07340760308b184.jpeg)
7.打开Printrun,开始测试
![图片](https://i-blog.csdnimg.cn/blog_migrate/edc707d8b5f5b3e5138e9df8c0bb8f4e.png)
并且,左侧的图形操作区变为可以操作的颜色。勾上温度曲线旁边的watch选项,可以实时获取温度情况,如图。
7.1 查看温度是否正确
如果上面的操作都正确,你可以看到现在两个温度传感器的温度,并且温度应该为室温,手捏在上面可以看到温度的变化。如果你的温度读取到的为0度,请确保连接正确,依然有问题应检查固件中的相关参数。
7.2 测试三个输出端
接上12V电源,点击下图中标红位置的按钮,两个设置温度的按钮,一个风扇按钮(如果没有风扇打开按钮,可以在右侧输入M106 S255命令来实现)。如图:
![](https://i-blog.csdnimg.cn/blog_migrate/717a6ee22cb3242cdb0a047fdeefa856.jpeg)
如果这时RAMPS1.4上亮起了三个红色LED,那说明输出端测试成功。如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/d6fbb19901eed9cd9f295c40bc683e44.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/8d0eff9bd954c357e1dc2d59724514b4.jpeg)
7.3 测试电机及驱动
连接步进电机的4跟线到X轴电机输出端,如果你的电机导线颜色是标准颜色,可以用红-蓝-绿-黑的顺序连接,如果你的线颜色不标准或没有颜色区分,你需要通过电机说明书找到4跟线属于哪一相及哪一极,然后安装相B负-相B正-相A正-相A负的顺序连接(还有其它接线方式,请了解一下步进电机的原理)。(其实吧。。。如果懒就看图,按照我接线的颜色接线就好了)
7.3.1 xyz三轴电机测试
点击上位机左侧的手动操作区域,进行对xyz三轴的测试。如果只有一个电机测试完应该轴后,再插到另一个轴上。
![](https://i-blog.csdnimg.cn/blog_migrate/408b6d234fa0804f0937f918de4eb01b.jpeg)
测试流程:
先电机某个轴的加+方向操作,电机应该往正方向运转; 再电机对应轴的负-方向操作,电机应该反转; 重复几次上面的操作。
需要注意的是,固件为了防止打印机撞车,小于最小位置和大于最大位置后电机就会停止运动。也就是说并不会一直加或减下去,电机都会转。
7.3.2 挤出机电机测试
由于固件不允许温度为达到最小挤出温度(固件中的参数)时执行挤出动作。所以如果你连接了真正的挤出机,并且有物料在里面,请不要在温度未达到230(abs)和185(pla)时进行挤出机测试。
7.4 限位开关测试
至此,电路的测试结束。
8.Slic3r配置需要注意的地方
先打开Slic3r,我用的是简易设置。。。
8.1 先看看Slic3r的界面
8.2看看菜单栏
8.3打印设置窗口
层高的设置,一般比打印挤出头的尺寸要小。
8.4 filament setting窗口
注意设置线材的直径(如果不知道问卖家,一般是3.00mm和1.75mm两种尺寸)
还有挤出机温度设置,热床温度设置,要注意一下。
pla一般是在185℃,热床一般是在60℃。
8.5 打印机设置窗口
工作台尺寸要如实填写。。。不然有可能会打印到工作台外面。。。
打印中心就是工作台的中心,除以2计算一下就可以了
设置完之后建议导出一份备份。
到这,打印机就已经组装完毕了。
剩下的就是不断的调试与整理。
P.S. 把STL格式的文件添加到Slic3r中生成G代码,然后再在Printrun中载入G代码,单击print就可以开始打印了。
7.3.2 挤出机电机测试
由于固件不允许温度为达到最小挤出温度(固件中的参数)时执行挤出动作。所以如果你连接了真正的挤出机,并且有物料在里面,请不要在温度未达到230(abs)和185(pla)时进行挤出机测试。
![](https://i-blog.csdnimg.cn/blog_migrate/85ba1175ef66ac8d7fbbfbed5ac87460.jpeg)
测试方法:
1、将温度加热到物料对应的挤出温度,PLA:185度,ABS:230度,再进行测试,电机Extrude为挤出动作,Reverse为后退动作。如果所需要的方向跟实际方向相反,直接把所有的4跟电机导线反向即可。
2、如果你没有接挤出机,或挤出机中没有物料,可以不需要进行加热来测试。需要在右侧命令输入框中输入M302来允许冷挤出操作。这样就可以跟上面一样进行Extrude和Reverse测试了。
7.4 限位开关测试
RAMPS1.4最多共支持6个限位开关,分别是X-min,X-max,Y-min,Y-max,Z-min,Z-max。其中至少需要用到3个来确定打印机的原点,可以是一个轴的min或max位置的限位(由固件中做配置)。限位开关根据不同的形式接线方式也不同,机械式的限位开关只需要连接两个段子即可(负和信号),光电、霍尔式开关一般需要连接三个段子(正、负和信号)。
我这里测试用3个轴的min位置来做原点的配置方式。测试限位开关应该接在各轴的min位置上。然后电机测试轴的home按键,对应轴的电机应该开始转动,然后按下对应轴的限位开关两下(为了提高精度,碰到一次后返回几毫米再碰到才是真正的原点),此时电机应该停止转动。以上操作重复在其它轴上进行测试。
至此,电路的测试结束。
8.Slic3r配置需要注意的地方
先打开Slic3r,我用的是简易设置。。。
8.1 先看看Slic3r的界面
![图片](https://i-blog.csdnimg.cn/blog_migrate/9d27123c332387dd5612bb19a22f9160.png)
8.2看看菜单栏
![图片](https://i-blog.csdnimg.cn/blog_migrate/c79bf997f11f5c050391b0ad33a24984.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/f4b0eb8d4115ba4be2dda377089c9d01.png)
8.3打印设置窗口
层高的设置,一般比打印挤出头的尺寸要小。
![图片](https://i-blog.csdnimg.cn/blog_migrate/fba3ba6877ff5b828b092fb49e29e895.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/207f0c4c092b6af123759ac4213e3f99.png)
8.4 filament setting窗口
注意设置线材的直径(如果不知道问卖家,一般是3.00mm和1.75mm两种尺寸)
还有挤出机温度设置,热床温度设置,要注意一下。
pla一般是在185℃,热床一般是在60℃。
![图片](https://i-blog.csdnimg.cn/blog_migrate/4e59c021ad7fc793947533086956aef7.png)
8.5 打印机设置窗口
工作台尺寸要如实填写。。。不然有可能会打印到工作台外面。。。
打印中心就是工作台的中心,除以2计算一下就可以了
![图片](https://i-blog.csdnimg.cn/blog_migrate/e5ee8ec08016e94fc6fb793589b957f8.png)
设置完之后建议导出一份备份。
到这,打印机就已经组装完毕了。
剩下的就是不断的调试与整理。
P.S. 把STL格式的文件添加到Slic3r中生成G代码,然后再在Printrun中载入G代码,单击print就可以开始打印了。