iMaker
3D打印机,已经在角落里面落灰许久了,本质上是一台 Ultimaker v1.5.7
硬件的机器,因此使用 Ultimaker
的软件跟固件都是没有问题的。貌似这家公司现在已经快不行了的样子。 官网都已经打不开了。具体信息如下:搬家之前,由于房间空间限制,已经在角落里落灰许久了。最近搬完家,有地方折腾了,打算打印几个小物件玩玩。可是实际运行时候发生打印严重变形的问题。具体的表现就是Z轴上(也就是高度方向上)发生严重的拉伸现象,整个打印物体的高度被拉伸,比如那个自带的三厘米左右的小机器人,被莫名拉伸到十几厘米,导致结构松散,严重变形,易碎。刚刚开始以为是升级固件导致的问题,但是还原到以前可以正常使用的固件,问题依旧。以为是USB通讯导致的问题,使用SD卡打印的效果依旧是这个样子。一时间毫无头绪。于是准备拆开看看硬件部分是不是损坏了。结果发现 Z 轴控制器中的一个跳线帽丢了! 如下图:
从上图可以看到 Z 轴的 MS3 位置的跳线帽丢了。根据说明,这个跳线帽插上之后是 1/16 细分,否则是1/8细分,相当于把 Z 轴的下降速度提升了一倍!
这个设备使用的是开源的 Ultimaker v1.5.7
的电路图,大家可以在本站下载到 Arduino MEGA Ultimaker Shield Sch,Arduino_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下命令行操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ 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当时给的使用说明如下:
老哥加个qq请教点问题1611745195
直接在这里问好了
怎么设置打印完成后移动到z最大,是在固件里调整?
固件,上层软件都可以,上层软件最简单,有个打印完成后的GCode,增加一条即可