第一节、Salai主板介绍随着3D打印机,特别是面向DIY爱好者的RepRap Prusa i3 3D打印机被越来越多的朋友所了解和熟悉,玩3D打印机的朋友们对现有3D打印机设计的改进也越来越深入,同时对3D打印机的核心部件3D打印机主板的要求也越来越高了。
经典的RepRap Prusa i3 3D打印机的主板,通常采用Melzi或者Arduino Mega 2560 + RAMPS这两种方案之一。在这两种方案中,Melzi方案为全合一的形式,单片PCB板,可靠性高;Arduino Mega 2560 + RAMPS方案采用多块PCB板插接的形式,由1片Arduino 2560,1片RAMPS以及4片步进电机驱动板组成,灵活性高。经过打印虎深入评测对比,我们认为Melzi更适合一般的3D打印机玩家的需求,因此在我们之前的各种对3D打印机的介绍文章中,绝大部分都是以Melzi主板为例的。
虽然我们很喜欢Melzi主板,但它也存在诸多限制,影响我们对3D打印机的深入研究和开发。比如,Melzi主板不能支持双挤出头,这让希望用水溶性耗材作为支撑的朋友就不能选择Melzi主板了;另外Melzi主板采用的CPU主频、内存容量都比较低,这样Melzi主板就只能支持12864 LCD液晶屏,而不能支持更高级的彩色触摸屏。为了解决这些问题,让广大3D打印机爱好者有一块更好用的3D打印机主板,打印虎在Melzi主板的基础上研发了Salai主板,解决了目前Melzi主板的一系列问题,提供给3D打印机DIY爱好者一个更好的选择。
很多朋友都知道,Melzi主板最开始是基于Arduino Leonardo进行的设计改进,而Leonardo就是我们熟知的列奥纳多·达·芬奇,所以Melzi主板的设计者选择了达·芬奇最钟爱的学生Francesco Melzi,弗朗西斯科·梅尔兹作为主板的名字。作为Melzi的改进型,我们选择了达·芬奇的另一名学生,Gian Giacomo Caprotti,吉安·贾科莫·卡普罗蒂,又名Salai(萨莱),作为第二代主板的名字。
达·芬奇《萨莱头像》
Salai主板的主要技术参数包括:
- 处理器:AT91SAM3X8E,32位ARM核心,512K FLASH ROM,96K SRAM
- 用户界面采用3.5英寸全彩TFT触摸屏
- 提供Micro SD卡(TF卡)接口,脱机打印G-code文件
- 支持双挤出头,提供5个独立的A4988步进电机驱动
- 提供4个独立的MOSFET驱动,用于双挤出头加热、热床加热以及风扇
- 全部电气连接使用螺丝端子,不需要压线或者焊接
- 外形尺寸:210mm x 81mm x 17mm,安装孔与Melzi兼容
- 重量:112g
上图为一片Salai主板,可以看到在这片主板的设计中,各个接口的位置、形式都尽量保持与Melzi一致。
上图为工作状态的Salai主板+TFT屏幕
虽然Salai主板继承了很多Melzi主板的特性,但这两块主板之间的差别还是不小的,我们专门列了一个表格,对比Salai和Melzi之间的差别:
| Salai | Melzi |
MCU型号 | AT91SAM3X8E | ATmega 1284P |
总线宽度 | 32位 | 8位 |
主频速度 | 84MHz | 16MHz |
FLASH容量 | 512K | 128K |
SRAM容量 | 96K | 16K |
LCD支持 | 彩色3.5寸TFT触摸屏 | 黑白12864 LCD屏 |
挤出头支持 | 2个 | 1个 |
SD卡支持 | 支持(支持中文文件名) | 支持 |
从以上表格可以看出,打印虎推出的下一代3D打印机主板Salai,主板采用了32位ARM体系结构,CPU运行速度是传统8位主板的5倍,可以有效提高3D打印的质量,同时支持双挤出头,自带3.5英寸的TFT全彩触摸屏,配合大幅改进的Repetier-firmware固件,拥有丰富的操作功能和良好的用户界面。这个产品的固件不仅功能丰富,还是开源的,可以满足深入学习的需求!产品不光性能高、颜值高,核心代码开源,价格还特别低,有兴趣的朋友,可以到打印虎的
产品页面,看看更详细的信息,这里就不多说了。
第二节、安装USB驱动程序上一节我们介绍了Salai主板的基础特性,下面我们详细讲解拿到一片Salai主板之后如何安装使用。首先,要把Salai主板与电脑连接起来,为下一步刷固件(调整参数)做准备。连接Salai主板与电脑非常简单,只要两步即可完成。第一步是使用排线连接Salai主板与3.5寸TFT触摸屏:
注意两根10pin排线要JP1对JP1,JP2对JP2,两根线之间不要混淆。
第二步就是连接Salai主板与电脑之间的USB线了。连线之后,主板上的两个LED应该亮起(下图红框内),同时3.5寸TFT触摸屏上应该显示正确的信息:
由于这时候我们还没有连接3D打印机的热敏电阻,因此3.5寸TFT触摸屏上会报告当前温度为“损坏”。不用担心,等会我们连接好热敏电阻之后,这里就会显示为正常的当前温度值了。
虽然连接好USB线之后,Salai主板就得到供电开始运行了,但实际上这时电脑只起到一个供电的作用,在驱动程序安装之前,还不能和Salai主板交换数据。通常Windows会提示“未能成功安装设备驱动程序”,如下图所示。为了让电脑与Salai主板通讯,我们需要先给它安装驱动程序。
Salai主板的驱动程序,已经包含在Arduino安装包内,我们只要下载Arduino并安装驱动即可。由于Arduino官方提供的安装包,不包含SAM核心组件,在下载完成之后还需要单独安装,比较麻烦,因此打印虎重新封装了最新的Arduino 1.6.7版本,同时包含了Arduino主程序以及SAM核心组件,给大家提供了方便。打印虎打包的Arduino 1.6.7版本可以从这里下载(
打印虎本地下载,
百度云下载)。
下载之后直接执行安装包文件就可以开始安装过程了,如下图所示:
直接按下安装,就会开始安装Arduino 1.6.7的过程。由于需要安装的文件数量很多,这个过程的用时会比较久,要等一会才能完成。
全部完成之后,按下关闭就可以了。这时候,桌面上会出现Arduino 1.6.7的图标。
双击这个图标即可启动Arduino 1.6.7了。但我们这里的目标,并不是使用Arduino 1.6.7(下一节会使用这个工具刷固件),而是安装驱动程序。因此我们先打开设备管理器。
打开设备管理器最简单的方法,是在“我的电脑”上单击鼠标右键,选择菜单项“管理”,并在打开的“计算机管理”窗口的左侧选择“设备管理器”。如下图所示:
这时,我们可以看到在“端口(COM和LPT)”这个类别中,会出现一个“未知设备”。这个未知设备就是我们的Salai主板了。鼠标双击这个“未知设备”,并在弹出的窗口中,点击“重新安装驱动程序”按钮。
在打开的更新驱动程序软件窗口中,单击“浏览计算机以查找驱动程序软件”这一项。
在编辑框中填上我们刚才安装Arduino 1.6.7的路径,再点下一步按钮。
这时候会提示用户是否安装“Arduino USB Driver”,当然选择“安装”。
安装完成之后,回到设备管理器,可以看到我们的Salai主板已经驱动起来了。由于Salai与Arduino Due在驱动上是完全兼容的,所以从电脑上我们看起来是一个Arduino Due设备。之后的COM3表示这个设备当前在COM3串口上,在不同的电脑上,这个情况也有可能会改变,不管COM口的编号是多少,都是正确的结果。
到此为止,Salai主板的驱动程序已经成功安装完成,下面我们就可以和主板进行通讯了。下一节,我们会首先介绍如何给主板刷固件,以配合我们的3D打印机的参数。然后,我们还会介绍如何与上位机软件Repetier-host配合使用Salai主板。
第三节、给Salai主板刷固件Salai主板的一大特点,就是它使用了RepRap 3D打印机最常用的固件Repetier-firmware,这种固件运行稳定,同时兼容性特别好,可以和多种上位机软件配合使用。特别是在配合Repetier-host时,可以发挥出完整的功能,具有极佳的兼容性(毕竟是同一家公司开发的)。而且,为了保证广大3D打印机玩家的进一步改造需求,打印虎保持了所用固件的开源。大家可以直接获得固件的源代码,并在源代码的基础上进一步修改获得自己希望的功能。
将随Salai主板附送的源代码包zip文件解压之后,可以得到这样一个Repetier文件夹,包含了一组源代码文件,如下图所示。
这组文件全部是Repetier-firmware的源代码文件,用C++语言写成。如果需要对这些文件进行较多的修改,可以安装一个文本编辑器,比如notepad++,打开这些文件并进行编辑。下面我们可以看到,直接使用Arduino软件也可以进行修改,但比较不方便。
启动Arduino 1.6.7软件,可以看到初始窗口:
在这个窗口中,选择菜单“文件”-“打开”,并将路径切换到刚才解压得到的Repetier目录,在目录中选择Repetier.ino文件,如下图所示:
按下“打开”按钮之后,我们会得到一个新的Arduino窗口,里面就是整个Repetier工程了。如下图:
在将固件刷入Salai主板之前,我们必须按照自己的3D打印机配置,修改固件里面的配置值。Repetier-firmware所有的配置值,都保存在Configuration.h文件中。为了打开Configuration.h文件,我们要先点击文件名标题栏最右侧的向下小三角,然后在弹出的菜单中选择Configuration.h文件:
在Configuration.h文件中,我们要修改的主要配置项目包括:
- 挤出头的数量;
- 限位开关的种类;
- 步进电机的方向;
- 步进电机的分辨率;
- 热敏电阻的参数;
下面我们逐一搞定这些配置项目。首先是挤出头的数量。找到配置文件中的这一行:
#define NUM_EXTRUDER 1(小窍门:可以用Ctrl+F打开“寻找”对话框,并输入这一行,就可以迅速跳到正确的位置上,不需要一行一行看了)
这一行配置了挤出头的数量。1代表一个挤出头,2代表两个挤出头。
第二项,是限位开关的种类,常用的限位开关有两种接法,一种是常通的,一种是常断的。如果我们连接了限位开关的C(也就是COM)以及NC接口,如下图所示,则是“常通”接法。这种接法在限位开关未触发的时候,是处于短路状态,触发之后变为断路。
反之,如果连接了C以及NO接口,如下图所示,则是“常断”接法。这种接法在限位开发未触发的时候,是处于断路状态,触发之后变为短路。
如果是第一种接法,也就是“常通”的接法,那么Configuration.h文件中应该设置为
#define ENDSTOP_X_MIN_INVERTING false#define ENDSTOP_Y_MIN_INVERTING false#define ENDSTOP_Z_MIN_INVERTING false这也是初始的设置。
如果是第二种接法,也就是“常闭”的接法,那么上面三行中所有的false都应该改为true
#define ENDSTOP_X_MIN_INVERTING true#define ENDSTOP_Y_MIN_INVERTING true#define ENDSTOP_Z_MIN_INVERTING true第三项,是步进电机的方向。步进电机的方向,通常在第一次配置的时候不能很好的确定,因此可以先保持原样刷固件,如果发现运行方向与预期不一致,可以在第二轮中进行调整。在Configuration.h文件中,步进电机方向的设置为:
#define INVERT_X_DIR 0#define INVERT_Y_DIR 0#define INVERT_Z_DIR 0这三行确定了XYZ的方向。可选值为0和1。如果发现步进电机的运行方向是反的,可以将0改为1,或者反之将1改为0。
另外,在将步进电机加热之后(要首先确定热敏电阻设置是正确的,否则有可能会过热),还可以观察挤出头步进电机的方向。如果挤出头的方向反了,可以调整
#define EXT0_INVERSE 1#define EXT1_INVERSE 1这两行。其中EXT0对应挤出头1,EXT1对应挤出头2。
#define XAXIS_STEPS_PER_MM 80#define YAXIS_STEPS_PER_MM 80#define ZAXIS_STEPS_PER_MM 400#define EXT0_STEPS_PER_MM 101#define EXT1_STEPS_PER_MM 101以上五行,分别对应了XYZ轴以及两个挤出头步进电机的分辨率。将它们修改为正确的值即可。
最后,第五项是热敏电阻的参数。我们见过的国内绝大多数3D打印机,都采用了R0=100K, beta=3950的热敏电阻。如果你也使用了同样的热敏电阻,那么就不用修改配置文件了。如果很不幸你的热敏电阻与此不同,那么你需要修改这些项目:
#define GENERIC_THERM1_R0 100000#define GENERIC_THERM1_BETA 3950很明显,这两行分别对应了热敏电阻的R0值和beta值,修改为你使用的元器件的实际值就可以了。
将以上所有内容都修改完成之后,就可以刷固件了。正式开始刷之前,我们还要在Arduino环境中选择正在使用的主板类型以及端口号。这些只要使用菜单项“工具”下面的“开发板”以及“端口”就可以了。开发板选择为Salai AT91SAM3X8E(通常是开发板菜单的最后一项),端口选择为设备所在的实际端口,如图:
开发板以及端口都选择好之后,只要按下Arduino窗口工具栏上的向右箭头按钮,就可以开始刷固件过程了。
这个过程需要持续一段时间,完成后,在下方的日志窗口中,我们会看到这样的内容:
这就说明刷固件过程成功完成了。
需要注意的是,固件刷好之后,我们配置在固件中的各个参数值,却不一定能立即起作用。这是由于Repetier-firmware会把一部分配置参数值保存在EEPROM之中,而在每次主板启动时,自动从EEPROM中读取这些参数值。如何处理EEPROM中的参数值,可以参考我们这篇教程的第五节内容。
第四节、Repetier-host的安装和测试如果你还没有把Salai主板安装到3D打印机上,那现在就应该进行安装了。下图给出了各个接口的作用。懂英文的朋友,直接看主板上印刷的文字,也可以直接理解。
把所有这些接口都连好,就可以开始联机测试了。当然在测试之前,要先把Repetier-host软件安装好。还没有下载Repetier-host的朋友,从这里可以下载Repetier-host软件最新版1.6.1版(
打印虎本地下载,
百度云下载)。
下载完成之后,双击开始安装的过程。第一个界面是选择语言。很遗憾这里面没有中文,只能是凑合用英文了。(安装完成后,软件主界面大部分都有中文)。
之后一路Next下去,直到选择安装模块的页面。
在这个界面下,我们建议红框内的两项,一项是Repetier-Server,另一项是Skeinforge Slicer,都不要选中。因为这两项都没有包含在安装包中,如果选中的话,会临时从互联网上下载,安装速度就很慢了。
继续再按几次Next,完成整个安装过程。最后安装完成的同时,Repetier-host也同时启动起来了,如下图(第一次启动会同时载入一个演示用的模型文件,第二次开始就不再自动载入了):
需要说明的一点是,我们这里截图所使用的都是Repetier-host 1.6.0版,最新的1.6.1版修正了一些问题,功能、界面与1.6.0版完全一致,我们就不再重新截图了。
第一次启动Repetier-host之后,需要先对3D打印机进行设置。按下主窗口右上角“打印机设置”按钮,可以打开打印机设置对话框,如下图所示。最新版本的Repetier-host,绝大多数选项已经非常适合直接使用,只有很少的地方还需要调整。首先,是“连接”选项卡里面的通讯端口及波特率。通讯端口保持Auto通常是可以的,如果发现有问题,可以改为3D打印机实际的通讯串行口,比如COM3。波特率一定要保持初始的115200,否则会不能正常使用。
然后,另一个需要调整的地方是“挤出头”选项卡。如下图。这里最关键的选项,一个是挤出头的数目,另一个是挤出头的喷嘴直径。很显然,这两个选项都必须根据实际的情况进行修改,才能让3D打印机正常工作。
以上所有的配置项都调整好之后,就可以按下窗口左上角的“连接”按钮,连接3D打印机了。
如果一切正常的话,“连接”按钮将会变为绿色。这时候,将右侧的窗口切换到“手动控制”选项卡,就可以进行各个步进电机、限位开关以及热床挤出头的加热测试了。
第五节、EEPROM的使用和清除固件的设置,是一个比较有趣的话题,很多玩3D打印机的朋友,在遇到设置相关的问题时都会犯迷糊。实际上,对于某一项特定的设置,比如说X轴的步进电机分辨率,在3D打印机主板上,有三个不同的位置(也是三种不同的存储器)保存了这项内容,而它们的值还有可能不同。让我们先来了解一下这些保存设置内容的位置,以方便大家的理解。
首先,是固件配置文件(configuration.h)中的设置值。配置文件中的值,会跟随固件一起编译,之后在刷机过程中,保存在了3D打印机的静态存储区(Flash ROM)中。除了刷机之外,静态存储区的内容不会发生变动,可以认为是只读的。每次开机的时候,都是一样的值在等待着我们。
第二份设置值,保存在电可擦写静态存储区(EEPROM)。EEPROM的读写代价,比静态存储区要小。因此,3D打印机允许在刷机之后,修改设置值,而这些修改之后的设置值,就存储在EEPROM之中。每次开机,程序会先检查EEPROM,如果EEPROM中是空白的,则将静态存储区的第一份设置值复制到EEPROM之中。而如果EEPROM中已经有保存好的设置值,则程序会直接使用EEPROM中的值。有些朋友在玩3D打印机过程中可能会有这样的经验,就是明明修改了固件配置文件中的设置值,但刷机之后竟然没有发生变化。这种情况,往往就是EEPROM在捣鬼了。我们完全可以使用G-code M502 M500两条指令(指令的具体含义可以参考下面),重写EEPROM,解决这样的问题。
第三份设置,保存在内存(RAM)中。实际用户使用的值,就是内存中的值。由于内存只在加电情况下能够保持其中的内容,因此每次开机时,3D打印机会根据上面描述的逻辑,重建内存中的设置值。如果某条指令修改的是内存中的设置值,那么这也代表着这次修改是一个临时修改,下次开机这个值就会消失了。
总的来说,三份固件设置,使用的优先级是
内存 > EEPROM > 配置文件
但设置的持久性,就要反过来了。明确了解这些,特别有助于我们解决一些与设置相关的问题,也给我们使用Repetier-host提供了参考。在Repetier-host中,我们可以通过菜单项“配置”-“固件配置”,看到当前EEPROM中的各项设置值。如下图:
在这里,可以直接修改设置值,并立即起作用。比如说X轴的步进电机分辨率,就可以直接在X-axis steps per mm后面进行修改。这显然比修改Configuration.h更方便。同时也如前面所述,这种修改的持久性要小于在Configuration.h中的修改。在用户清除EEPROM之后,这项改动就消失了,会恢复为之前刷机时在Configuration.h中设置的值。
在了解如何查看当前EEPROM的值之后,我们还希望知道如何清除EEPROM的值,让刚刚刷机时在Configuration.h中设置的值起作用。这个动作在Repetier-host中不太容易,没有一个按钮或者菜单项可以直接完成,而是要在“手动控制”面板上输入两条G-code指令来完成这个动作。首先输入M502,按下“发送”。再输入M500,再按下“发送”,这样就完成了对EEPROM的清除重置操作。如下图所示(图中是已经完成两条命令输入后的状态)
图中的三个红框,分别是G-code输入和发送功能,M502的执行结果,以及M500的执行结果。看到这样的执行结果,说明EEPROM已经恢复到Configuration.h中设置的状态了。
第六节、结束语如果你看了我们的文章,对Salai主板很感兴趣,可以到我们的
产品页面查看产品详情,产品页面的底部,是打印虎淘宝店的连接,购买主板可以到打印虎淘宝店完成。
打印虎作为国内最专业的3D打印机软件、硬件研发厂商,提供3D打印机软件、硬件研发定制服务。无论您是3D打印机DIY玩家,或者是3D打印机的生产企业,都欢迎来打印虎选购产品,洽谈合作。我们会用专业的态度加精湛的技术帮助你解决3D打印机研发中的困难,提供最优质产品和服务。希望能够得到广大用户的认同和选择。我们的
联系方式可以从打印虎网站获得。祝大家玩机愉快,每天都有好心情。