发作品签到
专业版

Arduino Uno 3D打印盾与树莓派扩展帽与简易屏幕

工程标签

176
0
0
0

简介

与Arduino Uno尺寸兼容的3D打印盾、与树莓派Zero尺寸兼容的扩展帽、以及对简易屏幕的复刻。 可用于使用Klipper固件的Voron 0等小型3D打印机。

简介:与Arduino Uno尺寸兼容的3D打印盾、与树莓派Zero尺寸兼容的扩展帽、以及对简易屏幕的复刻。 可用于使用Klipper固件的Voron 0等小型3D打印机。

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-07-08 07:28:44更新时间:2024-10-21 02:53:10

描述

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上的丝印。

跳线设置

通过步进电机驱动器位置处的跳线可以控制细分、串口等功能。跳线序号如下:

10741
11852
12963

其中6和3为软限位跳线、12和9为串口跳线、其余位置则根据使用的驱动模块不同而具有不同的功能。

使用串口控制TMC2209驱动模块(推荐)

当使用TMC2209驱动模块并通过串口进行配置时,首先需要连接串口跳线帽。有些模块需要将跳线帽连接在11-12上、有些则需要连接8-9、也有些两者都可以,具体如何连接取决于所使用的驱动模块是如何设计的。

另外,当插入不止一个TMC2209模块时,还需要通过跳线为模块设置串口地址,并且最好为每一个模块都设置不同的串口地址,以便于为不同模块下发不同的设置。

地址跳线
0不插入
11-2
24-5
31-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文档

大体而言,主要操作步骤为:

  1. 进入Klipper目录并进入编译配置界面
    cd ~/klipper/
    make makeconfig

  2. 选择所使用的微控制器,并进行配置。

  3. 输入make进行编译。

  4. 将编译后的结果烧录到微控制器。(有时可以和第三步合并进行)

烧录的方式根据所使用的开发板和微控制器不同而有所不同,具体的操作方式还请参考对应设备的说明。

为ATmega328P配置编译工具链

版本高于Buster的Debian发行版存在AVR编译工具链问题,无法为ATmega328P编译。因此需要先对相关软件包进行降级操作后才Klipper才能为ATmega328P编译固件。该解决方法来自于Github的Issue

如果使用其他开发板的话,可以直接跳过本节。

  1. 添加Buster源仓库
    打开/etc/apt/sources.list文件 sudo nano /etc/apt/sources.list
    在最下面新建一行,添加deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
  2. 指定AVR工具链版本
    创建文件 sudo nano /etc/apt/preferences.d/avr-buster
    在文件中填写以下内容
Package: avr-libc avrdude binutils-avr gcc-avr
Pin: release n=buster
Pin-Priority: 1001
  1. 重新安装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
  2. 使用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

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航