Marlin 固件配置
marlin串口指令
Marlin是一个用于3D打印机的开源固件,它支持通过串口与打印机进行通信,并可以使用一系列指令来控制打印机的操作。
以下是一些常用的Marlin串口指令示例:
1. 移动打印头:
-移动到指定位置:G1 X10 Y20 Z30 F300(将打印头移动到X=10,Y=20,Z=30的位置,速度为300)
-快速回到原点:G28(将打印头快速移动到原点)
2. 设置打印参数:
-设置打印温度:M104 S200(将打印头温度设置为200摄氏度)
-设置热床温度:M140 S60(将热床温度设置为60摄氏度)
3. 控制打印操作:
-启动打印:M106(打开风扇)
-暂停打印:M226(暂停打印,等待操作员确认后继续)
-停止打印:M112(立即停止打印)
4. 查询打印机状态:
-查询温度:M105(获取当前温度信息)
-查询打印进度:M27(获取当前打印进度信息)
这些只是Marlin固件中一些常见的串口指令示例,实际使用时需要根据具体的打印机配置和需求进行相应的指令调整。
marlinsourcecode固件精读(3D Printer)
Sanguinololu 系列
• Sanguinololu, MELZI, STB V1.1
– 採用的蕊片型號 ATmega644P, ATmega1284p – 設定 MOTHERBOARD 為 6 (Sanguinololu 1.2) 62 (Sanguinololu 1.2 and above) 63 (MELZI) 64 (STB V1.1)
Gen 系列
• Gen6 Electronics
– 採用的蕊片型號 ATMega644P, ATMega1284p – 設定 MOTHERBOARD 為 5 或是 51
Gen 系列
• Gen3 Electronics
– 採用的蕊片型號 ATmega644P, ATmega1284p – 設定 MOTHERBOARD 為 9
Marlin 是什麼?
• Marlin 的 特色
– – – – – – – – – 在中斷中,處理步進馬達的梯形加減速 在中斷中,處理擠出頭及加熱板的溫度控制 有軌跡規劃預覽的功能 (look ahead) 支援圓弧軌跡的規劃 利用 PID 控制加熱的溫度 溫度的偵測精度較高、誤差較少 Endstop trigger 時,有中止運作的功能 整個 Marlin 的執行檔約 50 KB 族繁不及備載…
• Gen7 v1.4 Electronics
– 採用的蕊片型號 ATMega644P, ATMega644, ATMega1284p – 設定 MOTHERBOARD 為 13
Gen 系列
• Gen7 Alfons3 Electronics
– 採用的蕊片型號 ATMega644P, ATMega644, ATMega1284p – 設定 MOTHERBOARD 為 10
第7章基于Arduino控制的3D打印机项目
图7-11 材料图
图7-12 联轴器和电机组装图
图7-13 固定图
找出剩余的两根光轴和丝杆,组装成图7-14的样式。 安装过程中要特别注意,光杆要轻缓的穿过直线轴承。 如果遇到阻塞,可以适当的调节期间的宽度,但是动作 一定要轻缓。
图7-14 光轴与丝杆组装图
找出同步带、扎带、张紧弹簧,按图7-15的方法和Y 轴同步带进行组装,一定要注意张紧弹簧的安装位置。
72材料清单序号元器件名称型号参数规格数量参考实物图型材2020铝材246mmx2020铝材410mmz2020铝材385mmy2020铝材410mm横2020铝材230mm横2020铝材150mm耗2020铝材100mm耗电源线12v25maarduino主控板mega2560reprapramps14打印件详见教材配套资料32个1015个11螺母5t124t13直线轴承10个14燕尾夹15联轴器16限位开关ss5g17t8铜螺18轴承m519弹簧20张紧弹簧21同步轮22同步带23usb线24电源线12v25热缩管若干27杜邦线28风扇29固体胶30喷嘴组31螺丝m5821个32m51033m52534m3835m31011个36m31437m31613个38m32039m32540m34041m41022个42包线管43电机17hd4000522b73安装过程首先将所有的型材进行分类找出x型材245mmy型材385mmm5螺丝m5t螺母和角件如图71所示
7.3.2 平台安装
1.平台安装
找出铝板、直线轴承3个、打印件4个、M3螺丝8个、M3T螺母8个、 扎带6个。首先用扎带固定直线轴承在打印件上,之后减掉多余的扎带。然后 将三个直线轴承固定在铝板上。如图7-6所示。
图7-6 直线轴承固定示意图
Marlin相关命令
LTE # cat proc/cptl/mem > /data/cp_mem
exit
adb pull /data/cp_mem ./
1. DUT 1 raise multiconnect. (DUT1 in this case default is GO)
------怎样push ko文件、wpa_supplicant、firmware
adb root
adb remount
(adb push wpa_supplicant /system/bin
adb shell chmod 777 /system/bin/wpa_supplicant
adb push sprdwl.ko /system/lib/modules)
(4)pull slog:
sudo adb root
sudo adb remount
sudo adb pull /data/marlin_log.txt
(b)kernel log:
echo "7" > proc/sys/kernel/printk
cat proc/kmsg > /data/kernel_log.txt &
------怎样看cp2的版本号:
1.echo "at+spatgetcp2info\r" > /proc/mdbg/at_cmd
2.cat /proc/mdbg/at_cmd
-----sharkl dump CP
adb dump cp mem:
adb root
基于Marlin固件的3D打印机支持的G、M代码
// 看这里的G代码描述: /handbook/gcode/g-code.html// /wiki/Mendel_User_Manual:_RepRapGCodes//已被实施的代码//-------------------// G0 -> G1// G1 - 协调运动X Y Z E// G2 - 顺时针旋转ARC// G3 - 逆时针旋转ARC// G4 - 暂停S<seconds> or P<milliseconds>// G10 - 按照M207的设置退丝// G11 - retract recover filament according to settings of M208// G28 - 所有轴归零// G29 - 带着z轴的探针,进行复杂的归零。
(按照在Auto bed leveling中的配置)要在G28之后执行才有效// G30 - Single Z Probe, probes bed at current XY location.// G90 - 使用绝对坐标系// G91 - 使用相对坐标系// G92 - 将当前位置设为给定值(例如:G92 X0 Y0 Z0,即可把当前位置强制设置为零点)// M 代码// M0 - 无条件停止- 等待用户按LCD面板上的按钮(只有当ULTRA_LCD被使能的时候)// M1 - 和M0相同// M17 - 使能(锁死)所有的步进电机// M18 - 取消使能(释放)所有的步进电机;与M84相同// M20 - 列出SD卡的内容,通过串口发回// M21 - 初始化SD卡// M22 - 弹出SD卡// M23 - 选择SD卡文件(M23 filename.g)// M24 - 启动/恢复SD卡打印// M25 - 暂停SD卡打印// M26 - Set SD position in bytes (M26 S12345)// M27 - 报告SD卡打印状态// M28 - Start SD write (M28 filename.g)// M29 - Stop SD write// M30 - 删除SD卡文件(M30 filename.g)// M31 - Output time since last M109 or SD card start to serial// M32 - Select file and start SD print (Can be used _while_ printing from SD card files):// syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"// Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).// The '#' is necessary when calling from within sd files, as it stops buffer prereading// M42 - 通过指令M42 Px Sy来设置引脚x的值(0或1),省略参数Px的话,会默认为配置led引脚。
(完整word版)基于Marlin固件的3D打印机支持的G、M代码
// 看这里的G代码描述: /handbook/gcode/g-code.html// /wiki/Mendel_User_Manual:_RepRapGCodes//已被实施的代码//-------------------// G0 -> G1// G1 - 协调运动X Y Z E// G2 - 顺时针旋转ARC// G3 - 逆时针旋转ARC// G4 - 暂停S<seconds> or P<milliseconds>// G10 - 按照M207的设置退丝// G11 - retract recover filament according to settings of M208// G28 - 所有轴归零// G29 - 带着z轴的探针,进行复杂的归零。
(按照在Auto bed leveling中的配置)要在G28之后执行才有效// G30 - Single Z Probe, probes bed at current XY location.// G90 - 使用绝对坐标系// G91 - 使用相对坐标系// G92 - 将当前位置设为给定值(例如:G92 X0 Y0 Z0,即可把当前位置强制设置为零点)// M 代码// M0 - 无条件停止- 等待用户按LCD面板上的按钮(只有当ULTRA_LCD被使能的时候)// M1 - 和M0相同// M17 - 使能(锁死)所有的步进电机// M18 - 取消使能(释放)所有的步进电机;与M84相同// M20 - 列出SD卡的内容,通过串口发回// M21 - 初始化SD卡// M22 - 弹出SD卡// M23 - 选择SD卡文件(M23 filename.g)// M24 - 启动/恢复SD卡打印// M25 - 暂停SD卡打印// M26 - Set SD position in bytes (M26 S12345)// M27 - 报告SD卡打印状态// M28 - Start SD write (M28 filename.g)// M29 - Stop SD write// M30 - 删除SD卡文件(M30 filename.g)// M31 - Output time since last M109 or SD card start to serial// M32 - Select file and start SD print (Can be used _while_ printing from SD card files):// syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"// Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).// The '#' is necessary when calling from within sd files, as it stops buffer prereading// M42 - 通过指令M42 Px Sy来设置引脚x的值(0或1),省略参数Px的话,会默认为配置led引脚。
marlin固件配置
//波特率的配置,默认配置为 250000,这个需要与你的上位机想匹配,否则无法通讯
//下面开始配置板子的类型,如果你使用的是 ramps1.4 版本,这个参数需要配置为 33 (一个挤出头)或 34(两个挤出头) //// The following define selects which electronics board you have. Please choose the one that matches your setup // 10 = Gen7 custom (Alfons3 Version) "https:///Alfons3/Generation_7_Electronics" // 11 = Gen7 v1.1, v1.2 = 11 // 12 = Gen7 v1.3 // 13 = Gen7 v1.4 // 3 = MEGA/RAMPS up to 1.2 = 3 // 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Bed, Fan) // 34 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed) // 4 = Duemilanove w/ ATMega328P pin assignment // 5 = Gen6 // 51 = Gen6 deluxe // 6 = Sanguinololu < 1.2 // 62 = Sanguinololu 1.2 and above // 63 = Melzi // 64 = STB V1.1 // 7 = Ultimaker // 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare) // 8 = Teensylu // 80 = Rumba // 81 = Printrboard (AT90USB1286) // 82 = Brainwave (AT90USB646) // 9 = Gen3+ // 70 = Megatronics // 701= Megatronics v2.0 // 702= Minitronics v1.0 // 90 = Alpha OMCA board // 91 = Final OMCA board // 301 = Rambo
Marlin固件基本配置
Marlin固件基本配置来源:未知更新时间:2015-02-05 11:25 点击次数:1196概述众所周知,Sprinter固件是之前用的比较多的3D打印机固件,而Marlin固件和Repetier-firmware固件都是由其派生而来。
而且这两款固件的用户群非常活跃,而Sprinter 固件已经没有人维护了。
在这二者中,Marlin固件的使用更加广泛,很多打印机控制软件都兼容Marlin固件。
一般用户在使用M arlin固件的时候只需要改变一下Configuration.h文件中的一些参数即可,非常方便。
这对一般3D大打印玩家来说可是非常好的福利哟。
今天阿巴赛就跟大家一起分享一下这份指南,它是一份简单的用户指南,告诉用户设置的基本信息、怎么运用这些设置、根据不同的需求制定特色功能。
Marlin固件GitHub地址:https:///ErikZalm/MarlinMarlin固件特点Marlin相对于Sprinter有很多优点,具体为以下几点:1. 预加速功能(Look-ahead):Sprinter在每个角处必须使打印机先停下然后再加速继续运行,而预加速只会减速或加速到某一个速度值,从而速度的矢量变化不会超过xy_jerk_velocity。
要达到这样的效果,必须预先处理下一步的运动。
这样一来加快了打印速度,而且在拐角处减少耗材的堆积,曲线打印更加平滑。
2. 支持圆弧(Arc Support)Marlin固件可以自动调整分辨率去以接近恒定速度打印一段圆弧,得到最平滑的弧线。
这样做的另一个优点是减少串口通信量。
因为通过1条G2/G3指令即可打印圆弧,而不用通过多条G1指令。
3. 温度多重采样(Temperature Oversampling)为了降低噪声的干扰,使PID温度控制更加有效,Marlin采样16次取平均值去计算温度。
4. 自动调节温度(AutoTemp)当打印任务要求挤出速度有较大的变化时,或者实时改变打印速度,那么打印速度也需要随之改变。
基于Marlin固件桌面级SCARA机器人设计
SCARA robot system is designed. The system uses a quick-release actuator and a magnetic working platform to quickly
replace components for desktop-level expansion functions such as 3D printing, laser engraving, writing, drawing, grabbing,
and assembly.
Keywords: SCARA robot; programming technology; upper computer; lower computer
1 桌面级SCARA机器人 1.1 桌面级SCARA机器人概述
桌面级的SCARA机器人可以实现多种功能,但都通 过上下位机的操作模式。使用者可以直接通过上位机操 作机械臂执行动作,也可以导入G代码文件让机械手执行 动作,导入的G代码可以是用CAM软件生成的雕刻文件或 切片软件生成的3D打印文件,也可以是使用者编写的G 代码。同时机器人支持智能抓取,PC相当于大脑,一方面 采集摄像头的信息,一方面输出执行代码控制机械手操 作,单片机则相当于运动系统,负责接收传来的信号执行 动作。 1.2 研究内容
机械工程师
MECHANICAL ENGINEER
基于Marlin固件桌面级SCARA机器人设计
吴杨宁, 潘建军, 蔡港培, 叶铃敏, 杨凯明 (福州大学 机械工程及自动化学院,福州 350108)
摘 要:结合Marlin固件的下位机与基于Python和Processing的上位机之间的通讯,通过欧拉方程解决运动学的正逆解,
RSLinx Classic入门指南
OLE for Process Control (OPC) 是 OPC Foundation 的注册商标。
Oracle、 SQL*Net 和 SQL*Plus 是 Oracle Corporation 的注册商标。
保证
客户支持电话 — 1.440.646.3434 联机支持 — /
© 2007 Rockwell Automation Technologies, Inc. 保留所有权利。美国印制。
本文档及 Rockwell Software 产品随附的所有文档均为 Rockwell Automation Technologies, Inc. 版权所有。未经 Rockwell Automation Technologies, Inc 书面许可,严禁复制和/或分 发这些文档。有关详细信息,请参考授权协议。
ActiveX、 Microsoft、 Microsoft Access、 SQL Server、 Visual Basic、 Visual C++、 Visual SourceSafe、Windows、Windows ME、Windows NT、Windows 2000、Windows Server 2003 和 Windows XP 是 Microsoft Corporation 在美国和 / 或其他国家的注册商标或商标。
Adobe、Acrobat 和 Reader 是 Adobe Systems Incorporated 在美国和/或其他国家的注册商 标或商标。
ControlNet 是 ControlNet International 的注册商标。
开源3D打印机软件Marlin使用教程
开源3D打印机软件Marlin使用教程Marlin是一种开源的3D打印机软件,它被广泛应用于各种类型的3D打印机中。
本文将为您提供Marlin的使用教程,帮助您更好地了解和掌握这款强大的软件。
一、Marlin简介Marlin是一个适用于Arduino的开源固件,它提供了一个完整的3D打印机的控制系统。
它支持多种打印机硬件,可以实现高精度、高速度的打印。
Marlin的设计目标是提供易于使用、稳定可靠的3D打印机控制软件,同时还具备灵活性和可扩展性。
二、Marlin的安装1. 下载Marlin软件:您可以在Marlin的官方网站上下载最新版本的软件包。
解压缩后,您可以看到Marlin的源代码和配置文件。
2. 安装Arduino IDE:Marlin是使用Arduino IDE进行编译和上传的,因此您需要先安装Arduino IDE。
您可以在Arduino官方网站上下载最新版本的IDE,并按照安装向导进行安装。
3. 打开Marlin固件:在Arduino IDE中打开Marlin的源代码文件,文件路径为‘Marlin.ino’。
4. 配置您的3D打印机:Marlin支持不同类型的3D打印机,因此您需要根据您的打印机类型进行相应的配置。
打开‘Configuration.h’和‘Configuration_adv.h’文件,根据注释中的说明进行修改。
您可以自定义步进电机的细分、热床温度、打印材料等参数。
5. 编译和上传:选择合适的型号和端口,点击Arduino IDE中的‘编译’按钮进行编译。
编译完成后,点击‘上传’按钮将固件烧录到Arduino板上。
三、Marlin的功能1. 打印控制:Marlin提供了丰富的打印控制选项,可以调整打印速度、温度、材料流量等参数。
您可以通过设置G代码指令和调整面板上的参数来控制打印过程。
2. 网络功能:Marlin支持通过网线或Wi-Fi连接到计算机或网络,实现远程控制和监控。
基于Marlin固件的3D打印机支持的G、M代码
// 看这里的G代码描述: /handbook/gcode/g-code.html// /wiki/Mendel_User_Manual:_RepRapGCodes//已被实施的代码//-------------------// G0 -> G1// G1 - 协调运动X Y Z E// G2 - 顺时针旋转ARC// G3 - 逆时针旋转ARC// G4 - 暂停S<seconds> or P<milliseconds>// G10 - 按照M207的设置退丝// G11 - retract recover filament according to settings of M208// G28 - 所有轴归零// G29 - 带着z轴的探针,进行复杂的归零。
(按照在Auto bed leveling中的配置)要在G28之后执行才有效// G30 - Single Z Probe, probes bed at current XY location.// G90 - 使用绝对坐标系// G91 - 使用相对坐标系// G92 - 将当前位置设为给定值(例如:G92 X0 Y0 Z0,即可把当前位置强制设置为零点)// M 代码// M0 - 无条件停止- 等待用户按LCD面板上的按钮(只有当ULTRA_LCD被使能的时候)// M1 - 和M0相同// M17 - 使能(锁死)所有的步进电机// M18 - 取消使能(释放)所有的步进电机;与M84相同// M20 - 列出SD卡的内容,通过串口发回// M21 - 初始化SD卡// M22 - 弹出SD卡// M23 - 选择SD卡文件(M23 filename.g)// M24 - 启动/恢复SD卡打印// M25 - 暂停SD卡打印// M26 - Set SD position in bytes (M26 S12345)// M27 - 报告SD卡打印状态// M28 - Start SD write (M28 filename.g)// M29 - Stop SD write// M30 - 删除SD卡文件(M30 filename.g)// M31 - Output time since last M109 or SD card start to serial// M32 - Select file and start SD print (Can be used _while_ printing from SD card files):// syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"// Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).// The '#' is necessary when calling from within sd files, as it stops buffer prereading// M42 - 通过指令M42 Px Sy来设置引脚x的值(0或1),省略参数Px的话,会默认为配置led引脚。
3D打印机Marlin固件配置详解
3D打印机Marlin固件配置详解Marlin固件配置详解3D打印机的固件非常多,但是常用的也就几种。
Sprinter、Marlin是使用人最多的。
Sprinter功能相对简单,但是基本的功能都是有的;Marlin的功能相对复杂、强大(更多固件介绍,请《3D打印技术普及(三)主流的3D打印机固件》)。
网上相关的配置文章页很多,但是很多都是不负责任的拷贝,和英文翻译,根本说的不清不楚。
所以今天详细说明一下Marlin固件的配置方法。
固件里面有着大量的宏,和很多的条件编译,各个模块功能都是可以选择是否编译。
一些重要的参数配置是通过宏定义的,都放在了Configuration.h里面,所以我们配置固件的时候只需要简单的修改一下里面的东西就可以了。
(并不难,所以新手并不需要担心软件方面的问题)。
阅读代码我推荐大家使用Source Insight 3.5 网上可以下载到。
主要修改的参数有波特率、控制板类型、挤出机喷嘴个数、打印机的各轴的运动行程、运动速度、运动单位距离所需要的脉冲数等。
下面把需要配置的地方代码贴出来(行数和你的不一定一致,看具体代码为主)。
28行#define BAUDRATE 250000 /* 配置通信波特率 */78行#define MOTHERBOARD 33 /* 配置控制板类型(我这里用的是RAMPS控制板)*/84行#define EXTRUDERS 1 /* 配置挤出头个数*/124行/* 配置温度传感器类型,最常用的是100K热敏电阻,选择1即可*/#define TEMP_SENSOR_0 1/*挤出机0*/#define TEMP_SENSOR_1 0#define TEMP_SENSOR_2 0#define TEMP_SENSOR_BED 1/*热床*/142行//下面的配置是为了保护打印机而做的参数,一般情况不需要修改// The minimal temperature defines the temperature below which the heater will not be enabled It is used// to check that the wiring to the thermistor is not broken.// Otherwise this would lead to the heater being powered on all the time.#define HEATER_0_MINTEMP 5#define HEATER_1_MINTEMP 5#define HEATER_2_MINTEMP 5#define BED_MINTEMP 5//温度低于5度时,打印机将不能启动,表现为报错,并且加热头和热床的加热无法打开//下面的最高温度的配置,防止将打印机烧坏// When temperature exceeds max temp, your heater will be switched off.// This feature exists to protect your hotend from overheating accidentally, but NOT from thermistor short/failure!// You should use MINTEMP for thermistor short/failure protection.#define HEATER_0_MAXTEMP 275#define HEATER_1_MAXTEMP 275#define HEATER_2_MAXTEMP 275#define BED_MAXTEMP 150//此配置是为了防止加热床电阻太小,长时间加热容易烧mos管,增加这个数字,防止mos管太热,但加热时间会增长// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the// average current. The value should be an integer and the heat bed will be turned on for 1 interval of// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4228行/* 保护挤出头配置 *///this prevents dangerous Extruder moves, i.e. if the temperature is under the limit//can be software-disabled for whatever purposes by#define PREVENT_DANGEROUS_EXTRUDE//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.#define PREVENT_LENGTHY_EXTRUDE#define EXTRUDE_MINTEMP 170#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.245行/*限位开关上拉配置,机械开关应保留 */// coarse Endstop Settings#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors268行/* 机械限位开关不用修改*/// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.298行/*根据相应的机械情况进行修改,修改过后电机会反转 */#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false #define INVERT_Z_DIR true// for Mendel set to false, for Orca set to true#define INVERT_E0_DIR false// for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E2_DIR false// for direct drive extruder v9 set to true, for geared extruder set to false/*回到原点方向配置,max为1 ,min为-1 */// ENDSTOP SETTINGS:// 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#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.#define max_software_endstops true// If true, axis won't move to coordinates greater than the defined lengths below.316行/*打印尺寸配置*/// Travel limits after homing#define X_MAX_POS 180#define X_MIN_POS 0#define Y_MAX_POS 180#define Y_MIN_POS 0#define Z_MAX_POS 100#define Z_MIN_POS 0#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)405行/* 每运动1mm所需要的步数(已经被划分了 1/16)// default settings#defineDEFAULT_AXIS_STEPS_PER_UNIT{57.1284,57.1284,2560,625}// default steps per unit for Ultimaker#define DEFAULT_MAX_FEEDRATE {500, 500, 2.5, 25} // (mm/sec)#define DEFAULT_MAX_ACCELERATION{9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.#define DEFAULT_ACCELERATION3000// X, Y, Z and E max acceleration in mm/s^2 for printing moves#define DEFAULT_RETRACT_ACCELERATION3000// X, Y, Z and E max acceleration in mm/s^2 for retracts446行/* 预加热配置,默认即可*/// Preheat Constants#define PLA_PREHEAT_HOTEND_TEMP 180#define PLA_PREHEAT_HPB_TEMP 70#define PLA_PREHEAT_FAN_SPEED 255// Insert Value between 0 and 255 #define ABS_PREHEAT_HOTEND_TEMP 240#define ABS_PREHEAT_HPB_TEMP 100#define ABS_PREHEAT_FAN_SPEED 255// Insert Value between 0 and 255 /*LCD 和SD 卡配置*///LCD and SD support//#define ULTRA_LCD//general lcd support, also 16x2//#define DOGLCD// Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)//#define SDSUPPORT // Enable SD Card Support in Hardware Console//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking//#define ULTIMAKERCONTROLLER //as available from the ultimaker online store.//#define ULTIPANEL//the ultipanel as on thingiverse需要修改的地方拿红色标注出来了。
Marlin 固件配置
Marlin 固件配置So,让我们开始吧。
首先在Arduino IDE中打开Configuration.h,注意做好源文件的备份工作波特率 - 20行#define BAUDRATE 250000//#define BAUDRATE 115200该行是用来决定主控板使用何种波特率来与电脑上的控制软件进行通信的。
通常是用250K和115.2K两种波特率选择,要选择何种波特率,只要将该行前面的”//” 删除,不选择何种波特率只需要在该行前添加“//” (注意:不包括“”)。
默认设置250K在Printrun/Pronterface 和RepSnapper 里面运行都不错。
(我用lubuntu + Pronterface 250K 连接不上的,115.2K 倒没有问题)。
主控板– 49行#ifndef MOTHERBOARD#define MOTHERBOARD 33#endif你可以在注释里可以看到Marlin固件支持的主控板清单,通过修改#define MOTHERBOARD 这行的数字,选择对应的主板编号即可。
上面这行是选择RAMPS 1.3 的意思,你可以按自己实际情况修改该项。
Marlin 固件会根据主板信息定义主控板引脚布局。
具体各种主控板的引脚布局可以在pin.h中看到。
Marlin 固件温控设置现在我来看看温控方面的设置,温控设置有点复杂,但是我们不需要考虑那些复杂的PID计算设置问题。
基本上我们需要做的是选择3D打印机机温度传感器的类型,如果不是你自己安装的温度传感器,你可以在RepRap wiki中了解温度传感器的类型。
热电调节器(热敏电阻)– 78 行#define TEMP_SENSOR_0 1#define TEMP_SENSOR_1 0#define TEMP_SENSOR_2 0#define TEMP_SENSOR_BED 1如果你仔细阅读Marlin固件的配置文件,你会发现支持的固件所支持的温控传感器的类型对应的编号。
马林固件——精选推荐
马林固件⽤的是arduino-1.0.4-windows,打开固件,在Configuration.h选项⾥需要修改的⽤红⾊表⽰)1. 20⾏,选择传输速率是250000.(//#define BAUDRATE 250000,就是去掉前⾯的//,使字体从灰⾊变为⿊⾊)#define BAUDRATE 2500002. 51⾏,改板号,这⾥RAMPS1.3和1.4单喷头都是改成33,如果是双喷头的就改成34.#define MOTHERBOARD 333. 90~93⾏,温度检测器的种类选择,我们⼀般都是⽤NTC 100K的,改成1, 90~92⾏是三个喷头,93⾏是热床.(0是表⽰没有) #define TEMP_SENSOR_0 1#define TEMP_SENSOR_1 0#define TEMP_SENSOR_2 0#define TEMP_SENSOR_BED 14. 111~114⾏,最⾼温度限制.#define HEATER_0_MAXTEMP 250 #define HEATER_1_MAXTEMP 250#define HEATER_2_MAXTEMP 250#define BED_MAXTEMP 1205. 246~251⾏,电机⽅向选择,true和false,⽅向相反.或者也可以对调电机同相的两根线.#define INVERT_X_DIR true#define INVERT_Y_DIR true#define INVERT_Z_DIR true#define INVERT_E0_DIR false#define INVERT_E1_DIR false#define INVERT_E2_DIR false6. 262~267⾏,设置软件限位,根据你的机架最⼤⾏程来设置,MAX是最⼤,MIN是最⼩.#define X_MAX_POS 190#define X_MIN_POS 0#define Y_MAX_POS 200#define Y_MIN_POS 0#define Z_MAX_POS 180#define Z_MIN_POS 07. 288⾏,电机脉冲当量设置,根据你的电机⾓度(⼀般都是1.8度),细分,传动⽅式来设置,计算公式:同步带轮 200x细分/(节距x齿数)螺杆 200x细分/螺距语句后⾯的⼤括号⾥填上相应的计算值: X Y Z E#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,640,80}8. 322~328⾏,PLA和abs默认的温度设置以及风扇转速.#define PLA_PREHEAT_HOTEND_TEMP 180#define PLA_PREHEAT_HPB_TEMP 70#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255#define ABS_PREHEAT_HOTEND_TEMP 240#define ABS_PREHEAT_HPB_TEMP 100#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 2559. 351⾏,12864LCD设置.//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER删除前⾯的//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER暂时这么多.。
使用VSCode编译Marlin固件
使⽤VSCode编译Marlin固件前⾔在阅读本⽂之前,您应该已经阅读了。
VSCode中的PlatformIO插件:将 VSCode 变成了⼀个完整的 IDE,⽤于编译和开发 Marlin。
1.安装1.1安装VSCode访问页⾯,为您的特定平台下载并安装最新的 VSCode。
1.2安装 PlatformIO IDE前往“ ”页⾯了解如何在 VSCode 中安装 PlatformIO IDE。
(最快的上⼿⽅法是安装,PlatformIO 也会随之安装。
)安装 PlatformIO IDE2.在 VSCode / PlatformIO 中打开 Marlin您可以通过以下⼏种⽅式之⼀在Visual Studio Code中打开 Marlin :将下载的 Marlin Firmware ⽂件夹拖到Visual Studio Code应⽤程序图标上,或使⽤VSCode File菜单中的Open...命令,或打开 PIO Home 选项卡,然后单击“ Open Project ”按钮。
3.设置你的环境为您的开发板⼿动设置环境:打开⽂件platformio.ini并更改default_envs为您的开发板使⽤的环境。
查看此⽂件以了解您的芯⽚的环境名称。
例如,LPC1768芯⽚的环境名称显⽰为[env:LPC1768]. 省略外包装:[env:____].当您单击PlatformIO按钮时,您将看到PROJECT TASKS包括Build和Upload。
这些按钮将构建和上传您的默认环境。
如果您不想设置,请从PlatformIO Project Tasks 列表default_envs中为您的开发板选择环境。
识别主板环境主板所需的 PlatformIO 环境在pins.h⽂件中的主板注释中。
在 Marlin 2.0 中,它位于⼦⽬录Marlin/src/pins/pins.h中。
例⼦:Configuration.h ⽂件中有#define MOTHERBOARD BOARD_RAMPS_14_EFB在pins.h⽂件中搜索RAMPS_14_EFB ,直到出现以下内容:#elif MB(RAMPS_14_EEB)#include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560注释的第⼀部分列出了板上使⽤的 CPU。
DIY 3D打印机 GM指令详解
G-M指令详解来源:未知更新时刻:2021-02-05 11:11 点击次数:629概述众所周知,3D打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即G-M指令集。
而固件就负责说明这些指令,并将命令指派给电子原件,从而完成打印任务。
因此,固件和指令集必需彼此配合,不然打印机可不能正常工作。
开源的3D打印机利用的固件多种多样,但和这些固件匹配的指令集绝大多数指令都相同,即RepRap G-M指令集。
由于Marlin固件利用的最为普遍,笔者就以Marlin固件的指令集为例作表达。
了解G-M指令有什么用?这用途可大了。
帮忙利用者更方便地调试打印机,检测打印机的问题,扩展打印机菜单功能…终归益处多多,不管你信不信,终归我是信了。
废话不多说,进入正题。
G-M指令集确实是一些以G或M开头的代码,有时候还会搀杂一些以其其他字母以标示参数意义,比如T、S、F、P等。
具体意义见下表,表中nnn表示数字。
因此,能够被Marlin固件识别的代码应该是像下面的样子:详解注释G-Code一行中分号“;”后面的内容为说明性语句,即注释。
固件会忽略其内容。
为了减少通信量,能够把注释信息都去掉。
标记代码N 和*,比如N123 [...G Code 写在那个地址...] *71。
这是行码和标记码。
RepRap的固件会以一个本地计算的值来对照标记码,假设是二者值不同,就会要求重复输入该条指令。
行码和检查码都能够去掉,RepRap 仍会工作, 但它可不能做检查。
你必需同时利用,或同时舍弃利用。
检查码cs 是通过对对应的指令(包括它的的行码)的原始字节数据进行异或位运算得出的。
检查码cs的值即是其*符号右边的十进制数字,RepRap固件希望每次命令的行代码都是逐次增加1的大小,不然的话,它会返回一个错误。
固然你也能够发送一个M110命令(详情请看下面)强行重置机械。
行码和检查码是为了减少信号干扰。
延时G 命令RepRap固件接收到这些指令后,会先存储在一个循环队列缓存里再执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Marlin 固件配置So,让我们开始吧。
首先在Arduino IDE中打开Configuration.h,注意做好源文件的备份工作波特率 - 20行#define BAUDRATE 250000//#define BAUDRATE 115200该行是用来决定主控板使用何种波特率来与电脑上的控制软件进行通信的。
通常是用250K和115.2K两种波特率选择,要选择何种波特率,只要将该行前面的”//” 删除,不选择何种波特率只需要在该行前添加“//” (注意:不包括“”)。
默认设置250K在Printrun/Pronterface 和RepSnapper 里面运行都不错。
(我用lubuntu + Pronterface 250K 连接不上的,115.2K 倒没有问题)。
主控板– 49行#ifndef MOTHERBOARD#define MOTHERBOARD 33#endif你可以在注释里可以看到Marlin固件支持的主控板清单,通过修改#define MOTHERBOARD 这行的数字,选择对应的主板编号即可。
上面这行是选择RAMPS 1.3 的意思,你可以按自己实际情况修改该项。
Marlin 固件会根据主板信息定义主控板引脚布局。
具体各种主控板的引脚布局可以在pin.h中看到。
Marlin 固件温控设置现在我来看看温控方面的设置,温控设置有点复杂,但是我们不需要考虑那些复杂的PID计算设置问题。
基本上我们需要做的是选择3D打印机机温度传感器的类型,如果不是你自己安装的温度传感器,你可以在RepRap wiki中了解温度传感器的类型。
热电调节器(热敏电阻)– 78 行#define TEMP_SENSOR_0 1#define TEMP_SENSOR_1 0#define TEMP_SENSOR_2 0#define TEMP_SENSOR_BED 1如果你仔细阅读Marlin固件的配置文件,你会发现支持的固件所支持的温控传感器的类型对应的编号。
TEMP_SENSOR_0是喷嘴的温控传感器类型、TEMP_SENSOR_BED是加热床的温控传感器类型,一般来说都是100K 热敏电阻。
如果你是用RAMPS 1.3 主控板和pin.h中使用默认布局的话,你可以在主控板的T0和T1 接口分别对应TEMP_SENSOR_0 和TEMP_SENSOR_BED。
选择0即关闭该接口。
请选择合适你打印机的温控传感器吧。
温度限制(最大值)– 99 行#define HEATER_0_MAXTEMP 275#define HEATER_1_MAXTEMP 275#define HEATER_2_MAXTEMP 275#define BED_MAXTEMP 120有些喷嘴和加热床的最大工作温度会低于Marlin固件的默认最大温度,为了减少对喷嘴和加热床的损害,可以设置最高温度限制。
Marlin 固件的机械设定机械设定部分包括限位开关、步进电机、最大制造范围和运动位移值。
限位开关和上拉电阻这一节将教你配置3D 打印机每个轴中的限位开关。
用G28命令会让3D 打印机的3个轴回零方向运动直到碰到限位开关。
限位开关如果没有5V 电源作为产生信号源的话,配置ENDSTOPPULLUPS 会确保让固件产生一个信号、当限位开关接通时才会产生明确的数字信号0。
如需了解更多请参考RepRap wiki 的(机械限位开关)Mechanical Endstop,OptoEndstop 2.1(光学限位开关)and Gen7 Endstop 1.3.1。
(最好就是按机械开关的原理图来制作限位开关,这样的效果最好。
)限位开关上拉电阻总体控制–194行// corse Endstop Settings#define ENDSTOPPULLUPS //Comment this out (using // at the start of the line) to disable the endstoppullup resistorsMarlin固件默认是需要限位开关的上拉电阻的。
从207行开始固件为每个限位开关分配独立一个上拉电阻,如果194行被取消则从197行开始的上拉电阻控制都会一并取消。
这样方便你自己的3d 打印机采用不同类型的限位开关。
一般来说X轴和Y 轴采用机械限位开关,可以不需要制作3线的数据口,而Z轴的光学开关默认为3线的数据口。
这是光学开关就不需要使用到ENDSTOPPULLUPS注释。
限位开关上拉电阻细分控制– 196行#ifndef ENDSTOPPULLUPS// fine Enstop settings: Individual Pullups.will be ignord if ENDSTOPPULLUPS is defined #define ENDSTOPPULLUP_XMAX#define ENDSTOPPULLUP_YMAX#define ENDSTOPPULLUP_ZMAX#define ENDSTOPPULLUP_XMIN#define ENDSTOPPULLUP_YMIN//#define ENDSTOPPULLUP_ZMIN#endif如果Configuration.h194行被注释掉的话,则196行的语句将会被执行。
你可以独立控制每个限位开关的上拉电阻,当然这个是要根据你3D 打印机的限位开关类型来确定.限位开关方向控制- 216 行// The pullups are needed if you directlyconnect a mechanical endswitch between the signal and ground pins.// set to true to invert the logic of theendstops.const bool X_ENDSTOPS_INVERTING = false;const bool Y_ENDSTOPS_INVERTING = false;const bool Z_ENDSTOPS_INVERTING = false;机械限位开关通常会把连线连在常通(NC) 端,这就会有个一个数字信号1输入到主控中。
如果你的机械限位开关的连线是连在常关(NO)端,这就需要在ENDSTOPS_INVERTING 采用ture 从而是数字信号0反向变为1.对于光学开关来说,则一般不用进行调整。
你应该在电脑控制软件中实际试验一下限位开关的方向是否与你的预期相符,如果轴运动时触动限位开关就停止则说明,该项设置正常。
注意在做此测试时,应该给各个轴留出足够的运动反应空间。
以免损坏机器。
关闭最大限位开关– 219 行//#define DISABLE_MAX_ENDSTOPS上述这行代码在marlin 固件Configuration.h(219行),通常情况下是被注释掉的。
如果你的打印机的原点开关安装在X、Y、Z轴最大位置的话,这个就需要去掉注释符号。
通常情况下Z轴的限位开关是放在Z轴最大限位,这样可以使hot end 可以免受挤压。
为了达到这个目的,这样就需要去掉注释。
但是这行对于那些没有最大限位开关的主控板是没有用的哦!关闭轴– 228 行// Disables axis when it’s not being used.#define DISABLE_X false#define DISABLE_Y false#define DISABLE_Z true#define DISABLE_E false // For all extruders通常情况下上面的代码是不改动的,所有轴都是选择false 的。
然而,如果你的3D打印机z轴有手动调整的部件,可以在#define DISABLE_Z 行选true ,这样在打印机打印时,可以手动调整z轴。
步进电机我们已经来到了设置步进电机部分,这部分主要设置步进电机运行方向、限位开关逻辑、行程、步进长度单位。
前面部分的限位开关已经测试好了,所以这部分的测试就相对简单很多了。
步进电机运转方向– 233行#define INVERT_X_DIR true#define INVERT_Y_DIR true#define INVERT_Z_DIR true#define INVERT_E0_DIR true#define INVERT_E1_DIR false#define INVERT_E2_DIR false这部分是决定3d打印机各个轴的运行方向的,默认的选项不一定适合每一种打印机,所以我个人建议是先测试其他项目,最后才测试这部分。
这是当我们经过接口软件控制3D立体打印机,我们哪里决定哪一个方向每个轴将会去。
当我们将一个指令送到的时候驱使+10 毫米前进一个轴,我们期待轴移动被期望的方向的10 毫米。
开始的高抬腿运步的马马达方向能难以没有打开打印机而且表演一个测试预测。
因此我会建议离开这些设定直到最后的而且在以测试着手进行之前完成马林鱼固件结构的其它部分。
一经马林鱼固件结构文件被配置充足操作3D立体打印机,你能运行一个测试检查每个轴搬进正确的方向。
设定他们的完整旅行距离的每个轴中点然后打开打印机。
在经过接口软件,像是Printrun/pronterface 对3D立体打印机连接之后,藉由慢跑他们积极的方向的10 毫米测试每个轴。
对于每个轴的高抬腿运步的马马达旋转方向能藉由变更逻辑在马林鱼固件结构中从第233 行被改正。
你会需要也测试挤压机高抬腿运步的马马达方向。
这能没有细丝被做装载而且带来热的达175 度的结束温度因此马林鱼固件将会允许挤出。
送一经过3D立体打印机接口软件挤出指令而且观察方向细丝驾驶齿轮滑车旋转。
对于挤压机的旋转方向能藉由变更逻辑从第236 行被改正。
当第一次表演轴归巢和轴慢跑的时候,准备好按重新设定按钮或者准备好关掉电源避免撞碎的轴很重要。
分开地回家每个轴确定轴正在向结束停止回家。
如果你能达成结束停止容易地,在轴已经完成它之前,你能早引起他们为一个安全的测试是旅行。
结束停止家方向- 第242 行// 设定endstops 的方向当归巢; 1=最大, -1=最小#定义X_HOME_DIR-1#定义Y_HOME_DIR-1#定义Z_HOME_DIR 1End 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基本上你告诉结束停止开关被位于的轴结束的马林鱼固件。