Отладка режима EDDY TAP
Эта страница посвящена процессу отладки, порядку проверки и устранению неисправностей EDDY в режиме TAP. Режим TAP определяет порог срабатывания путем легкого касания сопла поверхности стола. Во время отладки необходимо следить за состоянием сопла, нагревательного стола и оси Z.
Перед началом работы полностью выключите принтер и отключите его от источника питания. Не подключайте и не отключайте жгуты проводов, не упорядочивайте распиновку интерфейсов и не прикасайтесь к клеммам, когда оборудование находится под напряжением.
- Эта страница является описанием метода отладки, а не полным файлом
printer.cfg, который можно скопировать напрямую. canbus_uuid,serial, контакты датчика, направление хоминга, ход оси Z и смещения необходимо изменить в соответствии с фактическим оборудованием.- Перед первым включением убедитесь, что EDDY, плата инструмента, материнская плата и механическая конструкция оси Z находятся в нормальном состоянии.
Область применения
- Использование вихревого датчика EDDY / LDC1612, требуется метод
METHOD=tapили пороговое срабатывание TAP. - Подходит для плат инструмента с поддержкой EDDY, таких как FLY SHT36 V3, SB2040 V3 и т.д.
- Выполнена базовая разводка EDDY и стандартная калибровка высоты, требуется дальнейшее включение или диагностика режима TAP.
Требования к версии
- При использовании системы FLY FAST: убедитесь, что версия системы >=
V1.3.9. - При использовании других систем: убедитесь, что Klipper обновлен до последней версии.
- Плата инструмента или связанная прошивка ведомого контроллера также должна быть обновлена до последней версии, иначе возможна ситуация, когда хост поддерживает команды TAP, но прошивка MCU на них не отвечает.
Обязательная конфигурация
На примере SHT36 V3 или SB2040 V3, в разделе [probe_eddy_current fly_eddy_probe] обязательно укажите frequency: 40000000, иначе EDDY может работать некорректно.
[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
# Следующие i2c_mcu, i2c_bus, смещения необходимо изменить в соответствии с фактической платой инструмента и местом установки
i2c_mcu: SHT36
i2c_bus: i2c1e
i2c_speed: 400000
frequency: 40000000
x_offset: 0
y_offset: 21.42
descend_z: 2.5
tap_z_offset: 0
# Перед автоматической калибровкой порога TAP закомментируйте, после успешной калибровки будет записано SAVE_CONFIG
# tap_threshold: 40000
После завершения настройки необходимо повторно выполнить калибровку тока драйвера и калибровку высоты в соответствии с документацией на соответствующее изделие.
Связанная документация: SHT36 V3 EDDY Использование
Проверка перед настройкой
Перед проверкой жгутов EDDY, разъемов платы инструмента, крепежных винтов датчика, сопла и конструкции вокруг нагревательного стола полностью выключите принтер и отключите его от источника питания. Не подключайте и не отключайте жгуты и не регулируйте клеммы, когда оборудование находится под напряжением.
- Сопло и поверхность стола чистые, без остатков филамента, выступов клея или посторонних предметов.
- EDDY закреплен надежно, катушка установлена без люфта.
- Ось Z может свободно перемещаться вверх и вниз, без заеданий, упоров или соударения с рамой.
- На машинах с несколькими осями Z сначала выполните базовую механическую юстировку.
- Выполнена базовая настройка EDDY, данные с датчика считываются нормально.
Пример фрагмента конфигурации
В следующей конфигурации оставлены только часто используемые части EDDY TAP. Имя mcu, шина I2C, смещения, метод выравнивания и параметры макроса запуска необходимо изменить в соответствии с реальной ситуацией на станке. Рекомендуется поместить в отдельный конфигурационный файл, а затем включить его через printer.cfg.
[respond]
[force_move]
enable_force_move: true
[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
i2c_address: 42
i2c_mcu: SHT36
i2c_bus: i2c1e
i2c_speed: 400000
frequency: 40000000
x_offset: 0
y_offset: 21.42
descend_z: 2.5
speed: 5
samples: 3
sample_retract_dist: 5.0
samples_tolerance: 0.05
samples_tolerance_retries: 3
tap_z_offset: 0
# Перед автоматическим поиском порога TAP закомментируйте, после успешной калибровки будет записано SAVE_CONFIG
# tap_threshold: 40000
Макрос установки Z-смещения TAP
SET_Z_FROM_PROBE METHOD=tap используется для обновления текущей Z-координаты после срабатывания TAP. Рекомендуется выполнить несколько раз подряд и проверить, близки ли результаты; если разница велика, не сохраняйте, а вернитесь к проверке сопла, поверхности стола, люфта оси Z и порога TAP.
[gcode_macro _RELOAD_Z_OFFSET_FROM_PROBE]
description: Обновляет текущую Z-координату на основе последнего результата PROBE
gcode:
{% set Z = printer.toolhead.position.z %}
{% set position_endstop = 0 %}
{% set raw_config = printer.configfile.config %}
{% if 'stepper_z' in raw_config and 'position_endstop' in raw_config.stepper_z %}
{% set position_endstop = raw_config.stepper_z.position_endstop|trim|float %}
{% endif %}
{% set setZ = Z - printer.probe.last_probe_position.z + position_endstop %}
SET_KINEMATIC_POSITION Z={setZ}
RESPOND MSG="position_Z={'%0.3f' | format(Z)} probe_Z={'%0.3f' | format(printer.probe.last_probe_position.z)} position_endstop={'%0.3f' | format(position_endstop)} set_Z={'%0.3f' | format(setZ)}"
[gcode_macro SET_Z_FROM_PROBE]
description: Установка Z-смещения в режиме TAP. Использование: SET_Z_FROM_PROBE METHOD=tap
gcode:
{% set METHOD = params.METHOD | default("automatic") %}
G0 Z5 F300
PROBE METHOD={METHOD} SAMPLES=3
_RELOAD_Z_OFFSET_FROM_PROBE
G0 Z5 F300
Если вы используете этот макрос для сохранения и повторного использования position_endstop, убедитесь, что в конфигурации есть сохраняемое значение stepper_z position_endstop. При первой отладке можно установить 0, а затем определить фактическое значение с помощью ручного Z-смещения и проверки первого слоя.
Вызов макроса начала печати
В макросе запуска достаточно вызвать TAP установку Z-смещения после завершения нагрева, хоминга и необходимого выравнивания. Перед подъемом температуры сопла до температуры печати можно поддерживать более низкую температуру, чтобы избежать налипания филамента, влияющего на TAP.
[gcode_macro PRINT_START]
gcode:
{% set BED = params.BED|default(60)|int %}
{% set EXTRUDER = params.EXTRUDER|default(200)|int %}
{% set X_CENTER = printer.toolhead.axis_maximum.x|float / 2 %}
{% set Y_CENTER = printer.toolhead.axis_maximum.y|float / 2 %}
SET_GCODE_OFFSET Z=0
G21
G90
G28
G1 X{X_CENTER} Y{Y_CENTER} Z15 F9000
M190 S{BED}
M109 S150
# Здесь оставьте вашу обычную подготовку к печати
# ...
# Если есть макрос очистки сопла, рекомендуется сначала очистить сопло перед TAP
# CLEAN_NOZZLE
SET_Z_FROM_PROBE METHOD=tap
# После TAP продолжайте обычную подготовку к печати
M109 S{EXTRUDER}
G92 E0
Если сопло легко пачкается, можно выполнить очистку сопла до и после SET_Z_FROM_PROBE METHOD=tap и повторить SET_Z_FROM_PROBE METHOD=tap для повышения стабильности.
Автоматическая калибровка порога TAP
Начиная с версии Klipper от 2026-05-02, поддерживается автоматическое измерение порога TAP. Перед использованием закомментируйте вручную указанный tap_threshold, затем выполните поиск порога с помощью следующей команды.
Команда калибровки порога TAP: PROBE_EDDY_CURRENT_TAP_CALIBRATE TAP=xxx. Часто используемые значения: guess, refine, verify.
Следующие шаги приведут к перемещению сопла к поверхности стола и легкому касанию. Перед началом убедитесь, что вы можете в любой момент выполнить аварийную остановку (M112). Если сопло продолжает опускаться после касания стола, немедленно выполните аварийную остановку.
① guess: начальный грубый порог
Убедитесь, что сопло и поверхность стола чистые, выполните хоминг, переместите головку инструмента в центр стола, оставив зазор 3~10mm от сопла до стола.
PROBE_EDDY_CURRENT_TAP_CALIBRATE TAP=guess
Эта команда анализирует данные калибровки основного датчика для получения начального приблизительного значения tap_threshold, а затем выполняет одно пробное касание. В идеале датчик опускается, касается соплом стола, поднимается и сообщает о успешном обнаружении касания.
② refine: уточнение порога
После успешного выполнения TAP=guess, оставьте сопло в центре стола на расстоянии 3~10mm и выполните:
PROBE_EDDY_CURRENT_TAP_CALIBRATE TAP=refine
Эта команда использует данные последнего успешного касания для определения более точного порога.
③ verify: проверка стабильности
После успешного выполнения TAP=refine выполните:
PROBE_EDDY_CURRENT_TAP_CALIBRATE TAP=verify
Эта команда выполняет пять последовательных касаний стола. Тест считается пройденным, если все пять касаний выполнены нормально и результаты стабильны.
④ Сохранение конфигурации
После успешного выполнения всех вышеперечисленных шагов выполните:
SAVE_CONFIG
После сохранения перезапустите Klipper. На данный момент сохранен только порог TAP. Необходимо продолжить подтверждение Z-смещения.
Ручной поиск порога
Если при автоматической калибровке возникает ошибка о неподходящем пороге, преждевременном срабатывании или остановке после касания стола, не продолжайте многократно выполнять автоматические команды. Вместо этого используйте PROBE_ACCURACY для ручного поиска:
PROBE_ACCURACY METHOD=tap tap_threshold=40000
При ручной настройке можно начать тестирование со значения около 40000:
- Срабатывание до касания стола → порог слишком низкий, необходимо увеличить.
- Отсутствие остановки после касания стола → порог слишком высокий, немедленно выполните аварийную остановку и уменьшите.
- Перед каждым тестом убедитесь, что сопло и поверхность стола чистые, и оставьте зазор
3~10mm.
После стабилизации ручного порога можно вернуться к автоматической калибровке TAP=refine и TAP=verify для проверки.
Установка Z-смещения
После подтверждения порога TAP установите Z-смещение с помощью метода TAP в Klipper:
SET_Z_FROM_PROBE METHOD=tap
Рекомендуется выполнить несколько раз подряд и проверить, близки ли результаты. Если разница велика, не сохраняйте, а проверьте чистоту сопла, жесткость стола, люфт оси Z и порог TAP.
В новой версии Klipper можно использовать tap_z_offset для тонкой настройки зазора TAP. Фактический первый слой все же рекомендуется проверять по результатам печати, не полагаясь только на одно значение измерения.
Ручное подтверждение Z-смещения
После прохождения порога TAP и SET_Z_FROM_PROBE METHOD=tap необходимо вручную подтвердить фактический зазор между соплом и столом:
- Очистите сопло и поверхность стола, переместите сопло в центр стола.
- Выполните
SET_Z_FROM_PROBE METHOD=tapи убедитесь, что нет аномалий. - С помощью бумаги или теста первого слоя проверьте фактический зазор сопла, отрегулируйте Z-смещение через веб-интерфейс.
- После того как первый слой будет хорошим, сохраните конфигурацию.
- После последующей замены сопла, хотэнда, места установки EDDY или конструкции стола необходимо повторно подтвердить смещение.
Часто задаваемые вопросы
После завершения настройки все равно не работает
- Убедитесь, что версия системы FAST >=
V1.3.9(или Klipper обновлен до последней версии). - Убедитесь, что прошивка ведомого контроллера обновлена до последней версии.
- Убедитесь, что в
[probe_eddy_current fly_eddy_probe]указаноfrequency: 40000000. - Убедитесь, что
i2c_speedне слишком высок. Для SHT36 V3 / SB2040 V3 можно сначала проверить со значением400000. - Повторно выполните калибровку тока драйвера и калибровку высоты.
- Просмотрите
klippy.logна предмет первой ошибки, связанной с EDDY или TAP, и действуйте в соответствии с сообщением об ошибке.
Нестабильные результаты TAP
- Очистите сопло и поверхность стола.
- Проверьте, не ослабло ли крепление EDDY.
- Проверьте ось Z на наличие заеданий или люфта.
- Повторно выполните
TAP=refineиTAP=verify.
MCU 'xxx' I2C request to addr 42 reports error BUS_TIMEOUT
Связь MCU, на котором находится EDDY, с LDC1612 не удалась или нестабильна.
Перед проверкой жгутов EDDY, интерфейса I2C, обжима клемм или замены жгутов полностью выключите принтер и отключите его от источника питания. Не подключайте и не отключайте жгуты и не регулируйте клеммы, когда оборудование находится под напряжением.
- Проверьте соответствие
i2c_mcu,i2c_busили контактов программного I2C фактической плате инструмента. - Сначала снизьте
i2c_speedдо400000для тестирования. - Проверьте, не ослаблены ли жгуты EDDY, клеммы и разъем платы инструмента.
- Убедитесь, что прошивка EDDY и платы инструмента обновлена до версии, поддерживающей текущую версию Klipper.
Unable to detect tap: insufficient slope delta
Типичная ошибка:
!! Unable to detect tap: insufficient slope delta (-36983.054918 vs 30633.703000)
Текущий tap_threshold не подходит, или данные измерений не образуют достаточно выраженной точки перегиба TAP.
- Очистите сопло и поверхность стола.
- Не выполняйте автоматическую калибровку многократно, вместо этого используйте
PROBE_ACCURACY METHOD=tap tap_threshold=40000для ручного поиска порога. - После стабилизации ручного порога вернитесь к
TAP=refineиTAP=verifyдля проверки.
Unable to detect tap: invalid depress distance
Типичная ошибка:
!! Unable to detect tap: invalid depress distance (0.020411 vs 0.030000:0.250000)
Определенное Klipper расстояние прогиба не находится в ожидаемом диапазоне (0.03~0.25mm). Распространенные причины: недостаточная жесткость стола, нестабильность процесса касания сопла, люфт оси Z или неподходящий порог TAP.
- Проверьте, чистая ли и ровная поверхность сопла и стола, магнитный коврик.
- Проверьте опоры стола, конструкцию оси Z и крепление датчика на наличие заметных люфтов.
- Снизьте скорость хоминга по Z и скорость измерения, затем повторите проверку.
- Если ошибка появляется многократно, не сохраняйте параметры TAP, в первую очередь проверьте механическую жесткость и порог.
- Обычным пользователям не рекомендуется напрямую изменять
klippy/extras/probe_eddy_current.pyдля расширения диапазона ошибок; только после подтверждения исправности оборудования и порога, и только лицами, знакомыми с исходным кодом Klipper, следует оценивать необходимость корректировки.
Eddy: CLKIN frequency too low
Типичная ошибка:
!! Eddy: CLKIN frequency too low: 0.001 < 0.002
Связь I2C нестабильна, интервал времени получения точек данных аномален.
- Убедитесь, что
i2c_mcu,i2c_busили контакты программного I2C указаны правильно. - Сначала установите
i2c_speedравным400000для тестирования, не устанавливайте сразу слишком высокое значение. - Проверьте, не ослаблены ли жгуты EDDY, клеммы и разъем платы инструмента.
- При использовании программного I2C убедитесь, что соответствующий GPIO не занят другими функциями и нет внешних цепей, влияющих на сигнал.