3D 打印机开源固件 Marlin 基本配置解析

近年来很多 DIY 玩家和公司都在做 3D 打印机,如十八罗汉,各有姿态。大家对开源的 FDM 型打印机诸如 Prusa 或 Kossel 都很熟悉,而开源固件基本用的都是 Marlin。本文本着知其所以然的目的,以 Kossel 机型为例来了解 Marlin 重要参数的配置及固件运行的基本原理。

Marlin 的最新下载地址是 https://github.com/MarlinFirmware/Marlin

图片1.png图片2.png

(从前有个叫孙子的人,在一个叫马陵的地方终于打败了他强大的敌人——小涓儿。于是乎……灯,等灯等邓!时空穿越回 21 世纪……)

3D 打印机涉及到知识和内容都特别多,我们会分开介绍每个专题。本小节,我们主要先了解 Kossel 开源 3D 打印机的硬件的配置,Kossel 3D 打印机是基于 Arduino 的开源配置的。基本的配置在 Kossel_Mini_Assembly_Guide_V1.0.pdf 都有介绍,下载地址为:http://www.reprap.org/wiki/Kossel。本文内容不再重复具体的地方,而主要 focus 在关键的地方做些解释和原理的总结,方便大家理解。

Kossel 的控制主板由 Mega2560 + Ramps1.4 组成,其中 Ramp1.4 是一块连接板,负责标准化连接外部的电机控制板等其他模块,而 Mega2560 就包括 MCU,IO,AD,Timer,MCU 运行 marlin 的代码,IO,AD 和 Timer 负责执行内部外部的通信和调度工作。

图片3.png

主控板之外直接连接的部分就是,运动系统,挤出系统两大部分。运动系统由电机和限位开关组成,挤出系统由电机和加热模块组成。其中还隐藏着一个温控系统。

下面我们开始了解一下配置 Kossel 的 3D 打印机的主要几个重要部分。我们的配置工作基本在 configuration.h 中完成。根据模块的不同我们分别介绍。

1. 首先是配置机体配置,包括机身各个相关部分的长度。

#define DELTA_DIAGONAL_ROD 213.5 // mm [1]

#define DELTA_SMOOTH_ROD_OFFSET (137+10) // mm [2]

#define DELTA_EFFECTOR_OFFSET 24.0 // mm [3]

#define DELTA_CARRIAGE_OFFSET 12.0 // mm [4]

图片4.png

 

除此之外,还有一些参数,

#define MOTHERBOARD 33 //这是 kossel 的机型号,参考代码里的列表

#define DELTA_PRINTABLE_RADIUS 85.0 //mm 打印半径

#define DELTA_SEGMENTS_PER_SECOND (160-20)

Segment 是 kossel 型打印机特有的一种参数,我们会在以后的工作原理详解中介绍该参数的意义和使用方法。

2. 脱机 LCD 屏的配置

#define REPRAP_DISCOUNT_SMART_CONTROLLER

这个配置会为您配置 2004 的英文 LCD,针对原版的 marlin 估计,建议就用这屏就可以了, 不建议去配置 12864 的屏去跑中文,要不你打印出一堆癞蛤蟆不要问为什么?哈哈,因为 mega2560 使用原版没有经过优化的 marlin 固件,如果使用这种屏,机器会起来会出现卡顿,是性能问题,严重后果就是打印件会出现一堆小疙瘩。

图片5.png图片6.png

3. 电机和限位开关部分的配置

先是三个 XYZ 的步进电机配置,这三个是一样的电机。

#define XYZ_FULL_STEPS_PER_ROTATION 200 //步进电机每 360°的步数;

#define XYZ_MICROSTEPS 16 //步进驱动的细分,大部分都配置为 16;

#define XYZ_BELT_PITCH 2 //同步带齿间距,单位是毫米,2GT 同步带齿间距是 2mm;

#define XYZ_PULLEY_TEETH 20 //同步轮齿数

最后一个数字是挤出机的,需要进行调整。调整的方法是设置是用 prontface 设置输出 100mm, 然后用游标卡尺测量出料的实际长度,来进行调整。

#define DEFAULT_AXIS_STEPS_PER_UNIT   {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 100}

//这是最后的参数,最后 100 你需要自己改为相应挤出机的参数,其它的不需要改。

电机的工作原理是,Mega 对每个电机输出三个 IO 来进行控制,分别的是 Enable, Direction,和 Pulse。当启动运动程序时,Enable 被置为有效,程序根据运动的目标位置决定电机运行的方向 direction,和运动距离,运动多少步时又发送脉冲来实现的。当然还有运动速度和加速度的设置。运动总是先加速,然后匀速,再减速来进行的,这样的运行无论速度多快都能保证稳定性。

关于限位开关,不需要做任何修改,保留默认配置即可。

简单介绍限位开关的工作原理。限位开关所对应的 IO 是被设置为输入的,内部有个 timer 来实时检测 IO 的状态,当检测到 IO 的值表示滑块运动到顶端的时候,timer 会知道,并通知运动程序进行停止,或者归位处理。

4. 热头和热床的配置

温度传感器是用来读取温度的,如果配置错误或接线错误会导致打印机错误,请一定要配置正确。

#define TEMP_SENSOR_0 5//第一个打印头的传感器。这里是 100K NTC 热敏电阻的配置

#define TEMP_SENSOR_1 0//Kossel 机型打印热床的配置

简单介绍下热头和热敏电阻的循环的原理。这里用 PID 温度自动调节原理。IO 的输出直接控制加热装置的开关,打开加热装置,另外 AD 会读取热敏电阻的值,这样 mega 就知道当前的温度。当检测到的温度值达到设定的门限值时,IO 会关闭加热装置,直到温度下降到某个值再次打开加热装置,如此循环,达到温度控制的目的。

 

发布者:Cara,转载请注明出处:http://www.makercollider.com/viewpoint/2071

发表评论

登录后才能评论
QR code