Терпение и труд... 3D Touch, смена прошивки и чуть-чуть про столы и мусор. Глава 3
Установка 3D Touch
Руки чесались в конце концов подключить и запустить 3D Touch, заказанный на Али. Но, для этого требовалось подразобрать принтер, провести провода и сменить прошивку.
По началу, я не сильно напрягался в чтении информации по этому вопросу в интернете потому, что, как мне казалось, на сайте продавца информация была максимально исчерпывающей. И вот, закончив в очередной раз печатать детали куклы супруге, я решился оперировать.
Так как я заранее напечатал весь комплект для установки Petsfang v2 с креплением датчика (в прошлой статье я рассказывал об этом), то мне оставалось лишь прикрутить датчик на своё место, прокинуть провод до платы и прошиться нужной прошивкой.
В очередной раз не очень порадовало, что датчик стола регулируется по высоте лишь после снятия обдува сопла. Датчик нужно отрегулировать по высоте таким образом, чтобы при опущенной игле он доставал до стола чуть раньше сопла, а при поднятой был выше сопла.
Кабеля для подключения идущий в комплекте достаточен для подключения датчика, если вы не хотите его проложить аккуратно. Я же хотел убрать кабель в косу с остальными проводами, поэтому мне пришлось нарастить кабель. В комплекте также идёт короткий кабель на 10-15 см, которого как раз хватило для удлинения. Паяльник в руки, кабель аккуратно просунут в косу, всё максимально аккуратно спрятано и уложено. Место спайки пришлось на нижнюю часть, входящую в блок, поэтому сгибы и переломы ему не грозят(ну, пока ещё не было таких проблем =) ). Подключение – согласно инструкции на сайте. После вскрытия блока я немного ужаснулся количеству мелких кусочков пластика, что через отверстие вентилятора попадали на плату. Удивительно, как туда не пролетели шайбы/гайки/болтики пока я собирал разбирал принтер несколько раз. В общем, было принято решение напечатать воздуховод по окончании модернизации. Моих мозгов хватило, чтобы посмотреть и запомнить версию платы и модель процессора, а вот чуть подготовиться и узнать модель драйверов я не удосужился, о чём потом сожалел. Датчик установлен и отрегулирован по высоте, кабель прокинут, всё подключено.
Провода кулеров пока небрежно собраны сзади, думаю, как их оформить. Каждый кулер на своём разъёме, в любой момент легко отключить без откусывания проводов.
Прошивка и как её есть
В первую очередь я заглянул на сайт Creality. Естественно, там есть прошивка для данного принтера с BLTouch на борту. 3DTouch с Али по заявлению продавца – клон, так что проблем возникнуть не должно. Берём в руки флешку, качаем файл, крибле крабле бум-с! Принтер включился, дёрнул датчиком(самотест – дважды опускает и поднимает иглу датчика при включении). Тут я представил как беззаботно нежусь на кроватке пока мой работяга делает всю работу за меня. Запускаю файл на печать… И ничего не происходит! Принтер игнорируя датчик начинает печать так как бог пошлёт(в смысле если стол кривой – это твои проблемы, хозяин). Естественно, зачем доморощенному мастеру почитать немного про калибровку и команды в слайсере! Во всём виновата прошивка! Не подходит! Датчик не тот, настройки датчика забыли прописать и прочее, прочее, прочее. Лезу в интернет, нахожу прошивку Marlin 2.0.8 с датчиком BLTouch, скачиваю, прошиваю – эффект тот же, но только меню теперь только на английском(для меня не проблема, но для супруги важно). Опять же, мозг всё ещё был не готов к простому решению(Добавь команду в слайсер, хозяин! Разве это сложно???). Было решено самостоятельно собрать прошивку со всем необходимым и достаточным для моего принтера, без лишних наворотов и опций, которые я ещё не скоро освою.
Установил Visual Studio Code, в программе установил дополнения C/C++, PlatformiO, Auto Build Marlin, Arduino IDE(у меня уже стоял, но как я в будущем понял – это для тех, кто будет шить принтер через UART). Дальше начался частичный процесс изучения сборки прошивки. Всё не так сложно, но в интернете очень много статей и роликов, которые уже не актуальны для новых версий. Поэтому, возможно, эта информация кому-то может хорошо помочь.
Самое важное – точно определить/узнать модель своей платы, модель процессора, модель драйверов. Всё это нужно для правильной настройки прошивки под принтер.
В моём случае это была плата Creality v.4.2.2. с процесcором GIGADEVICE GD32F303 и драйверами… тут я застрял с драйверами, так как на драйверах намертво приклеены радиаторы. Пока я нашёл способ идентификации – прошло около часу. На слоте SD-карты маркером написаны буквы, позволяющие определить модель драйверов. На иностранных сайтах нашлась расшифровка: C = HR4988 E = A4988 A = TMC2208 B = TMC2209 H = TMC2225 H8 = HR4988. Итак, мы имеем драйвера HR4988. И это тоже не есть хорошо. Marlin не имеет конфигурации именно под эти драйвера, в интернете на всех языках куча обсуждений, что драйвер схож с A4988, но имеет немного другие параметры(хоть и не сильно отличные), а также чуть более шумный, чем A4988. Придётся отталкиваться от драйверов A4988.
Теперь бежим на сайт Marlin(После нескольких попыток я решил, что лучше тащить с GitHub). Чтобы всё было красиво, собираемся на последней версии с исправлениями(на момент моих манипуляций последняя версия - 2.1.2.1.(для чистоты эксперимента пришлось сейчас собирать 2.1.2.2 и обновляться на неё, полезно для закрепления результата)). Для этого скачиваем основную прошивку с каталога bugfix-2.1.x(прошивка 2.1.2.2 с исправлениями(на момент написания статьи)) и конфигурации с каталога bugfix-2.1.x. Всё это распаковываем там, где удобно, только чтобы не было русского языка в названии папок по пути. Файлы конфигурации под нужную плату сразу переносим в папку с прошивкой с заменой файлов(Marlin-2.1.x->Marlin). В Visual Studio выбираем в левом верхнем углу Explorer(Ctrl+Shift+E) и выбираем Open Folder. Открываем папку с нашей прошивкой. Соглашаемся со сторонним автором прошивки.
Изначально я хотел всё сделать по канонам, с указанием процессора и драйверов, что у меня стояли. Но двое суток изучения форумов на всех языках мира не принесли плодов. Я решил так: Раз уж прошивка с сайта Creality устанавливается на эту экзотическую плату, значит, можно пользоваться базовыми параметрами. Но, зато за время потраченное на поиски я подчерпнул некоторые полезные моменты. Также, хочу сразу отметить, что в самих файлах конфигурации, которые необходимо редактировать в комментариях за скобками /* */ доходчиво объясняется назначение функции, её опции и примеры. Очень удобно работать, а также найти для себя какие-то дополнительные настройки, которые могут быть полезны именно для вашего принтера или ваших модернизаций. Для начала изучил с чем я могу работать. В Visual Studio по пути Marlin\src\core\boards.h можно найти весь список поддерживаемых плат. Заодно, найти свою или узнать какую похожую можно использовать. По поиску(Ctrl+F - creality) быстро нашёл все платы. И… естественно, платы с GD32F303 там и в помине нет. По версии платы v.4.2.2. имеется строка #define BOARD_CREALITY_V422 5040 // Creality v4.2.2 (STM32F103RC / STM32F103RE)
Значит, будем пользоваться этими данными. В файле platformio.ini в корневом каталоге необходимо изменить/проверить название платы default_envs = STM32F103RE_creality(ранее использовался STM32F103RET6_creality), чтобы все настройки при конфигурации происходили именно для выбранной платы.
Далее редактирую файл Configuration_adv.h. Вообще, если у вас достаточно времени и желания – лучше неспеша пролистать конфигурационные файлы от начала и до конца. Возможно, некоторые меню/функции вам окажутся полезными. Я много чего нашёл полезного, но не стал пока эксперименты ставить.
Сильно расписывать не буду, бегло пробегусь с короткими аннотациями того, что делал:
#define CONFIG_EXAMPLES_DIR “Creality/Ender-3/CrealityV422” – проверил, что плата моя
#define BLTOUCH_DELAY 500 – раскомментировал(поставил 300). Время опроса датчика. Уменьшать, если увеличиваете скорость измерений стола.
//#define BLTOUCH_FORSE_SW_MODE – не трогал. Если у вас помехи – раскомментируйте, увеличит длину импульсов, тем самым снизит помехи.\
#define BLTOUCH_HS_MODE true – раскомментировал. Лучше использовать на хорошо отрегулированной механике (ещё правильнее только на дельте). Необходимо ещё будет сильно увеличить скорость движения по Z. Иначе датчик будет биться об стол пока голова поднимается для движения к следующему месту измерения.
#define PROBE_OFFSET_WIZARD – раскомментировал. Добавить меню калибровки Z-offset.
#define PROBE_OFFSET_WIZARD_START_Z -4 – раскомментировал. Высота с которой начнётся калибровка.
//#define BOOT_MARLIN_LOGO_ANIMATED – чисто кому надо анимацию лого при включении – раскомментируйте.
#define SHOW_PROGRESS_PERCENT – показывать процесс печати в процентах
#define SHOW_ELAPSED_TIME – показывать прошедшее время печати
#define SHOW_REMAINING_TIME – показывать оставшееся время печати (будет меняться в зависимости от текущей скорости печати – на медленных участках будет расти, на быстрых снижаться)
Раскомментировать то, что считаете нужным. Если всё сразу, будут через 1 секунду сменять друг друга на экране.
#define LCD_PROGRESS_BAR – кому мало предыдущих уведомлений. Полоса прогресса печати.
Вообще, я не сторонник нагружать и так слабый процессор дополнительными задачами. Не уверен точно, но возможно, если вырезать с кода половину не очень нужных функций – возможно, принтер чуть прибавит в производительности за счёт освободившихся микросекунд у процессора (лирика).
//#define POWER_LOSS_RECOVERY - и всё что ниже для тех, у кого есть возможность настроить принтер на паузу в случае выключения света. (раскомментировать если надо)
//#define LCD_BACKLIGHT_TIMEOUT_MINS 1 – отключить подсветку экрана через минуту. Для тех у кого подсветка подключена на отдельный пин(без указания пина билдер отказался мне прошивку собрать). (раскомментировать если надо)
#define BABYSTEP_DISPLAY_TOTAL – раскомментировал.
#define BABYSTEP_ZPROBE_OFFSET – раскомментировал. Совместить микрошаги и команду M851
Не до конца разобрался с этими двумя функциями, но везде пишут «надо».
#define LIN_ADVANCE – раскомментировал. Активация LINEAR ADVANCE. На будущее. Если даже пока не планируете использовать, не помешает просто включить. А потом в слайсере активируете по желанию.
#define ADVANCE_K {0} – поставил 0, чтобы по умолчанию принтер не использовал эту функцию.
#define ADVANCE_K 0 - поставил 0, для всех экструдеров(если их несколько). (перестраховка)
#define ADVANCED_PAUSE_FEATURE – раскомментировал, чтобы добавить меню смены филамента.
На этом можно оставить этот файл в покое.
В файле Marlin\Configuration.h необходимо сделал несколько изменений.
#define CONFIG_EXAMPLES_DIR “Creality/Ender-3/CrealityV422” – также проверил/изменил под свою плату.
#define STRING_CONFIG_H_AUTHOR “(………………….)” – в скобках можно написать себя, как единственного и неповторимого автора этой замечательной прошивки, единственной в мире.
#define MOTHERBOARD BOARD_CREALITY_V422 – изменил под свою(в boards.h смотрели ранее название)
#define CUSTOM_MACHINE_NAME – в кавычках можно написать своё собственное название. Я не стал извращаться и просто указал “Ender 3 v.4.2.2. BLTouch”
#define X_DRIVER_TYPE A4988
необходимо указать модель драйвера. Модель моих драйверов HR4988 также отсутствует в списке. По большинству сообщений на форумах рекомендуют использовать A4988. Его и указал. Те же манипуляции провёл для Y, Z, E0.
#define Y_DRIVER_TYPE A4988
#define Z_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
#define S-CURVE_ACCELERATION – раскомментировал. Снижение вибраций при печати кривых, обещают более гладкие движения при печати изогнутых линий.
#define DEFAULT_MAX_FEEDRATE {500, 500, 10, 25} – третье значение (Z) изменить для увеличения скорости измерения движения/в частности пробы стола. (я выбрал 10. Сильно не тороплюсь)
//#define Z_MIN_PROBE_UZES_Z_MIN_ENDSTOP_PIN – закомментировал. Если датчик подлючён «по-шамански», использовать для датчика пин концевика. У меня на отдельном разъёме всё, мне не надо.
#define USE_PROBE_FOR_Z_HOMING – раскомментировал. Использовать датчик автоуровня стола для парковки по оси Z.
//define Z_MIN_PROBE_PIN -1 – (раскомментировать тем, у кого датчик подключён в какой-то другой разъём. Как искать цифру пина – не задавался целью.)
#define BLTOUCH – раскомментировал. Собственно сама активация датчика автоуровня стола.
#define NOZZLE_TO_PROBE_OFFSET {-48, -10, 0} - координаты взял с PETSFANG для крепления указано смещение относительно Z ставлю всегда 0. Всё равно первый раз калибровать стол надо(первый и единственный, если больше туда не лезть).
#define Z_PROBE_FEEDRATE_FAST (10*60) – скорость измерения уровня стола, увеличить без фанатизма, если изменяли BLTOUCH_DELAY. Для себя оставил 10, может в будущем добавлю. Учитывайте, что чем выше скорость (и хуже купленный датчик), тем хуже качество регулировки уровня стола. В большинстве случаев вряд ли сильно критично, но я на гонки по печати не стремлюсь. (уже вот в последний раз собирая прошивку 2.1.2.2. 14.03.24 я наткнулся на статью, где человек как раз разгоняет калибровку стола, его значения я не использовал, но пару моментов у него подчерпнул.)
#define MULTIPLE_PROBING 2 – на выбор закомментировать или оставить. Количество замеров уровня стола в каждой точке. Смысла ставить «1» нет, закомментировать – тот же эффект.
#define X_BED_SIZE 235
#define Y_BED_SIZE 235
Для тех, кто хочет увеличить/уменьшить размеры стола(физически изменив размер каркаса!)
#define Z_MAX_POS 250 (Если на голове принтера куча обвесов, я бы измерил реальную высоту, на которую он может подняться и ограничил её, на всякий случай.)
#define AUTO_BED_LEVELING_BILINEAR – выбрал этот метод, так как в UBL у меня возникали проблемы, при калибровке больше 58 точек принтер просто прекращал калибровку и печатал без регулировки стола. Возможно, из-за ограниченного процессора GD32F303.
//#define RESTORE_LEVELING_AFTER_G28 – восстановить уровень после G28(парковка по осям)
//#define ENABLE_LEVELING_AFTER_G28 – активировать уровень посла G28 (парковка по осям)
С этими двумя функциями у меня возникло больше всего мороки. Прям вот дословного объяснения что для чего я не нашёл, везде в общих чертах. Результат – самостоятельно проверял оба варианта. При раскомментировании 1-ой функции мы имеем следующее – принтер обнуляет и записывает новую сетку, которую снимает (если в слайсере указана команда G29 после G28).
При раскомментировании 2-ой функции – принтер пользуется той сеткой которая была записана вручную с меню принтера -> выравнивание стола. Даже если в слайсере указана команда G29 принтер начинает калибровку и тут же её заканчивает не измерив даже первой точки.
Какую выбирать? Насколько я смог проверить экспериментально – 1 – если нужно калибровать стол каждый раз перед печатью, 2 – если вы аккуратный человек и не тормошите стол, можно время от времени делать калибровку вручную с меню принтера. Поправьте если я ошибаюсь, мы вместе найдём истинну.
#define GRID_MAX_POINTS_X 5 – для меня было более чем достаточно 5 точек по оси X. Общее – 25 точек по всему столу.
#define GRID_MAX_POINTS_Y - если у вас прямоугольный стол можно увеличить/уменьшить количество точек по оси Y. По умолчанию стоит значение «GRID_MAX_POINTS_X» - сколько укажете для X – столько будет и для Y.
#define Z_SAVE_HOMING – раскомментировал. Смещение датчика автоуровня стола по осям XY перед началом измерения. Чтобы он не пытался найти 0 за границами стола.
#define HOMING_FEEDRATE_MM_M {(20*60), (20*60), (10*60)} – Можно чуть ускорить, если есть желание(только при хорошо отрегулированной механике! Незачем насиловать уже изношенные механизмы).
//#define EEPROM_CHITCHAT – закомментировал, так как принтер не общается с ПК никак и обмен данными EEPROM не нужен, чуть освободит место(но это не точно)
#define EEPROM_INIT_NOW – раскомментировал. Автоматически инициализировать EEPROM в первое включение после прошивки.
По требованию супруги добавил русский язык.
#define LCD_LANGUAGE ru
#define DISPLAY_CHARSET_HD44780 CYRRILIC - Обязательно необходимо поправить кодировку для выбранного языка, иначе будут иероглифы. В моём случае были китайские при первой попытке.
#define INDIVIDUAL_AXIS_HOMING_MENU – индивидуальное меню для парковки осей
#define INDIVIDUAL_AXIS_HOMING_SUBMENU – индивидуальное подменю для парковки осей
Особо долго не разбирался, сказали «надо» - значит надо. Как понял, более удобное меню для движения по осям.
#define CR10_STOCKDISPLAY – убедился, что указан родной дисплей.
На этом все муки были закончены. Можно попробовать собрать прошивку. В моём случае стоит обгрызанный GD32F303, у которого всего 256KB памяти, и прошивку необходимо собирать с пометкой 256KB.
Если нигде не накосячено и все условия соблюдены прошивка собирается. Иначе в терминале вылезет ошибка с указанием, что не соблюдены зависимости или забыли ковычки, скобки или еще чего недоброго.
Скидываю файл ……. на флешку, включаю принтер, немного пустого экрана, после чего знакомые логотипы, перезагрузка после инициализации EEPROM и принтер готов радовать своей работой снова!
Отступление. В первые разы я собирал прошивку на 512КБ и она даже каким-то образом влезала на мою плату, но были время от времени разные глюки. То принтер зависнет и перезапустится, когда вставляешь sd-карту. То при ручной калибровке вместо 10 шагов сделает всего 4. В общем, не стоит так делать. Если процессор GD32F303 - его размер прошивки 256КБ.
Обязательно не забыть сделать первые калибровки:
Регулировка подачи филамента. В меню «Движение» - «Движение по осям» - «Экструдер» - Сопло не нагрето! Продолжить? Я всегда использую 300мм – чем длиннее путь, тем меньше погрешность, больше 300 не вижу смысла, до такого фанатизма я ещё не дожил. Я не откусываю, а просто мучаюсь и прикладываю линейку. Получается 290мм. В меню «Конфигурация» - «Расширенные настройки» - «Шагов/мм» - «Е шаг/мм» - запоминаю цифру 93.0 (где-то в интернете узнал, что это стандартное базовое значение). По формуле «нужный шаг = (длина выбранная * шаг указанный)/длина реальная» получил (300*93.0) / 290 = 96.20689….. В математике учили округлять в большую сторону. Так что, 96.21. Это значение и записываю в Е шаг/мм. Снова проверяю подачу 300мм. На выходе 300мм. Отлично.
Регулировка PID сопла и стола. Конфигурация->Расширенные настройки->Температура->автокалибровка PID(Я делаю по 235 градусов, т.к. чаще всего печатаю PETG на этой температуре).
Регулировка смещения Z. По бумажке, при первой печати можно поправить значение Z-offset если не устраивает первый слой. Движение->Выравнивание стола->Мастер Z-зонда. И,сначала подгоняем большими значениями поближе к столу. потом 0.1. И если совсем красиво, потом 0.025.
Выравнивание стола(по выбору).
Сохраняю в EEPROM. ГОТОВО!
В общем, на данный момент это уже 7-ая попытка сборки прошивки, многие грабли я прошёл самостоятельно, что-то кусками вырывал со всех уголков света. А что-то просто нашёл и изучил просто не торопясь просматривая файлы конфигурации, в которых, как я уже говорил, вполне нормально объясняется смысл функции и варианты её значений(если таковые имеются).
И очень важное, из-за чего лично я полез в эти дебри: обязательно необходимо добавить в слайсере команду G29 после команды G28. Теперь, когда пройден этот трудный и долгий путь, я понимаю, что даже на штатной прошивке, скорее всего, у меня всё прекрасно заработало бы. Если бы я потратил чуть времени, чтобы узнать "а как вообще происходит процесс автоматической калибровки стола". Опыт - сын ошибок трудных, однако.
Ещё раз повторюсь, я начинающий в печати и мои статьи не призыв к действиям и уж тем более не инструкция по применению. Но если эта информация вам помогла – я очень рад.
Для тех, кто дочитал до этих строк – просто для затравки, в прошивке марлин есть игры, которые естественно, не активны. Но в файле конфигурации их можно активировать. =) Уж не знаю, способен ли прожевать процессор старичка Ender 3 эти вещи, а главное зачем это нужно… Но вдруг кому-то скучно, а печатать не хочется. ))))
Немного про столы…
Когда меня всё таки выбесило, что купленная пластина PEI-PEO за почти 1.2К не работает – я стал искать пути решения. С психу развёл клей карандаш в воде, этим бульончиком промазал текстурированную поверхность, дождался пока она высохнет… И как оно запечатало! Действительно, очень классный лист, удобный. И первый слой очень хорошо выглядит. Приятный шершавый пластик. Естественно, тут Остапа понесло… Намазал этим же бульоном стекло, пластину, что недавно обновил, текстолит голый, обои, жопу коту, ручку двери холодильника, гайки колёсных болтов на машине… (шучу)
Текстурированная пластина теперь держит намертво, деталь отходит только после нескольких сгибаний, деформаций пластины.
Для стекла также хорошо подошло - для тех пластиков, которые не очень(когда покупаешь PETG за 500р./кг.) И как я оговорился ранее, уставшее покрытие родного стола также начинает снова работать посла этого бульончика(у товарища проверял. Своё покрытие пока не износил так быстро). Также попробовал одно из стёкол пройти наждачкой мелкой с водой для увеличения адгезии без клея. В целом, метод вполне рабочий, но вручную шлифовать приходится очень долго.
Фото поверхности в живую и под микроскопом.
Ну и апофеозом всех моих тестов оказалось обычное жидкое мыло. Нет, не наносить вместо клея, а просто помыть хорошенько стекло клеем и к нему снова начало липнуть – не оторвёшь, пока не остынет.
Остатки пластика
Ну и ещё один маленький бонус для итак уже не маленькой главы… Когда встал вопрос «куда девать оставшиеся поддержки, повреждённые модели, плоты и просто холостые пробы пластика» - я предложил супруге купить формы для запекания(она называет их «молды»). И теперь дома много стаканчиков, подносиков и прочих форм, которые, пусть и не сильно красивые, зато свои. =)
Пока в процессе сборки мини-печи под эти дела, духовка очень врёт по температуре - из-за чего пластик начинает кипеть образуя много пузырей. Как сделаю печь - проблема пузырей, надеюсь, почти исчезнет.
Вот эта глава мне далась ооочень большим трудом... Неделя правок, переделок и копаний в настройках...
Еще больше интересных статей
Klipper - восстановление прерванной печати
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно выяснилось что у стокового клиппера есть странная особенно...
Датчик наличия пластика для Bambu Lab Х1 Carbon.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Вот и я про то. При необходимо...
Купил себе как-то дрыгостол, п...
Спасибо за наводку, я пока не....
Добрый вечер, может у кого ест...
Сегодня получил заказанный на...
Добрый день, подскажите, пожал...
Что делать если я первый раз к...