Как заставить Ender 5 использовать зонд BLTouch для Z-наведения?
Предыстория
Я настроил модуль BLTouch, как описано в прилагаемом к нему руководстве, которое включало отсоединение переключателя оси Z и замену его парой проводов от модуля BLTouch.
Мне удалось записать встроенное ПО, доступное в Creality, однако это не компенсировало тот факт, что модуль BLTouch смещен от hotend, и я не мог вручную отредактировать файл .hex
, чтобы добавить смещения. Я попытался использовать команду G-кода, чтобы обновить ее на EEPROM, но это не сработало, и она всегда прощупывала край стола.
Затем я решил прошить новую прошивку на основе непосредственно Marlin 1.1.x, так как на Youtube есть несколько видео о том, как это сделать. Я использовал ISP pink USB, поставляемого с BLTouch, для переноса загрузчика Arduino на материнскую плату, и теперь я могу использовать IDE Arduino для программирования платы.
Я загрузил свою настроенную прошивку Marlin (см. Ниже), но она работает неправильно.
Проблема
Когда я запускаю принтер, остановки X и Y переключаются на переключатели, правильно ударяются и обнуляются. Однако, когда ось Z самонаводится, зонд BLTouch остается втянутым, и он начинает двигаться к дому - я принудительно выключаю принтер, когда это происходит, потому что знаю, что ничто не помешает ему врезаться в печатающую головку и разбить вещи.
Как настроить встроенное ПО для использования модуля BLTouch в качестве зонда Z stop?
Хотя зонд несколько раз включается и выключается при включении принтера, я не совсем уверен, что он вообще работает - переход в меню BLTouch и выбор Cmd: Deploy
не оказывает эффекта.
С верхней стороны, когда он переходит из центра в дом (из-за Z_SAFE_HOMING
), модуль BLTouch располагается над центром панели сборки, а не над hotend.
Конфигурация
Вы можете увидеть репозиторий Marlin, который я пытаюсь использовать здесь, в Gitlab, или прямую ссылку на различие между исходной конфигурацией Marlin и моими изменениями.
Вот некоторые, надеюсь, соответствующие изменения конфигурации, которые я внес:
// Configuration.h
//#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
#define BLTOUCH
#define X_PROBE_OFFSET_FROM_EXTRUDER -44 // X: -слева +справа [от сопла]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -6 // Смещение по Y: -спереди +сзади [сопло]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 5.7 // Смещение по Z: -ниже +выше [сопло]
#define Z_HOMING_HEIGHT 4
#define Z_SAFE_HOMING
// pins_MELZI_CREALITY.h
#define SERVO0_PIN 20 // Интересно, правильно ли это?
Эти настройки были оставлены по умолчанию, но они, возможно, выглядят уместными:
/**
* Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
*
* Включите эту опцию для датчика, подключенного к штифту Z Min endstop.
*/
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
/**
* Z_MIN_PROBE_ENDSTOP
*
* Включите эту опцию для датчика, подключенного к любому контакту, кроме Z-Min.
* (По умолчанию Marlin принимает контактный ограничитель Z-Max.)
* Чтобы использовать пользовательский вывод Z-зонда, установите Z_MIN_PROBE_PIN ниже.
*
* - Самый простой вариант-использовать бесплатный разъем концевой опоры.
* - Используйте 5 В для питания (обычно индуктивных) датчиков.
*
* - RAMPS 1.3/1.4 платы могут использовать штырь 5 В, GND и Aux4->D32:
* - Для подключения простых переключателей...
* - нормально закрытые переключатели на GND и D32.
* - нормально открытые переключатели на 5 В и D32.
*
* ПРЕДУПРЕЖДЕНИЕ: Установка неправильного контакта может привести к неожиданным и потенциально
* катастрофические последствия. Используйте с осторожностью и делайте свою домашнюю работу.
*
*/
//#define Z_MIN_PROBE_ENDSTOP
/**
* Количество сервоприводов
*
* Для некоторых параметров, связанных с сервомотором, NUM_SERVOS будет установлен автоматически.
* Установите это вручную, если есть дополнительные сервоприводы, требующие ручного управления.
* Оставьте неопределенным или установите значение 0, чтобы полностью отключить сервосистему.
*/
//#define NUM_SERVOS 3 // Индекс сервопривода начинается с 0 для команды M280
@user-596a6526, 👍2
Обсуждение1 ответ
Лучший ответ:
Я решил эту проблему. Вот в чем проблема:
// pins_MELZI_CREALITY.h#Define SERVO0_PIN 20 // Интересно, правильно ли это?
Как ни странно, это было неправильно. Штифт 20-это штифт Z MIN, как определено в
файле pins_MELZI_CREALITY.h
, а не следящий штифт, используемый модулем BLTouch.
В 8:04 этого видео на YouTubeон говорит, что это значение должно быть установлено на 27, "если мы используем плату pin 27 или штифт для соединения".
Я попробовал, и модуль BLTouch теперь реагирует, и самонаведение работает!
Для всех, кто столкнется с этой проблемой (ее, как ни странно, очень трудно найти в Интернете), добавьте следующий код:
#define BLTOUCH
#if ENABLED(BLTOUCH)
#define SERVO0_PIN 27
//#define BLTOUCH_DELAY 375 // (мс) Включите и увеличьте при необходимости
#endif
Большое спасибо за публикацию вашего решения! Заявки принимаются через 48 часов, чтобы свести к минимуму список вопросов, на которые нет ответов/отклоненных. А теперь прорабатывай свой путь https://3d-printery.ru/topics/16604/automatic-bed-leveling-abl-with-a-sensor-bltouch-inductive-capacitive-how и наслаждайтесь печатью (вам все равно нужно предоставить стол как можно более ровный или протараненный)! :-) Хорошее видео: https://www.youtube.com/watch?v=zSOVAdKw4ss, @0scar
- Только смещение Z для BLTouch?
- Как увеличить количество точек зондирования для датчика BLTouch в прошивке Marlin?
- BLTouch Зондирование Периодически Терпит Неудачу
- Настройка Marlin 2.x с помощью Ender 3 4.2.2 и BLTouch
- Что сделать, чтобы удалить скругленные углы, используя отклонение соединения?
- Настройка BLTouch с прошивкой Marlin
- Автоматическое Выравнивание Сетки G29 Ничего Не Делает
- Как определить размеры стола в Marlin для произвольного привода / хотэнда?
Есть 5 проводов (из которых 2 заземлены), если у вас есть 2 провода (черный/белый) на Z-образном ограничителе, где соединены оранжевый, красный и коричневый. Последние необходимы для работы сервопривода, они должны быть правильно подключены и правильно настроены в встроенном ПО. Какая у вас плата контроллера (и версия) и какие контакты вы используете, добавление фотографий может помочь., @0scar
@0scar, Ты был на правильном пути! Я был далек от своей глубины и в итоге установил "SERVO0_PIN" на вывод "ZMIN", а не на то, что должно было быть в соответствии с разделительной доской. К сожалению, в Creality практически нет документации, предположительно, потому, что они хотят, чтобы вы использовали их собственные предварительно скомпилированные шестнадцатеричные файлы. Все хорошо, что хорошо кончается!, @user-596a6526
Рад помочь, вывод сервопривода зависит от платы, поэтому не публикую ответ, рад видеть, что вы публикуете свой собственный ответ!, @0scar