3D打印机折腾 - XYZPrinting da Vinci 1.0

 · 7 分钟
Last updated: 2022-11-10
Table of contents

最终修改完成的机器

前言

因为某种缘分,我上了一个库存3D打印机的车。买到的打印机是 XYZPrinting 出品的 da Vinci 系列,版本1.0,下面简称达芬奇。现在这个系列都加上了前缀“original”。

该打印机用的是私有协议,而我不喜欢被私有上位机控制的感觉(GNU/Linux上操作、配合其它软件时会很麻烦)。于是折腾了“一下下”。

幸运的是我拿到的版本比较老,可以更换电机驱动器。

机器上手

这个设备真的比想象的大不少……明明工作空间只有200*200*200的说……占地差不多 500*600,高度 500,单位都是毫米。

比较可惜的是,设备到我手上时已经因运输不当损坏了多个部件,例如柜门转轴、上翻盖转轴、热床支架、热床玻璃、Z轴底座等等。总之先尝试调平、打印了内置测试件,感觉还行。

打印机内部

可惜这个调平不是长久之计,网上搜索后没有找到合适的热床组件,找商家补发了一个备件。在此期间先研究一下通信协议、耗材限制吧。

在此先记录一下我对于3D打印机到手后的操作建议:

  1. 检查机械结构
  2. 上电检查状况
  3. 检查是否校准并视情况调整(例如使用自动校准功能)
  4. 装料
  5. 打印测试

耗材锁与上位机协议

我机器随附光盘的程序没法正常运行……网上找到的官方程序也没法成功地在虚拟机里打印…… 可惜了 那正好,必须折腾起来。好在网友留下了大量研究资料1 2(相关论坛资料主要发布于2016年前后,很久远,说明这机器年岁也很高)。

“简单”看了一下,就是用特定串口命令上传文件呗,用Py快速实现了一个小工具3。 第一次上传gcode时一个不小心让打印头撞了一下平台……这好像也给后面打印立方体测试时埋下了隐患,导致模型某个侧面疯狂突出。

用这个方法打印模型需要用USB连接串口。需要注意的是,没调整好的话床很容易撞喷头,具体我就不详细写了。

刷机 - Repetier 固件

主板照片,2013年末的板子

工具写到一半发现有个现成的开源固件。刷机也很方便,直接短接、清除原固件后就可以直接用 Arduino IDE 或 PlatformIO IDE 上传。但是在使用过程中会遇到一些小问题。 中间虽然尝试了备份原固件,但发现JTAG接口并不能用=_=,算了反正原装固件是枷锁。

我的刷机过程如下,其它设备会略有不同,请参考固件说明。

  1. 检查型号兼容性
  2. 断电->短接JP1->上电->过几秒断电->断开JP1
  3. Clone并打开项目文件夹,修改 src/ArduinoDUE/Repetier/Configuration.h 中的配置
  4. PlatformIO IDE 编译、上传,随后进行设备校准与检测
  5. 根据实际设备情况调整参数
  6. 重新编译、上传,校准与检测
  7. 终于测试通过了,正常使用

我的挤出头边上的探针(probe)长度与测试点位置的位置好像和程序预定义的有点不同,在使用过程中发现了一些问题。不得不修改了一下代码。

加装WiFi模块

ESP3D这个东西还是有点意思的。哦,装了这个玩意儿可能会让USB串口不正常。

以 ESP12F 为例,2.1.x 固件的使用注意点:

  • 供电得足……
  • esp3d/config.h 中对你需要的功能进行调整
  • 刷机前最好用esptool把模块的存储器擦除一遍,以清除所有会影响到的配置
  • 刷机后上机工作不太正常是正常的,需要简单配置一下
    • 连接热点后上传index.html.gz,找不到可以fzf/find一下
    • 走一遍tour,配置工作模式
  • 2.x成熟一点,指引直观易用;3.0更先进,但是不知道什么时候才有稳定版,没什么指引不太方便
  • 打印机固件也要开启WiFi功能哦
  • Repetier for davinci 最大波特率只有 500000,如果你调高了,ESP3D和打印机固件会自动将波特率降下来

硬件连接参考如下(达芬奇1.0 跳线JP1版),可以先看看原项目的示意图5原项目建议串口加一对分压电阻把RX电平降下来。 该串口的波特率和 USB 串口的波特率(打印机设置的)一样。

+---------+        +---------------+
|     GND |___  ___|1 to RX        |
|         |   \/   |               |
|     TXD |_  /\  _|2 to VCC(3.3V) |
| ESP     | \/  \/ |               |
|     RXD |_/\  /\_|3 to GND       |
|         |   \/   |               |
|     VCC |___/\___|4 to TX        |
+---------+        +---------------+

测试的时候要同时面对好几个疑问真的头疼死了……总之装上去了!

Warning

后续升级达芬奇固件时,一定把ESP3D取下来!不然会有影响!

将ESP12F自制小板安装在达芬奇内部

关于项目仓库提供的连接示意图

ESP3D项目地址中达芬奇1.0/2.0的连接示意图标注的是连接方法,不是引脚定义。即RX接RX,TX接TX。

达芬奇装WiFi模块供电

不要用LDO(或者说不要用低效率的LDO),原本供电刚好 3.3V 且足够ESP8266开热点,过一个LDO可能就不够用了。如果版型和我的一样,串口可以直接对接,电平都是3.3V不会烧。

换电机驱动

想用TMS2209换掉原来的A4988。达芬奇的电机驱动板排针间距大概7个单位距离,比常见的5个单位距离宽一些(1单位距离为2.54mm,排针间距),需要改造。 目前想到的办法有魔改双层转接器和自制转接板。结果咧,转接器(双层排母但是两层一样)都做好了,但是怕操作失误把板子弄坏,还是放弃了(网友称其‘fragile’)。 以后有机会用自制转接板改吧,感觉稳妥些。 事实证明 直接直连转接的话需要改一下电机插头线序 只是方向相反而已,另外做的转接板线接错了直接报废。 另外说一句,我搞不太懂这些步进电机的1A2B什么的编号,好像有两种标准很坑人(一种字母对应线圈/相、数字对应正负,另一种反过来)。 只要知道接对了电机会动,接错了电机会原地抖动,估计就没啥问题了。

魔改的双排母,其实差一点就很合适了

嘉立创免费打样了一组转接板,配合长排针,把原来的母座改了,同时兼容原版和常见的TMC2209 总之就是直接报废。电机驱动根据soliforum的网友提供的信息6来看, 驱动电流不应该超过1A,大概在0.8A左右合适。100mΩ的情况下调整电压差不多1V应该就行了。

提前预留了活动空间并测试了一下电机驱动方向,发现恰好相反,那么稍微修改一下固件把它矫正过来~

// 需要修改的内容如下,给出的是使用TMC2209时的值
#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false

继续用原来的长排针,发现单位移动距离好像对,可能是微步设置出现问题,不管三七二十一先重新做了“可靠的”转换器,又实验了好几次,非常不稳定,中间还不小心插反了一个模块(-11CNY (ಥ_ಥ)),只剩3个可用了…… 一筹莫展之际,想到了板子MS1、MS2、MS3是没有隔离的,而且TMC2209的MS3是个TX(输出模式的IO),说不定影响到了微步设置?嗯,咱把对应的引脚剪掉吧!还好只是剪转接器的引脚。oh,还真的是这样!一切终于正常了。

电机驱动模块与转接器及引脚裁剪示意图

用TMC2209替换A4988的感受嘛,声音确实小了很多,还是挺明显的。在打印精度上基本没有多少提升=_=。总体上确实有提升就是啦。

关于校准

平台平衡校准,配合纸片手动调平比根据自动测量数据调整要靠谱得多(说明自动测量是废物/当然也不完全是)。

我建议的校准流程:

  • 平台校准
    1. 清理平台和打印头,这一步在手动校准程序启动时会有个选项;
    2. 手动校准(Manual leveling),如果觉得不放心可以多来两次练练手(按照固件提示操作走完流程就行);
    3. 重新检测Zmin(Zmin evaluation);
    4. 打印测试件验证校准状况。
  • 挤出机校准
    1. 在耗材上做好长度标记,然后按程序挤出一段耗材(比如100mm),测量实际挤出长度;
    2. 然后嘛就是一个比例计算, \(S_{new} = S_{old} \frac{E_{program}}{E_{actual}}\)
    3. 也可以参考一下网上资料 7

挤出头与热端更换

目前看到有网友换了 MK8 或 E3D 的热端8 9。以后我得尝试一下。热端拆解得在网上找视频了。看起来以后可以直接换MK8热端。

温度传感器更换

参考开源固件讨论区10,有两种做法:一是改主板并更换传感器从而能用既有的通用数据,二是自己测对应的温度数据。

其他人的改造

发现有人直接把主板换掉魔改了一番11。我暂时没这个动力……先好好用用看吧,要换也先换热端和电机驱动了。