Оптимизация обнаружения засора
Описание функции
В версии 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 | Обязательно | Пин датчика обнаружения засора, ^ означает включение подтягивающего резистора |
extruder | extruder | Имя связанного экструдера |
distance_per_edge | Обязательно | Расстояние перемещения филамента (мм), соответствующее каждому импульсу датчика; автоматически обновляется после калибровки |
detection_length | 7.0 | Если расстояние проскальзывания превышает этот порог (мм) и подтверждается несколько раз подряд, определяется засор |
recovery_length | detection_length * 0.5 | Когда расстояние проскальзывания падает ниже этого значения (мм), состояние восстанавливается до нормального |
pause_on_runout | — | Автоматически приостанавливать печать при обнаружении засора |
runout_gcode | — | G-code, выполняемый при обнаружении засора |
insert_gcode | — | G-code, выполняемый при обнаружении восстановления филамента |
Дополнительные параметры (обычно достаточно значений по умолчанию):
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
window_length | detection_length * 3 | Длина скользящего окна (мм) |
retraction_min_delta | 0.050 | Минимальное смещение экструзии (мм) для определения движения отката; значения ниже этого считаются покоем |
blockage_sample_count | 2 | Количество последовательных подтверждений превышения порога, после достижения которого определяется засор (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 | Обязательный | Температура сопла при калибровке (℃) |
DISTANCE | 30.0 | Длина экструзии за один раунд калибровки (мм) |
COUNT | 5 | Количество раундов калибровки (1-20), берётся среднее по нескольким раундам |
SPEED | 2.0 | Скорость экструзии (мм/с) |
SETTLE_TIME | 0.375 | Время стабилизации для отчёта датчика после каждой экструзии (секунды) |
MIN_EDGES | 1 | Минимальное количество импульсов, захваченных за раунд; при меньшем значении выдаётся ошибка |
В процессе калибровки система автоматически выполняет несколько раундов экструзии, подсчитывает количество импульсов энкодера за каждый раунд, вычисляет оптимальный 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 - Прошивка нижнего контроллера не обновлена
Методы решения:
- Проверьте аппаратное подключение датчика
- Убедитесь, что конфигурация пина соответствует фактическому оборудованию
- Обновите прошивку нижнего контроллера до последней версии
Проблема 2: Ложное срабатывание обнаружения засора
Возможные причины:
- Неточный параметр
distance_per_edge - Слишком маленькое пороговое значение
detection_length
Методы решения:
- Повторно выполните команду калибровки
- Соответственно увеличьте значение
detection_length(рекомендуется 3-5 мм)
Проблема 3: Сбой калибровки
Возможные причины:
- Температура сопла не достигла требуемого значения
- Аппаратная неисправность датчика
Методы решения:
- Убедитесь, что сопло нагрето до указанной температуры
- Проверьте,正常工作 ли датчик
- Попробуйте перезапустить службу Klipper
Рекомендации по использованию
- Рекомендуется повторно калибровать датчик при каждой смене марки или диаметра нити
- Регулярно проверяйте состояние датчика, чтобы обеспечить точность обнаружения
- Если функция обнаружения засора не использовалась длительное время, рекомендуется повторно откалибровать ее перед использованием
Рекомендации по использованию
- Рекомендуется повторно калибровать датчик при каждой смене бренда или диаметра расходного материала
- Регулярно проверяйте состояние датчика для обеспечения точности обнаружения
- Если функция обнаружения засорения не использовалась в течение длительного времени, рекомендуется повторно откалибровать её перед использованием