iMaker 3D打印机Marlin固件编译以及故障排除

几年之前买的一台 `iMaker` 3D打印机,已经在角落里面落灰许久了,本质上是一台  `Ultimaker v1.5.7`硬件的机器,因此使用 `Ultimaker` 的软件跟固件都是没有问题的。貌似这家公司现在已经快不行了的样子。 官网都已经打不开了。

具体信息如下:搬家之前,由于房间空间限制,已经在角落里落灰许久了。最近搬完家,有地方折腾了,打算打印几个小物件玩玩。可是实际运行时候发生打印严重变形的问题。具体的表现就是Z轴上(也就是高度方向上)发生严重的拉伸现象,整个打印物体的高度被拉伸,比如那个自带的三厘米左右的小机器人,被莫名拉伸到十几厘米,导致结构松散,严重变形,易碎。刚刚开始以为是升级固件导致的问题,但是还原到以前可以正常使用的固件,问题依旧。以为是USB通讯导致的问题,使用SD卡打印的效果依旧是这个样子。一时间毫无头绪。于是准备拆开看看硬件部分是不是损坏了。结果发现 Z 轴控制器中的一个跳线帽丢了! 如下图:
底部电路
Z轴部分跳线

从上图可以看到 Z 轴的 MS3 位置的跳线帽丢了。根据说明,这个跳线帽插上之后是 1/16 细分,否则是1/8细分,相当于把 Z 轴的下降速度提升了一倍!

这个设备使用的是开源的 `Ultimaker v1.5.7` 的电路图,大家可以在本站下载到 Arduino MEGA Ultimaker Shield SchArduino_MEGA_Ultimaker_Shield_v1.5.7

更详细的内容参考 Ultimaker's v1.5.7 PCB

正常的跳线状态,如下图所示:

找了个跳线帽插上之后,恢复正常。

由于这个板子是使用的官方的电路图进行了简单的修改,因此应该可以直接刷官方的 MarlinUltimaker 固件的,但是使用官方提供的 MarlinUltimaker 固件之后,加热床失效了。无论如何都不能加热。

看了一下官方的固件代码,发现默认情况下,加热床是关闭的。也就是官方提供的固件默认是没有加热床的(源代码的 Configuration.h,中 `#define TEMP_SENSOR_BED 0` 我们需要根据实际情况修改,一般修改为`#define TEMP_SENSOR_BED 1` 即可。但是如果是某些特殊品牌的,根据 Configuration.h 里面的说明进行修改)。因此我们只能自己从官方固件代码修改之后重新编译。

iMaker自带的热床没有牌子,一般是 4.7K 的上拉热敏电阻。因此定义 `#define TEMP_SENSOR_BED 1` 即可。

编译方法

1.下载一份最新的代码,Linux下命令行操作如下:

$ git clone https://github.com/Ultimaker/Marlin.git

$ cd Marlin

$ git checkout Marlin_v1

$ cd Marlin

# 增加加热板的支持
$ sed -i "s/^#define[ \t]*TEMP_SENSOR_BED*/#define TEMP_SENSOR_BED 1/g" Configuration.h

# 注意 Z 轴使用的丝杆参赛需要自己调整,我这边是
# 42步进 1.8度 16细分 4头 螺距 2MM 因此应该修改为 400
# 参数顺序为 X轴,Y轴,Z轴,送料机 iMaker需要调整Z轴,送料机
# 注意 送料机部分
# 42步进 1.8度 16细分 大齿轮 49齿 小齿轮 8齿 挤出杆直径8MM 
# 计算方式为 
# e_steps_per_mm = (motor_steps_per_rev * driver_microstep) *(big_gear_teeth/small_gear_teeth)/(hob_effective_diameter * pi)
# 步进电机每转步数 * 驱动电路细分 * 大齿轮齿数 /小齿轮齿数 / 挤出螺杆直径 / PI
# 也就是 360/1.8*16*(49/8)/(8*3.14256) = 635.668 
# 由于材料的限制,材料的直径误差,气泡等,需要增大一定的余量,一般我们增加1%-10%左右的余量
# 余量太大会导致材料磨损
# 注意,这个设置更偏向经验值,比如PLA材料在670附近的时候就已经差不多了,而ABS材料差不多要670*110%的样子,
# 这个值可以在Cura的流量设置选项中进行动态调整
$ sed -i "s/^#define[ \t]*DEFAULT_AXIS_STEPS_PER_UNIT*/#define DEFAULT_AXIS_STEPS_PER_UNIT \{78.7402,78.7402,360\/1.8*16\/4\/2,670\}/g" Configuration.h

# 默认情况下不允许软件调整打印头散热风扇的转速,打开 FAN_SOFT_PWM 可以开启软件控制风扇功能,
# 在 iMaker 使用的 Ultimaker 1.5.7版本硬件上使用 FAN_PIN = 7 这个管脚可以使用PWM 
# 下面的操作是 去掉 #define FAN_SOFT_PWM 前面的注释
$ sed -i "s/^\/\/#define FAN_SOFT_PWM/#define FAN_SOFT_PWM/g" Configuration.h

Windows 下可以浏览器直接下载最新代码 https://codeload.github.com/Ultimaker/Marlin/zip/Marlin_v1,然后手动修改 Configuration.h 文件,参考 Linux下的操作。

2.下载 `Arduino` 开发工具  https://www.arduino.cc/en/Main/Software?setlang=cn  使用最新的 Arduino 1.8.9 版本,这个版本的库比较全,已经不需要安装其它附加库了。也可以本站下载一份拷贝。 arduino-1.8.9-windows.exe

3.使用 Arduino 1.8.9 打开项目目录下的Marlin目录下的Marlin.ino 并将设备选择成Arduino Mega 2560,如下图:


然后选择 “项目” 菜单中的 “导出已编译的二进制文件”,如下图:

编译完成后,会在代码目录下生成 Marlin.ino.mega.hex,Marlin.ino.with_bootloader.mega.hex两个文件,我们使用第一个即可, bootloader尽量不要升级。

文件可以用 Ultimaker Cura 进行升级即可。

目前我使用的固件代码,可以在这里下载 Marlin-Marlin_v1 里面包含已经编译好的固件。

iMaker当时给的使用说明如下:

参考链接


发布者

《iMaker 3D打印机Marlin固件编译以及故障排除》上有4条评论

回复 爱德华 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注