Как я к 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
- С выровненным столом первый слой идеальный и равномерный. Целый день печатаю, и ничего настраивать не пришлось
- Пока со всем этим возился, немного разобрался в Марлине и, вообще, в устройстве и логике работы принтера.
Такие дела, спасибо за внимание.
Еще больше интересных статей
Еще раз про WiFi, или ESP3D "для бедных".
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
"Вкусняшка" в DSM 6.1
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Записки тридэголика. Эпизод первый.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.

Комментарии и вопросы
А что там описывать. Управлени...
удалось делать изолирующие кож...
Немного если могу то помогу с....
Доброго времени суток товарищи...
Собираю Stealthmax V2 можно ск...
Прошу помочь разобраться. В 3д...
Мужики, быть может кто нибудь...