青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 18556|回复: 1

Marlin 固件配置

[复制链接]
发表于 2013-12-11 11:23 | 显示全部楼层 |阅读模式
Marlin 固件配置
) v; H; B; F; q; N  D7 X  So,让我们开始吧。首先在Arduino IDE中打开Configuration.h,注意做好源文件的备份工作!!!
/ H' R+ z0 a4 ], C3 j8 W: l* Q. l波特率  - 20行: w. Z- ~$ K4 \8 N4 f- e
  #define BAUDRATE 2500006 ]4 i7 {/ r8 O1 K; ~
  //#define BAUDRATE 115200
' {) d0 Y) k2 D  该行是用来决定主控板使用何种波特率来与电脑上的控制软件进行通信的。通常是用250K和115.2K两种波特率选择,要选择何种波特率,只要将该行前面的”//” 删除,不选择何种波特率只需要在该行前添加“//” (注意:不包括“”)。默认设置250K在Printrun/Pronterface 和 RepSnapper 里面运行都不错。(我用lubuntu + Pronterface 250K 连接不上的,115.2K 倒没有问题)。- j, ^0 }, `% y0 J9 g* z- G
  主控板 –  49行
4 G8 J2 L) r5 w" N, g  #ifndef MOTHERBOARD5 v6 S3 _8 g; W3 H1 n" g) @7 {
  #define MOTHERBOARD 33
4 d' y9 U+ a5 b/ d% K  #endif! s- g, O- p  X+ }# O
  你可以在注释里可以看到Marlin固件支持的主控板清单,通过修改#define MOTHERBOARD 这行的数字,选择对应的主板编号即可。上面这行是选择RAMPS 1.3 的意思,你可以按自己实际情况修改该项。Marlin 固件会根据主板信息定义主控板引脚布局。具体各种主控板的引脚布局可以在pin.h中看到。
  {- V/ |0 B- q2 l  T  Marlin 固件 温控设置" k! X0 [6 a; p( g2 Q( d
  现在我来看看温控方面的设置,温控设置有点复杂,但是我们不需要考虑那些复杂的PID计算设置问题。基本上我们需要做的是选择3D打印机机温度传感器的类型,如果不是你自己安装的温度传感器,你可以在RepRap wiki中了解温度传感器的类型。
9 I8 S7 c6 Z5 P  热电调节器(热敏电阻) –  78 行
7 S4 W; I" u, }7 K0 O" U0 q8 L  #define TEMP_SENSOR_0 1
3 N1 y/ V& j3 g  #define TEMP_SENSOR_1 0
* `* k+ L% h* E, I0 I" U: Y  #define TEMP_SENSOR_2 0& s0 E5 p: A  s8 p5 t
  #define TEMP_SENSOR_BED 1
6 s1 _5 G: D- W. @7 t  如果你仔细阅读Marlin固件的配置文件,你会发现支持的固件所支持的温控传感器的类型对应的编号。TEMP_SENSOR_0是喷嘴的温控传感器类型、TEMP_SENSOR_BED是加热床的温控传感器类型,一般来说都是100K 热敏电阻。
3 z! ]4 q0 N" V  如果你是用RAMPS 1.3 主控板和pin.h中使用默认布局的话,你可以在主控板的T0和T1 接口分别对应TEMP_SENSOR_0 和TEMP_SENSOR_BED。选择0即关闭该接口。请选择合适你打印机的温控传感器吧。% I+ S, q8 B3 y, w3 J
  温度限制(最大值) –  99 行
) k+ g4 S. D0 S0 n- n  #define HEATER_0_MAXTEMP 275
* k% o  _% ~0 m( f0 K  #define HEATER_1_MAXTEMP 275
( M1 H! f! H  \, ~  e: Y  D& o% P  #define HEATER_2_MAXTEMP 275
  f, O/ y! T6 ]4 J0 U+ Y  #define BED_MAXTEMP 120) x9 a3 T3 V* [' P# W
  有些喷嘴和加热床的最大工作温度会低于Marlin固件的默认最大温度,为了减少对喷嘴和加热床的损害,可以设置最高温度限制。2 O' h0 w$ U# e2 p" n0 k
  Marlin 固件的机械设定; ^' |3 t/ `  r- T0 k' \
  机械设定部分包括限位开关、步进电机、最大制造范围和运动位移值。
+ D2 {- _3 e3 h) Q5 P  T% Z  限位开关和上拉电阻  这一节将教你配置3D 打印机每个轴中的限位开关。用G28 命令会让3D 打印机的3个轴回零方向运动直到碰到限位开关。限位开关如果没有5V 电源作为产生信号源的话,配置ENDSTOPPULLUPS 会确保让固件产生一个信号、当限位开关接通时才会产生明确的数字信号0。& m% ~6 Q: n  ~* B- R! U" u# g
    如需了解更多请参考RepRap wiki 的(机械限位开关)Mechanical Endstop,OptoEndstop 2.1(光学限位开关) and Gen7 Endstop 1.3.1。(最好就是按机械开关的原理图来制作限位开关,这样的效果最好。)1 S& z& z0 L, w9 e% K  S6 y  H" f1 b
  限位开关上拉电阻总体控制–194行
/ H5 x) w+ h& }- b: b: i  // corse Endstop Settings, o9 Y0 A# l) d* [4 |
  #define ENDSTOPPULLUPS //Comment this out (using // at the start of the line) to disable the endstoppullup resistors0 @$ {5 q- a8 |) h
  Marlin固件默认是需要限位开关的上拉电阻的。从207行开始固件为每个限位开关分配独立一个上拉电阻,如果194行被取消则从197行开始的上拉电阻控制都会一并取消。这样方便你自己的3d 打印机采用不同类型的限位开关。一般来说X轴和Y 轴采用机械限位开关,可以不需要制作3线的数据口,而Z轴的光学开关默认为3线的数据口。这是光学开关就不需要使用到ENDSTOPPULLUPS注释。, Y! l" g4 q. h5 X' I4 h
  限位开关上拉电阻细分控制 –  196行
8 M- }% t& M5 j& v4 \& x#ifndef ENDSTOPPULLUPS% M8 j/ _  `6 M6 l4 T3 Y& W
// fine Enstop settings: Individual Pullups.will be ignord if ENDSTOPPULLUPS is defined1 O) |) J# P) O$ U' N/ f+ P
#define ENDSTOPPULLUP_XMAX5 y: D. t* G3 V' w6 L# P# O
#define ENDSTOPPULLUP_YMAX+ r2 y) ?& E) H
#define ENDSTOPPULLUP_ZMAX$ z% [0 _, s' `% _5 [, U
#define ENDSTOPPULLUP_XMIN7 g# i- B+ d# g! {4 ~
#define ENDSTOPPULLUP_YMIN
8 F, b& R! `1 {* x//#define ENDSTOPPULLUP_ZMIN
) T/ e# B& q& u5 M( w+ S#endif
! [  P$ q9 D9 T4 }3 x3 S- d如果Configuration.h194行被注释掉的话,则196行的语句将会被执行。你可以独立控制每个限位开关的上拉电阻,当然这个是要根据你3D 打印机的限位开关类型来确定.
) S  O. A9 F8 d* b3 f限位开关方向控制 -  216 行 1 Q0 V; b% f  a" A; g
// The pullups are needed if you directlyconnect a mechanical endswitch between the signal and ground pins.' q1 n% B5 @' J# N% q$ B
// set to true to invert the logic of theendstops.' U' `7 T: N. w8 d8 ~4 Q
const bool X_ENDSTOPS_INVERTING = false;
3 @1 H$ \- e- y% Gconst bool Y_ENDSTOPS_INVERTING = false;, T9 R* X. z% S5 c! t
const bool Z_ENDSTOPS_INVERTING = false;
& `) ]5 `, r- E. k/ c+ t3 C' j# M  机械限位开关通常会把连线连在常通(NC) 端,这就会有个一个数字信号1输入到主控中。如果你的机械限位开关的连线是连在常关(NO)端,这就需要在ENDSTOPS_INVERTING采用 ture 从而是数字信号0反向变为1.对于光学开关来说,则一般不用进行调整。9 B& E3 X; u" f& u- \* ]
     你应该在电脑控制软件中实际试验一下限位开关的方向是否与你的预期相符,如果轴运动时触动限位开关就停止则说明,该项设置正常。注意!!!在做此测试时,应该给各个轴留出足够的运动反应空间。以免损坏机器。
/ r6 p5 p5 e% v* X关闭最大限位开关–  219 行: F. E9 R0 Z7 F0 M8 ~9 z
//#define DISABLE_MAX_ENDSTOPS
  e4 ~& j0 M# g2 M& D" R2 |# P上述这行代码在marlin 固件Configuration.h(219行),通常情况下是被注释掉的。如果你的打印机的原点开关安装在X、Y、Z轴最大位置的话,这个就需要去掉注释符号。5 R& Z5 J$ y( l9 e! k
通常情况下Z轴的限位开关是放在Z轴最大限位,这样可以使hot end 可以免受挤压。为了达到这个目的,这样就需要去掉注释。但是这行对于那些没有最大限位开关的主控板是没有用的哦!% A+ Q4 R& d: D8 p9 B+ K* R
关闭轴 – 228 行. |; Z% f& z; C0 S
// Disables axis when it’s not being used.
* t- x3 y" w4 B7 i# J#define DISABLE_X false% G+ L4 b) _8 G) o& V, |
#define DISABLE_Y false
' S) r2 u8 O. a% k4 {#define DISABLE_Z true
3 u& g) A/ \0 t#define DISABLE_E false // For all extruders: `5 i" n4 X; Q! R" O; d4 W+ H  T
通常情况下上面的代码是不改动的,所有轴都是选择 false 的。然而,如果你的3D打印机z轴有手动调整的部件,可以在#define DISABLE_Z 行选 true ,这样在打印机打印时,可以手动调整z轴。  n! y8 O: F( x+ C
步进电机- r" ]0 [& ~. I/ p8 w  ]  k& J
我们已经来到了设置步进电机部分,这部分主要设置步进电机运行方向、限位开关逻辑、行程、步进长度单位。前面部分的限位开关已经测试好了,所以这部分的测试就相对简单很多了。
$ Y4 |. Z$ Z" ~! I0 A  l3 x& x步进电机运转方向–  233行
8 C/ l) J/ y' T1 \' w. b5 w#define INVERT_X_DIR true: i/ Z5 x& k4 |1 O9 @& y7 ]# m
#define INVERT_Y_DIR true
+ E2 O8 Y+ r" j8 D#define INVERT_Z_DIR true" W; I! d9 g9 ]
#define INVERT_E0_DIR true
6 _& j* z3 z$ O: o: r#define INVERT_E1_DIR false0 z8 `* S3 u0 D9 V2 \5 y
#define INVERT_E2_DIR false
9 S0 N! v/ ?* u0 I, K& |+ Q9 N这部分是决定3d打印机各个轴的运行方向的,默认的选项不一定适合每一种打印机,所以我个人建议是先测试其他项目,最后才测试这部分。
这是当我们经过接口软件控制 3D立体打印机,我们哪里决定哪一个方向每个轴将会去。当我们将一个指令送到的时候驱使 +10 毫米前进一个轴,我们期待轴移动被期望的方向的 10 毫米。 开始的高抬腿运步的马马达方向能难以没有打开打印机而且表演一个测试预测。因此我会建议离开这些设定直到最后的而且在以测试着手进行之前完成马林鱼固件结构的其它部分。

# E3 z" W! `$ h& h
一经马林鱼固件结构文件被配置充足操作 3D立体打印机,你能运行一个测试检查每个轴搬进正确的方向。设定他们的完整旅行距离的每个轴中点然后打开打印机。 在经过接口软件,像是 Printrun/pronterface 对 3D立体打印机连接之后,藉由慢跑他们积极的方向的10 毫米测试每个轴。 对于每个轴的高抬腿运步的马马达旋转方向能藉由变更逻辑在马林鱼固件结构中从第233 行被改正。

5 \  O% J6 U- W
你会需要也测试挤压机高抬腿运步的马马达方向。 这能没有细丝被做装载而且带来热的达175 度的结束温度因此马林鱼固件将会允许挤出。 送一经过 3D立体打印机接口软件挤出指令而且观察方向细丝驾驶齿轮滑车旋转。 对于挤压机的旋转方向能藉由变更逻辑从第236 行被改正。
当第一次表演轴归巢和轴慢跑的时候,准备好按重新设定按钮或者准备好关掉电源避免撞碎的轴很重要。分开地回家每个轴确定轴正在向结束停止回家。如果你能达成结束停止容易地,在轴已经完成它之前,你能早引起他们为一个安全的测试是旅行。
* ^- v; f$ F- I! }$ W( U* K2 ~. p
结束停止家方向 - 第 242 行
// 设定 endstops 的方向当归巢; 1=最大, -1=最小
#定义 X_HOME_DIR-1
#定义 Y_HOME_DIR-1
#定义 Z_HOME_DIR 1
End Stop Home Direction – line 242
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR 1
基本上你告诉结束停止开关被位于的轴结束的马林鱼固件。 它是通常的对X 和 Y 轴到家至最大的积极位置的零位置和 Z 轴结束停止家的热结束 。 在上面的代码片断和对权利的图像表示结构。
像斜坡 1.3 的一些主板为每个轴的每个结束有一个联编者,总计六个联编者。你将会需要确定在比赛上面的设定结束停止和主板的关联。

8 V$ r+ z$ F( t) J; f
Travel Limits – line 249   旅行极限 - 第 249 行
#define X_MAX_POS 130
8 [' f8 C3 F2 Z1 j0 b5 Y1 r#defineX_MIN_POS 0, n5 M* r& p+ ]
#defineY_MAX_POS 130
- }+ ^: C+ @/ F/ B/ C; h  B#defineY_MIN_POS 0
/ d5 [/ E0 @" y. t3 r#defineZ_MAX_POS 107
$ N' F  B- Y% o% Z7 w#defineZ_MIN_POS 0
上述者定义归巢后的 3D立体打印机的可印刷区域。 对于 X 和 Y轴,你仅仅测量来自家位置的喷嘴的旅行长度。 最大的旅行长度将会或被大小限制那建立月台或藉着轴的最大旅行距离。
当第一次建立 Z 轴的时候,设定 Z 轴旅行长度短于被测量的一点点最好,直到一个软件和3D立体打印机的硬件测试被完成。 这将会帮助避免偶然地撞碎那在开始的测试期间把床加入热的结束。 Z 轴旅行长度可能是罚款调谐的比较迟的在测试已经被满意之后。
测量单位在毫米中而且为在马林鱼固件结构文件中的最大位置从第 249行被定义。 最小的位置能被为这一个结构留在假设值 0 。
" {6 n% E, R& Y2 ]! l
Steps Per Unit – line 275   步骤每一单位 - 第 275 行
#define DEFAULT_AXIS_STEPS_PER_UNIT   {106.76, 106.76, 800, 48.14}
每一单位配置步骤将会是在你开始第一次印刷之前,你做的最后一点点之一的微调。 有心机的步骤每一单位正确地将会给 3D立体印刷的分开最好的开始可能的。然而,如果你正在仅仅升级马林鱼固件或者正在从任何其他的固件升级,如果你仍然有它,你能每一来自旧的结构文件的单位身材得到步骤。
每一单位的步骤意谓数字行走一个高抬腿运步的马马达必须准备等于 1 毫米轴旅行。 单位在马林鱼固件 configuration.h 文件的第 275 行在 X 、 Y 的次序中,Z 和每一来自相同的设计的另一台打印机的单位得到步骤的 E. 会到你需要的非常接近, 而且将会帮助你进行一些高抬腿运步的马马达测试在你之前认真开始每一单位计算正确的步骤为马林鱼固件结构文件。
步骤每一单位计算
为了要每一单位 (毫米) 计算步骤提出马林鱼固件结构文件,你需要找一个好方法正确地测量轴旅行距离。 你可能对暂时的距离有热的结束,以便细丝能被挤出为了要制造测量。代替热的结束和被以带子绑起到床的一个尺使用一个刻度盘指示器能对标准的到处旅行的距离提供一个好正确的方法。 得到最好的准确性你应该抽取样品至少 100 毫米的轴旅行。 你命令打印机使用接口软件,像是 Pronterface 移动被选择的轴100 毫米。 你然后测量真实的距离轴到处旅行的。在你下面使用公式能每一单位计算新的步骤。

& M, ]$ F1 k/ |9 J/ ?8 j
teps 每一单位公式
NewStepsPerUnit=SampleTravelDist/ ActualTravelDist x OldStepsPerUnit
你然后重复上述的公式同样地许多次当做必需的直到被命令的旅行距离相配真实的距离到处旅行的,每次以 NewStepsPerUnit 作为 OldStepsPerUnit。
Adding LCD Support – line 303 增加 LCD 支持 - 第 303 行
#define ULTRA_LCD
要定义的 ULTRA_LCD 需要中使任何类型的 LCD 支持能够。为了要增加对 16 × 2个 LCD 展览的支持,第 303 行需要在上面像代码片断被不批评,藉由除去前述的向前斜线。 预先设定地,马林鱼固件没有LCD 或者按编码器控制嵌板使。能够 促成第 303 行和无别的将会给你为被连接到主板大头针如 pins.h 文件所分配的 16 × 2个 LCD 荧屏支援。大头针任务在被支援主板类型的在每个下面的固件pins.h 文件中被发现。

) U% o  s0 g! [7 [2 `+ o( a7 L
增加点击编码器支持
有能为斜坡 1.3 会被能够的二流行点击编码器控制嵌板的类型。 第一个类型是Ultipanel,能在 Thingiverse 上被发现,而且另一个类型是 RepRapDiscount 的控制器。 对于这一个引导者,我仅仅正在去为Ultipanel 增加笔记因为另一个类型为固件被 RepRapDiscount RepRap wiki 支援。
EnablingULTIPANEL – line 307   促成 ULTIPANEL- 第 307 行
#defineULTIPANEL
EnablingNEWPANEL – line 331   促成 NEWPANEL- 第 331 行
#define NEWPANEL
两者的第 307 和 331 行不预先设定地被能够。 为了要使 20 × 4个 LCD 展览和点击编码器能够, 不批评两者线藉由除去向前的斜线。 这也也会使 SD 卡片支持能够, 一个将会在另外的一个引导者被复盖的特征。 如果第 307 行藉由不批评被能够,不批评第 303 行将不会是必需的。 当 ULTIPANEL 被定义的时候, ULTRA_LCD 将会自动地被定义。
' X' R/ K0 y) M" B0 `
发表于 2014-4-1 17:05 | 显示全部楼层
描述的很详细,很有价值呀,谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2024-3-19 12:12 , Processed in 0.051794 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表