Перейти к основному содержанию

Оптимизация обнаружения засора

Описание функции​

В версии FAST 1.3.8 была оптимизирована функция обнаружения засора, обеспечивающая более точное обнаружение засора и гибкие параметры настройки. Эта функция позволяет в реальном времени контролировать подачу материала экструдером и автоматически приостанавливать печать с уведомлением пользователя при обнаружении засора или обрыва нити.

Важное предупреждение

Требования к версии системы: Для корректной работы этой функции требуется версия системы FlyOS-Fast не ниже v1.3.8.


Способ настройки​

  • Добавьте следующую конфигурацию в файл printer.cfg:
  • Обратите внимание, что это справочная конфигурация, конкретные параметры могут потребовать корректировки в зависимости от фактических условий
[filament_blockage_detection my_sensor]
switch_pin: ^PA10
extruder: extruder
distance_per_edge: 0.232
detection_length: 3
pause_on_runout: True
runout_gcode: M118 Засор при печати
insert_gcode: M118 Восстановление в режиме ожидания

Основные параметры:

ПараметрЗначение по умолчаниюОписание
switch_pinОбязательноПин датчика обнаружения засора, ^ означает включение подтягивающего резистора
extruderextruderИмя связанного экструдера
distance_per_edgeОбязательноРасстояние перемещения филамента (мм), соответствующее каждому импульсу датчика; автоматически обновляется после калибровки
detection_length7.0Если расстояние проскальзывания превышает этот порог (мм) и подтверждается несколько раз подряд, определяется засор
recovery_lengthdetection_length * 0.5Когда расстояние проскальзывания падает ниже этого значения (мм), состояние восстанавливается до нормального
pause_on_runout—Автоматически приостанавливать печать при обнаружении засора
runout_gcode—G-code, выполняемый при обнаружении засора
insert_gcode—G-code, выполняемый при обнаружении восстановления филамента

Дополнительные параметры (обычно достаточно значений по умолчанию):

ПараметрЗначение по умолчаниюОписание
window_lengthdetection_length * 3Длина скользящего окна (мм)
retraction_min_delta0.050Минимальное смещение экструзии (мм) для определения движения отката; значения ниже этого считаются покоем
blockage_sample_count2Количество последовательных подтверждений превышения порога, после достижения которого определяется засор (1-5)
Описание автоматической калибровки

Параметр distance_per_edge автоматически вычисляет оптимальное значение после выполнения команды калибровки CALIBRATE_FILAMENT_BLOCKAGE и навсегда сохраняется в файле конфигурации с помощью команды SAVE_CONFIG. При первоначальной настройке можно указать любое значение, после калибровки оно будет автоматически перезаписано.


Этапы калибровки​

Для обеспечения точности обнаружения рекомендуется выполнить калибровку датчика перед использованием.

Шаг 1: Нагрев сопла​

Нагрейте сопло до рабочей температуры (рекомендуется 220℃):

M104 S220
M109 S220

Шаг 2: Выполнение команды калибровки​

После достижения соплом целевой температуры выполните следующую команду калибровки:

CALIBRATE_FILAMENT_BLOCKAGE SENSOR=my_sensor TEMPERATURE=220

Параметры команды:

ПараметрЗначение по умолчаниюОписание
SENSORОбязательныйИмя датчика, соответствующее [filament_blockage_detection my_sensor] в конфигурации
TEMPERATUREОбязательныйТемпература сопла при калибровке (℃)
DISTANCE30.0Длина экструзии за один раунд калибровки (мм)
COUNT5Количество раундов калибровки (1-20), берётся среднее по нескольким раундам
SPEED2.0Скорость экструзии (мм/с)
SETTLE_TIME0.375Время стабилизации для отчёта датчика после каждой экструзии (секунды)
MIN_EDGES1Минимальное количество импульсов, захваченных за раунд; при меньшем значении выдаётся ошибка

В процессе калибровки система автоматически выполняет несколько раундов экструзии, подсчитывает количество импульсов энкодера за каждый раунд, вычисляет оптимальный distance_per_edge и выводит результат.

Пример вывода калибровки:

Filament blockage sensor my_sensor calibration round 1/5:
edge_count_delta: 130
implied_distance_per_edge: 0.230769 mm
...
Filament blockage sensor my_sensor calibration result:
samples: 130, 129, 131, 130, 128
average_edge_count: 129.600
calibrated_distance_per_edge: 0.231481 mm
The SAVE_CONFIG command will update the printer config file
with this parameter and restart the printer.

Шаг 3: Сохранение результатов калибровки​

После завершения калибровки выполните следующую команду для сохранения нового значения distance_per_edge в файл конфигурации и перезапуска Klipper:

SAVE_CONFIG

Проверка состояния датчика​

С помощью команды QUERY_FILAMENT_BLOCKAGE можно в реальном времени просматривать данные измерений датчика, включая ключевую информацию, такую как длина экструзии, измеренное расстояние энкодера и величина проскальзывания.

QUERY_FILAMENT_BLOCKAGE SENSOR=my_sensor

Описание возвращаемых полей:

ПолеОписание
total_extruded_distanceСуммарное расстояние, заданное командами экструдера (мм) — общая длина, на которую Klipper продвинул экструдер
total_measured_distanceСуммарное фактически измеренное расстояние энкодера (мм) — фактическое перемещение филамента, обнаруженное датчиком
raw_measured_distanceИсходное измеренное расстояние энкодера (мм) — накопленное значение без учёта направления
expected_distanceОжидаемое расстояние экструзии с момента последнего изменения направления движения (мм)
measured_distanceФактически измеренное расстояние в текущем окне (мм)
slip_distanceРасстояние проскальзывания (мм) — разница между ожидаемым расстоянием и фактическим измеренным; при превышении detection_length срабатывает определение засорения
measured_speedТекущая измеренная скорость (мм/с)
edge_countСуммарное количество импульсов энкодера
pending_blockage_countТекущее количество последовательных подтверждений превышения порога; при достижении blockage_sample_count определяется засорение
in_retractionНаходится ли в данный момент в состоянии отката (True/False)
blockedОпределено ли засорение (True/False)
printingНаходится ли в данный момент в состоянии печати (True/False)

Сценарии использования:

  • Устранение ложных срабатываний при засорении: сравните total_extruded_distance и total_measured_distance; если разница между ними продолжает увеличиваться, это означает, что перемещение филамента, обнаруженное энкодером, отстаёт от команд экструзии, что может указывать на проскальзывание
  • Проверка исправности датчика: во время печати запросите measured_speed; при нормальной экструзии должны быть стабильные показания скорости
  • Просмотр тенденции проскальзывания: когда slip_distance приближается к detection_length, следует обратить внимание; при постоянном превышении печать приостанавливается

Устранение неполадок​

Проблема 1: Обнаружение засора не срабатывает​

Возможные причины:

  • Датчик подключен неправильно
  • Неверная конфигурация switch_pin
  • Прошивка нижнего контроллера не обновлена

Методы решения:

  1. Проверьте аппаратное подключение датчика
  2. Убедитесь, что конфигурация пина соответствует фактическому оборудованию
  3. Обновите прошивку нижнего контроллера до последней версии

Проблема 2: Ложное срабатывание обнаружения засора​

Возможные причины:

  • Неточный параметр distance_per_edge
  • Слишком маленькое пороговое значение detection_length

Методы решения:

  1. Повторно выполните команду калибровки
  2. Соответственно увеличьте значение detection_length (рекомендуется 3-5 мм)

Проблема 3: Сбой калибровки​

Возможные причины:

  • Температура сопла не достигла требуемого значения
  • Аппаратная неисправность датчика

Методы решения:

  1. Убедитесь, что сопло нагрето до указанной температуры
  2. Проверьте,正常工作 ли датчик
  3. Попробуйте перезапустить службу Klipper

Рекомендации по использованию​

  • Рекомендуется повторно калибровать датчик при каждой смене марки или диаметра нити
  • Регулярно проверяйте состояние датчика, чтобы обеспечить точность обнаружения
  • Если функция обнаружения засора не использовалась длительное время, рекомендуется повторно откалибровать ее перед использованием

Рекомендации по использованию​

  • Рекомендуется повторно калибровать датчик при каждой смене бренда или диаметра расходного материала
  • Регулярно проверяйте состояние датчика для обеспечения точности обнаружения
  • Если функция обнаружения засорения не использовалась в течение длительного времени, рекомендуется повторно откалибровать её перед использованием

Loading...