Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >3D打印机marlin固件自动调平设置和使用及方向及坐标系设置

3D打印机marlin固件自动调平设置和使用及方向及坐标系设置

作者头像
怪兽
发布于 2022-10-04 08:28:16
发布于 2022-10-04 08:28:16
6.9K00
代码可运行
举报
文章被收录于专栏:怪兽怪秀怪兽怪秀
运行总次数:0
代码可运行

自动调平

1. 硬件接线

电路连接:直接接Zmin接口,替换原来的Zmin传感器 (个人使用的接近开关,接在ZMax 并没有撤销原来的行程开关)

2. 固件修改

我们建议您在使用床架之前,尝试手动调试打印机尽可能达到最佳状态,因为所有床架只能补偿“不良”硬件,而不会对它进行纠正。

a) 传感器引脚接在Zmin的引脚上

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN 如果不接在Zmin引脚,对于RAMPS 1.3/1.4 可以用Aux4->D32 pin:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default

b) 选择用的那种传感器

各传感器详见 http://marlinfw.org/docs/configuration/probes.html

我们这里选择

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define FIX_MOUNTED_PROBE

c) 设置喷嘴与Z探针的偏移

#define NOZZLE_TO_PROBE_OFFSET {-40, 16, -10 } 这里需要根据自己安装位置进行设置,不同机器设置参数不一样,详细见marlin程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Specify a Probe position as { X, Y, Z }

注意:初次使用需要调试Z轴的偏移量。调试方法,先将Z偏移量设置为一个较大的负数,如-10,然后机器全部归零,当Z轴归零过程中,探针触发到自动调平的传感器,此时机器认为Z轴高度为负的Z偏移量(示例为10mm),手动移轴Z轴,当喷嘴接触到平台/热床(可在喷嘴正下放置A4纸的方法确定是否接触),记录此时剩余的Z高度,比如Z向下移动5.51mm后,喷嘴接触到热床,则修改Z偏移量为-5.51mm。

d) 设置探针距离边缘的距离

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define MIN_PROBE_EDGE 10

2.0.7版本的marlin中更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define PROBING_MARGIN 10

e) 设置 探针之间的X和Y轴移动速度(mm / m)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define XY_PROBE_SPEED 2500
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define XY_PROBE_SPEED 2500

f) 设置探测几遍 2或者3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define MULTIPLE_PROBING 2

g) 启用M48重复性测试以测试探针的准确性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define Z_MIN_PROBE_REPEATABILITY_TEST

h) 选择调平方式(小的平板热床)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define AUTO_BED_LEVELING_LINEAR

建议2560就用这个

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define AUTO_BED_LEVELING_BILINEAR

更好的控制器可以选这个

i) 设置探测点数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define GRID_MAX_POINTS_X 4

200的热床设置为4*4点,更大的热床适当增大点数

j) 启用数据存储到EEPROM上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define EEPROM_SETTINGS     // Persistent storage with M500 and M501

k) 启用LCD按钮

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define LCD_BED_LEVELING

l)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define Z_SAFE_HOMING

m) 修改速度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define HOMING_FEEDRATE_XY (40*60)

n) 归零时的最小高度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define Z_HOMING_HEIGHT 20

不能太小,否则归零时,探针容易被热床挡住

o) 未探测边界区域延申 AUTO_BED_LEVELING_BILINEAR才可以用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define EXTRAPOLATE_BEYOND_GRID

通常,探测到的网格不会一直延伸到床的边缘。因此,在探测网格的边界之外,Z调整可以采用以下两种方法之一。Z高度可以通过最近的网格框的确定的倾斜度继续升高/降低(最好是在探测了大部分床时),或者它可以遵循最近的边缘的轮廓(默认值)。启用此选项进行推断。

3. 使用方法

1)下载好固件后,使用屏幕进行自动调平探测,探测完使用屏幕保存探测数据

  1. 运行以下Gcode进行调平
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
G28 ;move X/Y Z to min endstops

G29; 自动调平   不需要每次都设置

M500;保存 leveling data到EEPROM

M501;加载 EEPROM中的leveling data

3)切片软件“Start G-code”中加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
G28 ;move X/Y Z to min endstops

M501;加载 EEPROM中的leveling data

M420 S1;启用床平整

4. 扩展资料:

床平整G代码解读

a) G28: X YZ 轴回零

b) G29: 开启床平整探测

Note1: 使用G29后 leveling data 仅保存再RAM中,必须使用M500将数据保存到EEPROM中,否则机器重启或重新连接打印机后,leveling data将丢失。

Note2: G29后床平整是自动打开的,但其他时候必须使用M420 S1 启用床平整

c) M500 : 保存leveling data到EEPROM中(须开启#define EEPROM_SETTINGS)

d) M502: 重置leveling data

e) M501: 重新加载最后保存到EEPROM中的leveling data(开机自动完成),使用M501后会关闭床平整功能,需要再次使用M420 S1开启床平整

f) M420 S1: 启用床平整,推荐将其加入到切片的“Start G-code”中,使用M420 S1前必须使用M501 加载数据。使用G28后必须使用M420 S1 打开床平整

g) M420 V 上位机内查看当前leveling data,leveling data示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0      1      2      3

 0 -1.089 -1.048 -1.113 -1.503

 1 -0.147 +0.049 +0.231 +0.268

 2 +0.668 +0.874 +1.033 +1.117

 3 +1.350 +1.524 +1.693 +1.927

数是正的 就是高了,(0,0)代表左下角 横坐标是Y

5进阶设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define Z_CLEARANCE_DEPLOY_PROBE   5 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES  1 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE     1 // Z Clearance between multiple probes

坐标系设置

修改最大限位和最小限位

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

步进电机运动方向

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false

归零方向

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

1为max -1为min

###定义归零坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//#define MANUAL_X_HOME_POS 0
//#define MANUAL_Y_HOME_POS 0
//#define MANUAL_Z_HOME_POS 0

因为一开始组装的时候的无知,单纯为了美观把所有的线都藏在X轴后面,造成坐标系跟官方默认并不一致,后来用切片软件镜像修复的。这次完善调平打算一起修改过来,成功是成功了。但是使用习惯问题,反而感觉更别扭,就又撤销回来了。

参考文章:「https://www.bilibili.com/read/cv9090256 https://tieba.baidu.com/p/7252221823」

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实现 LRU 缓存算法
LRU 算法全称是最近最少使用算法(Least Recently Use),是一种简单的缓存策略。顾名思义,LRU 算法会选出最近最少使用的数据进行淘汰。
Se7en258
2022/06/24
1K0
实现 LRU 缓存算法
☆打卡算法☆LeetCode 146. LRU 缓存 算法解析
请你设计并实现一个满足  LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类:
恬静的小魔龙
2022/08/07
3230
☆打卡算法☆LeetCode 146. LRU 缓存 算法解析
经典算法之链表篇(三)
ma布
2024/10/21
1110
经典算法之链表篇(三)
【LeetCode】146. LRU 缓存机制
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类:
韩旭051
2021/01/07
4680
LRU算法简介
LRU(Least Recently Used)算法是一种缓存淘汰算法,常用于缓存系统中,通过保留最近使用的数据而淘汰最久未使用的数据,以提高缓存的命中率。LRU算法的核心思想是基于时间局部性原理:最近访问的数据在未来会被再次访问。
孟斯特
2024/01/28
6990
LRU算法简介
lru_cache分析
在计算机软件领域,缓存(Cache)指的是将部分数据存储在内存中,以便下次能够更快地访问这些数据,这也是一个典型的用空间换时间的例子。一般用于缓存的内存空间是固定的,当有更多的数据需要缓存的时候,需要将已缓存的部分数据清除后再将新的缓存数据放进去。需要清除哪些数据,就涉及到了缓存置换的策略,LRU(Least Recently Used,最近最少使用)是很常见的一个,也是 Python 中提供的缓存置换策略。
Yerik
2021/08/22
6600
Leetcode LRU 缓存机制
缓存是一种提高数据读取性能的技术,在计算机中cpu和主内存之间读取数据存在差异,CPU和主内存之间有CPU缓存,而且在内存和硬盘有内存缓存。当主存容量远大于CPU缓存,或磁盘容量远大于主存时,哪些数据应该被应该被清理,哪些数据应该被保留,这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略FIFO(First In,First Out)、最少使用策略LFU(Least Frequently Used)、最近最少使用策略LRU(Least Recently Used)。
用户10384376
2023/02/25
3290
Leetcode LRU 缓存机制
LRU 缓存机制实现:哈希表 + 双向链表
LRU 缓存机制可以通过哈希表辅以双向链表实现,我们用一个哈希表和一个双向链表维护所有在缓存中的键值对。
一个会写诗的程序员
2021/03/23
2K0
LRU 缓存机制实现:哈希表 + 双向链表
146. LRU 缓存机制
要在O(1)时间复杂度完成这两种操作,我们想到的使用HashMap来进行操作,而且参考LRUCache的特性,需要对元素进行移动或者删除,首选的是双向链表。
用户7447819
2021/07/23
2990
2020-09-18:LRU手撸,说下时间复杂度和空间复杂度。
空间复杂度:O(capacity),因为哈希表和双向链表最多存储 capacity+1 个元素。
福大大架构师每日一题
2020/09/18
1.1K0
2020-09-18:LRU手撸,说下时间复杂度和空间复杂度。
搞定大厂算法面试之leetcode精讲15.链表
搞定大厂算法面试之leetcode精讲15.链表 视频讲解(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 链表操作如下图: 动画过大,点击查看 时间复杂度: prepend: O(1
全栈潇晨
2021/12/02
4540
Leetcode模块训练2
1. 两数之和(1)# 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2
素履coder
2022/11/16
3420
十道腾讯算法真题解析!
大家好,我是捡田螺的小男孩。收集了腾讯常考的十道算法题(真题)。在金三银四,希望对大家有帮助呀。
捡田螺的小男孩
2022/04/06
9000
十道腾讯算法真题解析!
LRU缓存
LRU 算法就是一种缓存淘汰策略,原理不难,但是面试中写出没有 bug 的算法比较有技巧,需要对数据结构进行层层抽象和拆解,本文就带你写一手漂亮的代码。
狼啸风云
2023/11/18
2260
LeetCode-146-LRU缓存机制
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。
benym
2022/07/14
3160
实现LRU算法
计算机的缓存容量有限,如果缓存满了就要删除一些内容给新的内容腾出位置,而删除哪些内容,就有不同的策略,LRU算法是其中一种策略。
Defu Li
2020/09/08
8740
【设计数据结构】实现一个 LRUCache
这是 LeetCode 上的 「146. LRU 缓存机制」 ,难度为 「中等」。
宫水三叶的刷题日记
2021/06/23
7010
数据结构与算法思想
分治法是基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
知一
2021/12/07
4410
数据结构与算法思想
漫画:什么是LRU算法?
用户信息当然是存在数据库里。但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库。
AI科技大本营
2019/05/16
5980
Python中的collections
在 Python 中,collections是一个非常有用的内置模块,它提供了一些高性能的数据类型,可以帮助你更高效地处理数据。
宅蓝三木
2024/10/09
1190
相关推荐
实现 LRU 缓存算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验