Бэкап конфигурации перед обновлением компонентов

- hbb.cfg отключён
- idle_timeout 1800 -> 600, добавлен _SET_IDLE_MODE
- probe z_offset -0.835 -> -0.830
- вентиляторы SoC разделены на SoC_Left (PD13) и SoC_Right (PD12)
- обновления в macros/main.cfg
This commit is contained in:
2026-09-03 04:46:24 +03:00
parent 41d3ea5bc4
commit 59ed3a5726
3 changed files with 221 additions and 13 deletions
+202 -3
View File
@@ -25,7 +25,8 @@ gcode:
initial_duration: 1
gcode:
STATUS_READY
SET_FAN_SPEED FAN=SoC SPEED=0.3
_Set_SoC_FAN_Speed Mode=Idle
#SET_FAN_SPEED FAN=SoC SPEED=0.3
[delayed_gcode _INIT_TIMELAPSE_CHECK_TIME]
initial_duration: 1
@@ -43,6 +44,12 @@ gcode:
{action_respond_info('action:poweroff')}
{action_call_remote_method("shutdown_machine")}
[gcode_macro _SET_IDLE_MODE]
gcode:
_CHAMBER_LED_OFF
_Set_SoC_FAN_Speed Mode=Idle
M84
[gcode_macro _CHAMBER_LED_OFF]
gcode:
@@ -50,7 +57,20 @@ gcode:
[gcode_macro _CHAMBER_LED_ON]
gcode:
SET_LED LED="chamber_leds" RED=1 GREEN=1 BLUE=1 SYNC=0 TRANSMIT=1
SET_LED LED="chamber_leds" RED=1 GREEN=1 BLUE=1 SYNC=0 TRANSMIT=1
[gcode_macro _Set_SoC_FAN_Speed]
description: Установка режима работы вентиляторов обдува блока электроники
variable_fan_mode_speeds: { 'Idle': [0,0], 'Printing': [0.3,0.6] }
variable_exist_fans: [ 'SoC_Left', 'SoC_Right']
gcode:
{% set mode = params.MODE|default("Idle") %}
{% set fan_speeds = fan_mode_speeds[mode] %}
{ action_respond_info("set soc fans %s" % (fan_speeds)) }
{% for fan in exist_fans %}
SET_FAN_SPEED FAN={fan} SPEED={fan_speeds[loop.index0]}
{% endfor %}
[gcode_macro _LED_SWITCH]
gcode:
@@ -88,6 +108,8 @@ gcode:
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: QUAD_GANTRY_LEVEL_BASE
gcode:
_Set_SoC_FAN_Speed Mode=Printing
_CHAMBER_LED_ON
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=qgling VALUE=True
STATUS_LEVELING
QUAD_GANTRY_LEVEL_BASE
@@ -109,7 +131,6 @@ gcode:
[gcode_macro PRINT_START]
gcode:
_CHAMBER_LED_ON
#PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}
{% set BED_TEMP = params.BED|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER|default(210)|float %}
@@ -386,7 +407,185 @@ gcode:
G1 E{purge_distance} F{speed} # purge
G1 E-{unload_distance} F{max_velocity} # fast-unload
RESTORE_GCODE_STATE NAME=unload_state
[gcode_macro PURGE_AFTER_FILAMENT_CHANGE]
description: Безопасная очистка сопла после замены филамента с опциональным автоматическим хомингом
gcode:
# === ПРОВЕРКА СОСТОЯНИЯ ПРИНТЕРА ===
{% if printer.idle_timeout.state == "Printing" %}
{action_respond_info("⚠️ ПРИНТЕР ЗАНЯТ ПЕЧАТЬЮ!")}
{action_respond_info("🛑 Очистка невозможна во время печати!")}
{action_raise_error("ОШИБКА: Принтер занят печатью!")}
{% elif printer['toolhead'].is_printing == true %}
{action_respond_info("⚠️ ДЕТЕКТИРОВАНА АКТИВНАЯ ПЕЧАТЬ!")}
{action_raise_error("ОШИБКА: Активная печать обнаружена!")}
{% endif %}
# === ПРОВЕРКА НЕОБХОДИМОСТИ ХОМИНГА ===
{% set homed_axes = printer.toolhead.homed_axes %}
{% set need_homing = false %}
{% if 'x' not in homed_axes or 'y' not in homed_axes or 'z' not in homed_axes %}
{% set need_homing = true %}
{action_respond_info("🔍 Обнаружены непрохоменные оси: %s" % (['x','y','z']|reject('in', homed_axes)|join(', ')))}
# Проверяем параметр AUTO_HOME
{% if params.AUTO_HOME|default(1)|int == 1 %}
{action_respond_info("✅ АВТОМАТИЧЕСКИЙ ХОМИНГ ВКЛЮЧЕН (AUTO_HOME=1)")}
{action_respond_info("🔄 Выполняем G28 для всех осей...")}
G28
{% set need_homing = false %} # После хоминга оси прохомены
{% else %}
{action_respond_info("❓ Для автоматического хоминга используйте: PURGE_AFTER_FILAMENT_CHANGE AUTO_HOME=1")}
{action_respond_info("🛑 ИЛИ выполните хоминг вручную (кнопка 'Home All' в интерфейсе)")}
{action_raise_error("ТРЕБУЕТСЯ ХОМИНГ ОСЕЙ ПЕРЕД ОЧИСТКОЙ")}
{% endif %}
{% endif %}
# === НАСТРОЙКА ПОД МАТЕРИАЛ ===
{% set material = params.MATERIAL|default('PLA')|lower %}
{% if material == 'pla' %}
{% set default_temp = 210 %}
{% set fan_speed_final = 255 %}
{% elif material == 'petg' %}
{% set default_temp = 230 %}
{% set fan_speed_final = 180 %}
{% elif material == 'abs' %}
{% set default_temp = 240 %}
{% set fan_speed_final = 0 %}
{% elif material == 'tpu' %}
{% set default_temp = 220 %}
{% set fan_speed_final = 100 %}
{% else %}
{% set default_temp = 220 %}
{% set fan_speed_final = 255 %}
{% endif %}
{% set target_temp = params.TEMP|default(default_temp)|int %}
# === СТАНДАРТНЫЕ ПАРАМЕТРЫ ===
{% set retract_length = 18 %}
{% set retract_speed = 60 %}
{% set min_extrude = 50 %}
{% set max_extrude = 150 %}
# === РАСЧЕТ ДЛИНЫ ВЫДАВЛИВАНИЯ ===
{% set nozzle_diameter = params.NOZZLE|default(0.4)|float %}
{% set filament_diameter = params.FILAMENT_DIAM|default(1.75)|float %}
{% set base_length = 80 %}
{% set diameter_factor = nozzle_diameter / 0.4 %}
{% set calculated_length = base_length * diameter_factor %}
{% set total_length = params.LENGTH|default(calculated_length|round(0))|float %}
{% if total_length < min_extrude %}
{action_respond_info("⚠️ Установлена минимальная длина очистки: %dмм" % min_extrude)}
{% set total_length = min_extrude %}
{% elif total_length > max_extrude %}
{action_respond_info("⚠️ ПРЕДУПРЕЖДЕНИЕ: Запрашиваемая длина %.1fмм превышает безопасный лимит %dмм" % (total_length, max_extrude))}
{% set total_length = max_extrude %}
{% endif %}
{% set extrude_speed = params.SPEED|default(20)|int %}
# === БЕЗОПАСНОЕ ПЕРЕМЕЩЕНИЕ В БЕЗОПАСНУЮ ПОЗИЦИЮ ===
M118 СТАРТ: Перемещение в безопасную позицию
# Проверяем текущие позиции и границы
{% set x_max = printer.configfile.settings['stepper_x']['position_max']|float %}
{% set y_max = printer.configfile.settings['stepper_y']['position_max']|float %}
# Вычисляем безопасные координаты (90% от максимума)
{% set safe_x = x_max * 0.9 %}
{% set safe_y = y_max * 0.9 %}
# Проверяем текущую Z позицию
{% set current_z = printer.toolhead.position.z %}
{% set safe_z = 50 if current_z < 50 else current_z %}
# Проверяем, что координаты в допустимых пределах
{% if safe_x > x_max %}
{% set safe_x = x_max * 0.8 %}
{% endif %}
{% if safe_y > y_max %}
{% set safe_y = y_max * 0.8 %}
{% endif %}
# Относительное перемещение по Z сначала (если нужно поднять)
{% if current_z < 50 %}
M118 ПОЗИЦИЯ: Подъем по оси Z до 50мм
G91
G1 Z{50 - current_z} F300
G90
{% endif %}
# Перемещение в XY безопасную позицию
M118 ПОЗИЦИЯ: Перемещение в XY позицию (%.1f, %.1f) % (safe_x, safe_y)
G1 X{safe_x} Y{safe_y} F6000
# НАГРЕВ СОПЛА
M118 ПРОГРЕСС: Нагрев сопла до {target_temp|int}C для {material|upper}
M104 S{target_temp}
M109 S{target_temp}
# ЦИКЛЫ ОЧИСТКИ
M118 ПРОГРЕСС: Предварительная очистка (3 цикла)
{% for i in range(3) %}
G92 E0
G1 E10 F{extrude_speed|float*60}
G1 E-5 F{retract_speed|float*60}
G4 P300
M118 ПРОГРЕСС: Цикл {i+1}/3 завершен
{% endfor %}
# ОСНОВНОЕ ВЫДАВЛИВАНИЕ
G92 E0
{% set first_part = total_length * 0.8 %}
M118 ПРОГРЕСС: Основное выдавливание: {first_part|round(1)}мм
G1 E{first_part} F{extrude_speed|float*60}
{% set second_part = total_length * 0.2 %}
M118 ПРОГРЕСС: Финальное выдавливание: {second_part|round(1)}мм
M106 S{fan_speed_final}
G1 E{total_length} F{extrude_speed|float*60}
G4 P1000
# РЕТРАКТ
M118 ПРОГРЕСС: Ретракт на {retract_length}мм
G91
G1 E-{retract_length} F{retract_speed|float*60}
G90
# ЗАДЕРЖКА И ОХЛАЖДЕНИЕ
M118 ПРОГРЕСС: Задержка 2с для охлаждения
G4 P2000
M118 ПРОГРЕСС: Отключение обдува
M107
M118 ПРОГРЕСС: Охлаждение сопла
M104 S150
G4 P3000
M104 S0
# ФИНАЛЬНАЯ СТАТИСТИКА
{% set total_extruded = total_length - retract_length %}
{% set filament_area = 3.14159 * (filament_diameter/2)**2 %}
{% set volume_flow = filament_area * extrude_speed %}
{% set total_time = (total_length / extrude_speed) + 10 %}
M118 СТАТИСТИКА: Материал: {material|upper}
M118 СТАТИСТИКА: Сопло: {nozzle_diameter|round(1)}мм
M118 СТАТИСТИКА: Выдавлено: {total_length|round(1)}мм (всего)
M118 СТАТИСТИКА: Чистый материал: {total_extruded|round(1)}мм
M118 СТАТИСТИКА: Объемный расход: {volume_flow|round(1)}мм3/сек
M118 ГОТОВО: Очистка завершена! ✅
[gcode_macro test_speed_fast]
gcode:
+12 -4
View File
@@ -204,12 +204,20 @@ pin: PD14
cycle_time: 0.01
hardware_pwm: false
[multi_pin soc_pin]
pins: PD12, PD13
#[multi_pin soc_pin]
#pins: PD12, PD13
[fan_generic SoC]
pin: multi_pin: soc_pin
#[fan_generic SoC]
#pin: multi_pin: soc_pin
#max_power: 1
[fan_generic SoC_Left]
pin: PD13
max_power: 1
[fan_generic SoC_Right]
pin: PD12
max_power: 1
+7 -6
View File
@@ -1,7 +1,7 @@
[include mainsail.cfg]
[include timelapse.cfg]
[include hbb.cfg]
#[include hbb.cfg]
# Happy Hare
#[include mmu/base/*.cfg]
@@ -165,8 +165,9 @@ activate_gcode:
#####################################################################
[idle_timeout]
timeout: 1800
timeout: 600
gcode:
_SET_IDLE_MODE
#_CHAMBER_LED_OFF
[quad_gantry_level]
@@ -216,9 +217,9 @@ adaptive_margin: 5
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.047812, 0.011875, 0.018437, 0.068750
#*# 0.045312, 0.025312, 0.030625, 0.085937
#*# 0.057500, 0.017812, 0.029375, 0.089062
#*# 0.047812, 0.011875, 0.018437, 0.068750
#*# 0.045312, 0.025312, 0.030625, 0.085937
#*# 0.057500, 0.017812, 0.029375, 0.089062
#*# x_count = 4
#*# y_count = 3
#*# mesh_x_pps = 2
@@ -231,4 +232,4 @@ adaptive_margin: 5
#*# max_y = 283.447
#*#
#*# [probe]
#*# z_offset = -0.835
#*# z_offset = -0.830