Как я к Tronxy XY-2 Pro оптический концевик приделал
Купил я недавно свой первый 3D-принтер - TronXY XY-2 Pro. Намучился с ним за первый месяц по нескольким причинам:
1.) Глючный Марлин, который мне достался вместе с принтером. (периодически отключался драйвер Z, иногда на печати второго слоя, иногда — при попытке изменить probe Z-offset)
2.) Совершенно чудовищный проприетарный сток, который после Марлина показался мне абсолютно непредсказуемым, к тому же, на нём не было возможности корректировать высоту сопла после начала печати.
3) Индуктивный сенсор приближения, доставшийся мне в юбке с магнитиком, без которого он не видел стол через стекло, а с магнитом путался в показаниях, то есть, при старте печати врал примерно на +-0.2мм, и приходилось двигать Z-offset в Марлине, а в стоковой прошивке скрежетать зубами и всё ненавидеть.
В результате пришлось руками конфигурировать свежий Марлин из bugfix-ветки, но это, как я понимаю, то, через что проходит каждый пользователь этой прошивки. Пока разбирался с конфигурацией, компилировал, прошивал, тестировал и снова правил конфиги, заметил одну интересную вещь: глюки с драйвером по Z пропадают, если отключить в конфигурации бэбистеппинг. Возможно, есть какая-то разница в бэбистеппинге между драйвером TMC2225, стоящем у меня в принтере, и TMC2008, который вбит в Марлин (как полностью идентичный 2225). В общем, без бэбистеппинга стало хорошо.
Последней оставшейся проблемой была большая погрешность датчика. Я решил поступить радикально, и заменить датчик приближения на концевой переключатель, и сразу на оптический, так как пишут, что они точнее, ну, и вообще, с ним интересней разбираться.
Пошел в ближайший магазин всякого барахла для принтеров и купил оптический концевик за 70р. Я так понимаю, что это самая распространённая модель, других я, собственно, и не встречал. Выглядит вот так:На плате с оптопарой установлен трехпиновый разъём типа XH-3P, или как-то так. Также к ней прилагается кабель с ответным разъёмом на одном конце и с тремя отдельными пинами — с другой. Так как у меня в плате Chitu3D V6 был как раз такой трёхпиновый разъём, а отдельные пины из него вываливались, я воткнул вилку XH в плату принтера, а три пина на другом конце отрезал и припаял напрямую к плате сенсора, из которой предварительно выпаял разъём.
Нужно заметить, что порядок сигналов на разъёме в принтере и на разъёме сенсора разный. На плате, в моём случае, идут подряд +5 Вольт (V), земля (G) и сигнал (S), а на плате самого сенсора, как видно на фото, питание и земля по краям, а выход сенсора в середине. Поэтому пришлось перевернуть два провода из трех.
Включил принтер. Датчик радостно засветил красным светодиодом, при появлении в щели оптопары пластиковой карты, светодиод выключился, и наоборот. Значит, работает. Но, при этом, принтер никак на него не реагирует. Что же делать? Помог файл с распиновкой всех разъемов на плате, найденный на форуме reprap.org. По нему видим, что сигнал от родного индуктивного сенсора (на схеме это сигнал PROXIMITY в распиновке 30-пинового кабеля, соединяющего плату и распредкоробку на оси Х) подтянут к +5В и подключен к пину 124 контроллера (PG9) (10kΩ Pullup to +5V and 100nF to GND, then 20kΩ to MCU Pin124 PG9), а сигнал с разъёма концевика (ZSTOP) подключен к пину 109 (PA14).
В Марлине этого пина в описании нашей платы нет, придётся добавить. Ищем в исходниках Марлина /Marlin/src/pins/stm32f1\pins_CHITU3D_V6.h
В группе параметров Limit Switches меняем пин концевика (до того там был прописан пин с датчика приближения):
#define Z_STOP_PIN PA14
И добавляем отдельно сигнал с датчика приближения (вдруг пригодится):
#define PROBE_1_PIN PG9
Теперь остаётся внести изменения в /Marlin/configuration.h
В разделе Endstop Settings:
Поменял настройку
#define Z_MIN_ENDSTOP_INVERTING false (было true), иначе концевик срабатывает в разомкнутом состоянии.
В разделе Z Probe Options:
Закомментировал #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, таким образом дал Марлину понять, что концевик и датчик приближения висят на разных пинах.
Раскомментировал и добавил пин датчика приближения, описанного в pins.h:
#define Z_MIN_PROBE_PIN PROBE_1_PIN
Дальше я раскомментировал
#define PROBE_MANUALLY
#define MANUAL_PROBE_START_Z 0.1
В разделе Bed Levellin Bed Levelling (тут всё чисто из интереса попробовать вручную отровнять стол по сетке):
Откомментил простой ручной
#define MESH_BED_LEVELING, соответственно закомментил
//#define AUTO_BED_LEVELING_BILINEAR, стоявшее по умолчанию.
В разделе Mesh прописал отступы от краёв стола и количество узлов сетки (3х3):
#define MESH_INSET 35
#define GRID_MAX_POINTS_X 3
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Раскомментил #define LCD_BED_LEVELING, чтобы можно было двигать Z из интерфейса,
Открыл #define LEVEL_BED_CORNERS, чтобы появилось меню для регулировки углов стола, в нём настроил параметры:
#define LEVEL_CORNERS_INSET_LFRB { 40, 50, 40, 30 } // отступы в миллиметрах от краёв стола (слева, спереди, справа, сзади), чтобы не сносило зажимы.
#define LEVEL_CORNERS_HEIGHT 0.1 // зазор в 0.1мм, чтобы ровнять углы по листику бумаги, с коррекцией на эту высоту. Можно скорректировать высоту сопла из интерфейса изменением Bed Z Level, но можно сразу вложить корректировку в процесс выравнивания.
#define LEVEL_CORNERS_Z_HOP 4.0 // на сколько мм поднимать сопло при переезде к следующей точке
#define LEVEL_CENTER_TOO // Если интересно, что происходит с уровнем сопла в центре стола
Таким образом, датчик приближения остаётся доступным для будущих экспериментов, хоть и не используется ни в одной из операций хоуминга, или выравнивания стола.
Крепление для датчика и шторки я распечатал вот это, оно для Ender 3, но на мой TronXY село без доработок. Выглядит всё в сборе так (изображение с thingiverse, но отличий нуль):Что стало лучше:
- Теперь нуль оси Z всегда на одном и том же месте, не нужно подстраивать высоту сопла на глаз в начале каждой новой печати
- После нескольких циклов выравнивания углов плоскость стекла стала совершенно ровной, тем не менее, некоторую выпуклость в центре пришлось скорректировать выравниванием по сетке. Для этого я заполнил сетку нулями, центральный узел немного приподнял путём ручного редактирования узлов сетки через Gcode (на 0.075) и сохранил сетку в EEPROM
- С выровненным столом первый слой идеальный и равномерный. Целый день печатаю, и ничего настраивать не пришлось
- Пока со всем этим возился, немного разобрался в Марлине и, вообще, в устройстве и логике работы принтера.
Такие дела, спасибо за внимание.
Еще больше интересных статей
Ускорение печати.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
но...
Дефект из-за перетянутого экструдера?
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
MMRU (Multi Material Russian Upgrade) (Часть 6: Анонс новой механики)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Когда бамбук научится на скоро...
Как в пародии на известную рек...
А гадить - делать угодное, люб...
Посоветуйте хотенд с гладким т...
Здравствуйте, столкнулся с про...
Всем привет! Прошу, не кидайте...
Собственно и вопрос: Как в Ком...