这里和大家讨论下国产的类Ultimaker3d打印机的固件修改升级方法,如何判断自己的机器是不是Ultimaker机型,可以参考下图(十字轴结构就是了)
这里以我多年之前买的一台 iMaker 3D打印机为例,本质上是一台 Ultimaker v1.5.7硬件的机器,因此使用 Ultimaker 的软件跟固件都是没有问题的。
具体信息如下:搬家之前,由于房间空间限制,已经在角落里落灰许久了。最近搬完家,有地方折腾了,打算打印几个小物件玩玩。可是实际运行时候发生打印严重变形的问题。具体的表现就是Z轴上(也就是高度方向上)发生严重的拉伸现象,整个打印物体的高度被拉伸,比如那个自带的三厘米左右的小机器人,被莫名拉伸到十几厘米,导致结构松散,严重变形,易碎。刚刚开始以为是升级固件导致的问题,但是还原到以前可以正常使用的固件,问题依旧。以为是USB通讯导致的问题,使用SD卡打印的效果依旧是这个样子。一时间毫无头绪。于是准备拆开看看硬件部分是不是损坏了。结果发现 Z 轴控制器中的一个跳线帽丢了! 如下图:
底部电路
Z轴部分跳线
从上图可以看到 Z 轴的 MS3 位置的跳线帽丢了。根据说明,这个跳线帽插上之后是 1/16 细分,否则是1/8细分,相当于把 Z 轴的下降速度提升了一倍!
这个设备使用的是开源的 Ultimaker v1.5.7 的电路图,更详细的内容参考 Ultimaker's v1.5.7 PCB
正常的跳线状态,如下图所示:
找了个跳线帽插上之后,恢复正常。 由于这个板子是使用的官方的电路图进行了简单的修改,因此应该可以直接刷官方的 Marlin Ultimaker 固件的,但是使用官方提供的 Marlin Ultimaker 固件之后,加热床失效了。无论如何都不能加热。
看了一下官方的固件代码,发现默认情况下,加热床是关闭的。也就是官方提供的固件默认是没有加热床的(源代码的 Configuration.h,中 #define TEMP_SENSOR_BED 0 我们需要根据实际情况修改,一般修改为#define TEMP_SENSOR_BED 1 即可。但是如果是某些特殊品牌的,根据 Configuration.h 里面的说明进行修改)。因此我们只能自己从官方固件代码修改之后重新编译。
iMaker自带的热床没有牌子,一般是 4.7K 的上拉热敏电阻。因此定义 #define TEMP_SENSOR_BED 1 即可。
编译方法
1.首先下载 Arduino 开发工具 https://www.arduino.cc/en/Main/Software?setlang=cn
2.下载一份最新的代码,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
复制代码 Windows 下可以浏览器直接下载最新代码https://codeload.github.com/Ultimaker/Marlin/zip/Marlin_v1,然后手动修改 Configuration.h 文件里的 #define TEMP_SENSOR_BED 0 为 #define TEMP_SENSOR_BED 1
3.使用最新的 Arduino 1.8.9 版本,这个版本的库比较全,已经不需要安装其它附加库了。也可以本站下载一份拷贝。 arduino-1.8.9-windows.exe4.使用 Arduino 1.8.9 打开项目目录下的Marlin目录下的Marlin.ino 并将设备选择成Arduino Mega 2560,如下图:
然后选择 “项目” 菜单中的 “导出已编译的二进制文件”,如下图:
编译完成后,会在代码目录下生成 Marlin.ino.mega.hex,Marlin.ino.with_bootloader.mega.hex两个文件,我们使用第一个即可, bootloader尽量不要升级。
文件可以用 Ultimaker Cura 进行升级即可。Cura最新版本4.2.1下载地址https://www.3dzyk.cn/forum-98-1.html
目前我使用的固件代码,可以在这里下载Marlin-Marlin_v1里面包含已经编译好的固件。
|
全部评论46