
Arduino Uno 3D打印盾与树莓派扩展帽与简易屏幕
简介
与Arduino Uno尺寸兼容的3D打印盾、与树莓派Zero尺寸兼容的扩展帽、以及对简易屏幕的复刻。 可用于使用Klipper固件的Voron 0等小型3D打印机。
简介:与Arduino Uno尺寸兼容的3D打印盾、与树莓派Zero尺寸兼容的扩展帽、以及对简易屏幕的复刻。 可用于使用Klipper固件的Voron 0等小型3D打印机。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
3D打印盾刚好足够构建一台具有最基本功能的Voron 0,如果希望增加一些接口,还需要搭配树莓派扩展帽来一起使用。如果用的是Klipper,连接两个打印盾应该也行。
另外还重新绘制了V0 Simple Display,使用相同的元件位置以保持兼容性。
3D打印盾
设计灵感来自于Protoneer的CNC Shield和RepRap项目的Arduino Mega Pololu Shield (RAMPS)(也许可以把这块板子叫做Arduino Uno Pololu Shield?)
该扩展盾设计为Arduino Uno R3使用,不过理论上可以兼容任何使用Uno尺寸插座的开发板,许多MCU的官方开发板都支持Arduino的针脚布局(比如瑞萨和意法)。
为了兼容3.3V和5V两种电平的开发板,因此通过Uno R3上的IOREF接口进行取电。这个接口在一些非常老的Uno开发板上可能并不存在,所以在右上角提供了外部电源输入的焊盘可以使用。
使用Type-B接口(大方口)的开发板可能会和MOS出现干涉。不过现在许多Uno板都换Micro-B或者Type-C了。稍微移动一下焊接MOS的位置可能会消除干涉的情况,实在不行的话,可以拆除Type-B接口,然后直接使用Arduino的串口(0和1引脚)进行通信,
该设计主要供Klipper使用,不过其他程序应该也能兼容。
强烈推荐使用TMC2209步进电机驱动模块,为了节省IO、所有步进电机驱动器的En引脚都被固定连接到GND来使其默认为开启状态。而TMC2209可以通过单线串口而不是En引脚来控制驱动器的开关,因此在不使用时可以关闭。
另外,3D打印盾不具备电源功能,因此需要单独为开发板和树莓派提供电源。
扩展盾的IO接口如下:
- Arduino Uno 尺寸兼容排针
- 4个兼容Pololu步进电机驱动器模块引脚的插座
- 2个加热器接口
- 2个风扇接口
- 3个限位开关接口(与软限位复用)
- 2个热敏电阻接口
每个接口的具体的位置请查看PCB上的丝印。
跳线设置
通过步进电机驱动器位置处的跳线可以控制细分、串口等功能。跳线序号如下:
10 | 7 | 4 | 1 |
---|---|---|---|
11 | 8 | 5 | 2 |
12 | 9 | 6 | 3 |
其中6和3为软限位跳线、12和9为串口跳线、其余位置则根据使用的驱动模块不同而具有不同的功能。
使用串口控制TMC2209驱动模块(推荐)
当使用TMC2209驱动模块并通过串口进行配置时,首先需要连接串口跳线帽。有些模块需要将跳线帽连接在11-12上、有些则需要连接8-9、也有些两者都可以,具体如何连接取决于所使用的驱动模块是如何设计的。
另外,当插入不止一个TMC2209模块时,还需要通过跳线为模块设置串口地址,并且最好为每一个模块都设置不同的串口地址,以便于为不同模块下发不同的设置。
地址 | 跳线 |
---|---|
0 | 不插入 |
1 | 1-2 |
2 | 4-5 |
3 | 1-2和4-5 |
当使用TMC2209并使用串口控制时,可以为编号为0、1、2的三个步进电机驱动器使用软限位功能(即无限位归零)。连接对应模块的3-6跳线即可将软限位使用的DIAG引脚接入到限位电路中。不过在连接软限位跳线后,就不应该在对应的接口处连接限位开关了。
其他驱动模块(不推荐)
当步进电机驱动器不支持串口(比如A4988)或工作在Standalone模式时,不使用最下面的横行、即3、6、9、12针脚。这种情况下,首先需要在10和11引脚上插入跳线帽,然后根据需要使用的微步设置来插入其他跳线帽。
微步 | 跳线 |
---|---|
全步 | 不插入 |
半步 | 1-2 |
4分 | 4-5 |
8分 | 1-2和4-5 |
16分 | 1-2、4-5、7-8 |
固件编译
详细内容可以参考Klipper文档
大体而言,主要操作步骤为:
-
进入Klipper目录并进入编译配置界面
cd ~/klipper/
make makeconfig
-
选择所使用的微控制器,并进行配置。
-
输入make进行编译。
-
将编译后的结果烧录到微控制器。(有时可以和第三步合并进行)
烧录的方式根据所使用的开发板和微控制器不同而有所不同,具体的操作方式还请参考对应设备的说明。
为ATmega328P配置编译工具链
版本高于Buster的Debian发行版存在AVR编译工具链问题,无法为ATmega328P编译。因此需要先对相关软件包进行降级操作后才Klipper才能为ATmega328P编译固件。该解决方法来自于Github的Issue
如果使用其他开发板的话,可以直接跳过本节。
- 添加Buster源仓库
打开/etc/apt/sources.list
文件sudo nano /etc/apt/sources.list
在最下面新建一行,添加deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- 指定AVR工具链版本
创建文件sudo nano /etc/apt/preferences.d/avr-buster
在文件中填写以下内容
Package: avr-libc avrdude binutils-avr gcc-avr
Pin: release n=buster
Pin-Priority: 1001
- 重新安装AVR软件包
sudo apt update
sudo apt install avr-libc avrdude binutils-avr gcc-avr
若遇到软件源签名问题,可尝试使用以下命令
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E
- 使用make clean清理之后重新编译
对于该扩展盾而言,编译时应为ATmega328P去除一些无用的功能(例如外部ADC或者连接传感器等功能),以避免编译文件过大无法烧录的情况。
树莓派Zero扩展帽
由于3D打印盾仅能保证最基本的打印功能,因此使用该扩展帽可以提供一些额外的接口来使用。同样的,该扩展帽不具备电源功能。
提供的接口如下:
- 1个简易屏幕接口
- 1个5V电平串口
- 1个I²C接口(与屏幕接口的I²C相连)
- 1个兼容ICSP引脚规范的SPI接口,额外具有两个设备片选引脚
- 2个风扇接口
- 2个开关接口
- 2个继电器接口
- 7个未引出的针脚,因为不知道还能干什么。
该扩展帽虽然为屏幕上的WS2812B LED提供了引脚,但目前Klipper无法使用树莓派的GPIO来操作WS2812系列LED。不过由于所使用的引脚可以提供PCM和PWM功能,因此可以在Klipper之外使用这两者来控制LED。(使用的PWM0与其中一个风扇接口冲突。除此之外,理论上也可以将其连接到SPI接口来控制)
树莓派的GPIO内置了上拉和下拉两种模式,因此R7和R8两个电阻即使省略应该也可以使用。
由于是为了搭配Arduino使用,因此串口处设置了电平转换到5V的电路,如果使用3.3V开发板,可以把GPIO排母换成加长针脚的类型,然后直接从GPIO处连接即可。除串口之外,所有接口都使用3.3V电平。
编译
Klipper的上位机程序(Klippy)不提供直接操作GPIO的功能,因此使用树莓派的GPIO需要为树莓派编译Klipper程序来运行。
Klipper使用树莓派GPIO的方式和使用其他微控制器的方式类似,都是使用make makeconfig
来配置编译。为树莓派等设备进行编译时,使用的微控制器架构为Linux Process
即Linux进程。
除了编译之外,还需要针对操作系统进行一些额外配置。具体操作方式请参考Klipper文档。
简易屏幕
仿照V0 Simple Display画的。其他的Voron屏幕模块大都具有独立的微控制器,通过USB等接口与上位机进行通信。而这款简易屏幕则是直接将屏幕上的组件连接到10Pin IDC插座,使其可以连接到已有的其他微控制器当中,大幅度节省成本。
简易屏幕提供以下功能:
- 1.3英寸OLED I²C屏幕
- 旋钮
- 急停按钮
- LED指示灯
在选购I²C屏幕模块时,需要注意一下模块使用的驱动芯片,应选择使用SH1106的模块。使用SSD1306的模块虽然也可以使用,但无法设置X偏移,很可能会出现部分像素无法显示的情况。
背部焊盘作用是交换OLED屏幕模块前2个引脚,默认是1-GND,2-VCC。如果屏幕模块正好相反的话,需要切断阻焊层下原有的线路,并连接到另外一边。
焊接时推荐先焊接LED部分并进行测试,这是因为将LED信号电平提升到5V所使用的施密特触发器位于屏幕下方,如果出现问题的话需要拆掉屏幕,比较麻烦。
如果打算将该屏幕连接至树莓派,由于Klipper无法通过树莓派的GPIO控制WS2812 LED,因此可以省略掉。不过不推荐省略掉施密特触发器,以免将来想要添加LED时需要还拆掉屏幕。
BOM采购
可以找能叠立创商城16-15优惠劵的同类型元件来买。不过需要注意参数、引脚等信息。
固定
Voron 0的电气仓高度有限,推荐用双面胶带粘。
Klipper配置文件
该配置文件在使用前应进行修改,不要直接使用!!!!!!
[include mainsail.cfg]
# 用于Arduino 3D打印盾的引脚映射
# 引脚编号为Arduino Uno R3,即ATmega328P所使用的
# 默认为Voron 0 使用
## Voron 0.2 3D Print Shield config
## *** 需要检查和更改的内容 ***
## 微控制器接口,位于[mcu]部分
## Z轴和挤出机电机电流,位于[tmc2209 stepper_*]部分
## 挤出机每转一圈的步数,位于[extruder]部分
## 热敏电阻类型,位于[extruder]和[heater_bed]部分 - 在https://www.klipper3d.org/Config_Reference.html#common-thermistors查看常用类型
## 电机电流,位于[extruder]、[stepper]和[_HOME_X/Y]宏部分
## PID校准,位于[extruder]和[heater_bed]部分
## 精细调节E步进电机步数,位于[extruder]部分
## 查看https://docs.vorondesign.com/build/startup/#v0获取更多信息
[mcu]
#####################################################################
# 通过 "ls -l /dev/serial/by-id/" 命令获取串口
#####################################################################
serial: /dev/serial0 # 直接通过GPIO串口通讯
restart_method: command # GPIO串口没有提供DTR重置功能
[mcu host]
serial: /tmp/klipper_host_mcu # 树莓派GPIO控制,需先为Linux进程编译和安装
[printer]
kinematics: corexy
max_velocity: 200 # 最大XY移动速度
max_accel: 2000 # 最大XY移动加速度
max_z_velocity: 15 # 最大Z轴速度
max_z_accel: 300 # 最大Z轴加速度
square_corner_velocity: 6.0
[skew_correction]
#####################################################################
# X/Y 步进电机设置
#####################################################################
[stepper_x]
step_pin: PD7
dir_pin: PD5 # 检查电机方向,如果反向,在前面添加 !
#enable_pin: # 驱动器启用引脚,En引脚固定为启用模式时注释该行
rotation_distance: 40 # 转一圈移动的距离
microsteps: 32 # 细分微步数
full_steps_per_rotation: 200 # 0.9° 电机设置为400, 1.8° 电机设置为200
endstop_pin: tmc2209_stepper_x:virtual_endstop # 限位开关引脚,如果位于其他MCU时自动启用多MCU归位
position_endstop: 120 # 限位开关位置
position_max: 120 # 最大移动位置
homing_speed: 40 # 归位速度
homing_retract_dist: 0 # 二次归位前的后退距离,设置为0禁用二次归位
[tmc2209 stepper_x]
uart_pin: PD3
uart_address: 1
interpolate: False # 256细分插值微步功能
run_current: 0.80 # 使用公式(额定电流*0.707=最大运行电流)计算运行电流,从最大值的 60%-70% 开始
hold_current: 0.600 # 静态力矩保持电流
sense_resistor: 0.110 # 采样电阻,如无必要,不需修改,默认值0.110欧姆
stealthchop_threshold: 0 # 当速度(mm/s)低于设置值时使用静音斩波模式,可通过设置为999999使驱动器一直使用静音斩波模式, 设置为0时使用传播周期模式
diag_pin: ^PD4 # 无传感器归位功能需要短路DIAG跳线
driver_SGTHRS: 85 # 无传感器归为的最大灵敏度,最大值为255,需要进行调试
[stepper_y]
step_pin: PB5
dir_pin: PB4 # 检查电机方向,如果反向,在前面添加!
#enable_pin: # 驱动器启用引脚,En引脚固定为启用模式时注释该行
rotation_distance: 40 # 转一圈移动的距离
microsteps: 32 # 细分微步数
full_steps_per_rotation: 200 # 0.9°电机设置为400, 1.8°电机设置为200
endstop_pin: tmc2209_stepper_y:virtual_endstop # 限位开关引脚,如果位于其他MCU时自动启用多MCU归位
position_endstop: 120 # 限位开关位置
position_max: 120 # 最大移动位置
homing_speed: 40 # 归位速度
homing_retract_dist: 0 # 二次归位前的后退距离,设置为0禁用二次归位
[tmc2209 stepper_y]
uart_pin: PD3
uart_address: 0
interpolate: False # 256细分插值微步功能
run_current: 0.80 # 使用公式(额定电流*0.707=最大运行电流)计算运行电流,从最大值的 60%-70% 开始
hold_current: 0.600 # 静态力矩保持电流
sense_resistor: 0.110 # 采样电阻,如无必要,不需修改,默认值0.110欧姆
stealthchop_threshold: 0 # 当速度(mm/s)低于设置值时使用静音斩波模式,可通过设置为999999使驱动器一直使用静音斩波模式, 设置为0时使用传播周期模式
diag_pin: ^PB0 # 无传感器归位功能需要短路DIAG跳线
driver_SGTHRS: 88 # 无传感器归为的最大灵敏度,最大值为255,需要进行调试
#####################################################################
# Z 步进电机设置
#####################################################################
[stepper_z]
step_pin: PC1
dir_pin: PC0 # 检查电机方向,如果反向,在前面添加!
#enable_pin: # 驱动器启用引脚,En引脚固定为启用模式时注释该行
rotation_distance: 8 # 转一圈移动的距离,这个值用于8x8丝杆
microsteps: 32 # 细分微步数
endstop_pin: !PC2 # 限位开关引脚,如果位于其他MCU时自动启用多MCU归位
#position_endstop: 119 # 限位开关位置
position_max: 119 # 最大移动位置
position_min: -1.5 # 最小移动位置
homing_speed: 20 # 归位速度
second_homing_speed: 3.0 # 二次归位的速度
homing_retract_dist: 3.0 # 二次归位前的后退距离,设置为0禁用二次归位
[tmc2209 stepper_z]
uart_pin: PD3
uart_address: 2
interpolate: False # 256细分插值微步功能
run_current: 0.37 # Voron为OMC (StepperOnline) 17LS13-0404E-200G 0.4A 提供的参数为0.2,为LDO-42STH25-1004CL200E 1.0A电机提供的参数为0.37
#hold_current: 0.600 # 静态力矩保持电流
sense_resistor: 0.110 # 采样电阻,如无必要,不需修改,默认值0.110欧姆
stealthchop_threshold: 0 # 当速度(mm/s)低于设置值时使用静音斩波模式,可通过设置为999999使驱动器一直使用静音斩波模式, 设置为0时使用传播周期模式
#####################################################################
# 挤出机
#####################################################################
[extruder]
step_pin: PD2
dir_pin: PC3 # 检查电机方向,如果反向,在前面添加!
#enable_pin: # 驱动器启用引脚,En引脚固定为启用模式时注释该行
#full_steps_per_rotation: 200 # 0.9°电机设置为400, 1.8°电机设置为200
rotation_distance: 23.11 # 查看挤出机旋转距离的校准文档
gear_ratio: 50:10 # 齿轮比,Mini Afterburner使用50:10
microsteps: 32 # 细分微步数
nozzle_diameter: 0.400 # 喷嘴孔径
filament_diameter: 1.750 # 耗材直径
heater_pin: PB1
## 检查热敏电阻类型,在https://www.klipper3d.org/Config_Reference.html#common-thermistors查看常用类型
## NTC 100k 3950 热敏电阻使用"Generic 3950"
sensor_type: Generic 3950
sensor_pin: PC4
#pullup_resistor: 4700 # 与热敏电阻连接的上拉电阻,默认值为4700欧姆
control: pid # 初步检查后进行PID校准
## 加热器PWM=(Kp*误差+Ki*积分(误差)-Kd*导数(误差)),误差=目标温度-测量温度,加热器PWM=0时热床关闭,=1时完全开启
## 使用 PID_CALIBRATE HEATER命令可以自动校准PID系数
## 热端校准命令为: PID_CALIBRATE HEATER=extruder TARGET=170
pid_Kp: 20.354 # PID比例系数
pid_Ki: 0.696 # PID积分系数
pid_Kd: 148.838 # PID导数系数
min_temp: 0 # 最低运作温度,不建议低于-10
max_temp: 270 # 最高运作温度,超过时微控制器会停机,可以设置大一些来避免传感器故障
min_extrude_temp: 170 # 到达该温度时挤出机才会工作
max_extrude_only_distance: 150 # 单次挤出或回抽的最大长度
max_extrude_cross_section: 0.8 # 挤出线条横截面的最大面积
pressure_advance: 0.0175 # 压力提前功能,用于补偿挤出机加减速时的挤出量
pressure_advance_smooth_time: 0.040 # 计算压力提前的时间范围,当pressure_advance不为零时才有效
[tmc2209 extruder]
uart_pin: PD3
uart_address: 3
interpolate: False
## For OMC (StepperOnline) 14HR07-1004VRN 1A 0.9°
#run_current: 0.5 # for OMC 14HR07-1004VRN rated at 1A
## For LDO LDO 36STH17-1004AHG 1A 1.8°
#run_current: 0.3 # for LDO 36STH17-1004AHG
## For LDO LDO 36STH20-1004AHG 1A 1.8°
#run_current: 0.6 # for LDO 36STH20-1004AHG
run_current: 0.6 # 256细分插值微步功能
sense_resistor: 0.110 # 采样电阻,如无必要,不需修改,默认值0.110欧姆
stealthchop_threshold: 0 # 当速度(mm/s)低于设置值时使用静音斩波模式,可通过设置为999999使驱动器一直使用静音斩波模式, 设置为0时使用传播周期模式
#####################################################################
# 热床
#####################################################################
[heater_bed]
heater_pin: PD6
## 检查热敏电阻类型,在https://www.klipper3d.org/Config_Reference.html#common-thermistors查看常用类型
## NTC 100k 3950 热敏电阻使用"Generic 3950"
sensor_type: Generic 3950
sensor_pin: PC5
smooth_time: 3.0 # 用于减少测量噪声,默认为1秒,也可以设置给热端
#max_power: 0.6 # 允许的最大功率(占空比),默认为1,也可以设置给热端,低于100W的热床不需要设置
min_temp: 0
max_temp: 120
control: pid # 初步检查后进行PID校准
## 热床校准命令为: PID_CALIBRATE HEATER=heater_bed TARGET=60
pid_kp: 60.599
pid_ki: 2.786
pid_kd: 329.509
#####################################################################
# 风扇控制
#####################################################################
[fan]
# FAN1
pin: PB2
max_power: 1.0 # 允许的最大功率(占空比),默认为1,最终功率会与风扇速度相乘
kick_start_time: 0.5 # 加速时间,当启动或增加比例大于50%时生效。如果风扇无法启动,则可能需要增加该值
off_below: 0.13 # 最小转速,低于该转速时会关闭风扇
cycle_time: 0.010 # 每个PWM周期的时间,使用软件PWM时建议设置为0.010(10毫秒)及以上
#hardware_pwm: False # 使用硬件PWM,启用该功能时PWM参数会受到硬件限制,可能无法提供所需的PWM输出参数
[heater_fan hotend_fan]
# FAN2
pin: PB3
max_power: 1.0 # 允许的最大功率(占空比),默认为1,最终功率会与风扇速度相乘
kick_start_time: 0.5 # 加速时间,当启动或增加比例大于50%时生效。如果风扇无法启动,则可能需要增加该值
heater: extruder # 与加热器相关联,当关联加热器启动时该风扇也会启动。默认值为extruder
heater_temp: 50.0 # 加热器低于该温度时风扇停止
fan_speed: 1.0 # 关联加热器启动时的速度,默认为1.0
[controller_fan controller_fan]
pin: host:gpio13 # 位于辅助MCU(即树莓派)的引脚
max_power: 1.0
kick_start_time: 0.5
off_below: 0.13
cycle_time: 0.010
#####################################################################
# V0 简易屏幕
#####################################################################
[display]
lcd_type: sh1106 # 屏幕驱动芯片型号,从屏幕商家处获取
click_pin: ^!host:gpio4 # 编码器按压引脚
i2c_mcu: host # I2C设备所在的微控制器
i2c_bus: i2c.1 # I2C总线
encoder_pins: ^host:gpio27, ^host:gpio17 # 编码器旋转引脚
kill_pin: ^!host:gpio22 # 急停按钮引脚
x_offset: 2 # 目前只有SH1106芯片支持该功能,SSD1306芯片只能忍受屏幕左侧的像素缺失了
#[neopixel display_led] # 目前,Klipper无法使用树莓派GPIO驱动WS2812,这一段都不用看了
#pin: host:gpio18
#color_order: GRB
#initial_RED: 0.5
#initial_GREEN: 0.5
#initial_BLUE: 0.5
#sda=host:gpio2
#scl=host:gpio3
#####################################################################
# 归零和龙门调整例程
#####################################################################
[idle_timeout]
timeout: 1800
[homing_override]
axes: xyz
set_position_z: 0
gcode:
G90
G0 Z5 F600
{% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}
{% if home_all or 'X' in params %}
_HOME_X
{% endif %}
{% if home_all or 'Y' in params %}
_HOME_Y
{% endif %}
{% if home_all or 'Z' in params %}
_HOME_Z
{% endif %}
#[safe_z_home] Only needed if you are using V0.0 or V0.1 Z endstop location
#home_xy_position: 120,120
#speed: 50.0
#z_hop: 5
## To be used with BED_SCREWS_ADJUST
[bed_screws]
screw1: 60,5
screw1_name: front screw
screw2: 5,115
screw2_name: back left
screw3: 115,115
screw3_name: back right
#####################################################################
# 宏
#####################################################################
[gcode_macro PRINT_START]
# Use PRINT_START for the slicer starting script - please customize for your slicer of choice
gcode:
G28 ; home all axes
G1 Z20 F3000 ; move nozzle away from bed
[gcode_macro PRINT_END]
# Use PRINT_END for the slicer ending script - please customize for your slicer of choice
gcode:
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-4.0 F3600 ; retract filament
G91 ; relative positioning
# Get Boundaries
{% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %}
{% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %}
{% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %}
# Check end position to determine safe direction to move
{% if printer.toolhead.position.x < (max_x - 20) %}
{% set x_safe = 20.0 %}
{% else %}
{% set x_safe = -20.0 %}
{% endif %}
{% if printer.toolhead.position.y < (max_y - 20) %}
{% set y_safe = 20.0 %}
{% else %}
{% set y_safe = -20.0 %}
{% endif %}
{% if printer.toolhead.position.z < (max_z - 2) %}
{% set z_safe = 2.0 %}
{% else %}
{% set z_safe = max_z - printer.toolhead.position.z %}
{% endif %}
G0 Z{z_safe} F3600 ; move nozzle up
G0 X{x_safe} Y{y_safe} F20000 ; move nozzle to remove stringing
TURN_OFF_HEATERS
M107 ; turn off fan
G90 ; absolute positioning
G0 X60 Y{max_y-10} F3600 ; park nozzle at rear
[gcode_macro LOAD_FILAMENT]
gcode:
M83 ; set extruder to relative
G1 E30 F300 ; load
G1 E15 F150 ; prime nozzle with filament
M82 ; set extruder to absolute
[gcode_macro UNLOAD_FILAMENT]
gcode:
M83 ; set extruder to relative
G1 E10 F300 ; extrude a little to soften tip
G1 E-40 F1800 ; retract some, but not too much or it will jam
M82 ; set extruder to absolute
[gcode_macro _HOME_X]
gcode:
# Always use consistent run_current on A/B steppers during sensorless homing
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
{% set HOME_CURRENT_RATIO = 0.7 %} # by default we are dropping the motor current during homing. you can adjust this value if you are having trouble with skipping while homing
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT_RATIO * RUN_CURRENT_X}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT_RATIO * RUN_CURRENT_Y}
# Home
G28 X
# Move away
G91
G1 X-10 F1200
# Wait for StallGuard registers to clear
M400
G90
# Set current during print
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
[gcode_macro _HOME_Y]
gcode:
# Set current for sensorless homing
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
{% set HOME_CURRENT_RATIO = 0.7 %} # by default we are dropping the motor current during homing. you can adjust this value if you are having trouble with skipping while homing
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT_RATIO * RUN_CURRENT_X}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT_RATIO * RUN_CURRENT_Y}
# Home
G28 Y
# Move away
G91
G1 Y-10 F1200
# Wait for StallGuard registers to clear
M400
G90
# Set current during print
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
[gcode_macro _HOME_Z]
gcode:
G90
G28 Z
G1 Z30
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 118.100
#*#
#*# [skew_correction voron0.2]
#*# xy_skew = -0.01578487723256217
#*# xz_skew = 0.0
#*# yz_skew = 0.0
免责声明
该项目以GPL协议开源,用于学习交流目的。
请在具备专业知识或具有专业人员指导的前提下进行检查、测试和使用。如出现损失本人概不负责。
如使用该设计默认同意以上声明。
设计图

BOM


评论