Пауза на притерах Anycubic 4Max Pro 2/4Max Pro и им подобным.

andrewvs599
Идет загрузка
Загрузка
30.04.2021
630
11
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5

Столкнулся с необходимостью постановки печати на паузу из G-code на принтере Anycubic 4Max Pro 2 при печати с флешки. Казалось чего проще, использование команд M25, M600 или M0 проблему обычно решает. Решало и у меня на двух других принтерах, но только не у Anycubic 4Max Pro 2. При использовании M25 принтер честно встает на паузу в начале указанного слоя, но инструмента для выхода из режима паузы при этом нет. На тачскрине не появлялась кнопка "Возобновить", да и сам тачскрин ни на что не реагирует. С M0 ситуация примерно та же, M600 принтер просто игнорирует. С помощью поиска здесь и на просторах интернета, я быстро понял, что проблема глобальная и требует серьёзного вмешательства как в электронные кишки принтера, так и в программные. Я был не готов курочить исправный принтер из-за такой несущественной проблемки. Но если препятствие нельзя преодолеть, то его можно обойти, а советский инженер и к этому привычный. Сразу скажу, выход был найден, а поскольку я пользуюсь слайсером Simlify3d, то далее изложение пойдет с точки зрения использования этого слайсера, но оно подойдет и для других с соответствующими изменениями синтаксиса и пр.

Команды М25, М0, М600 можно использовать прямо вставляя их в g-code перед началом печати целевого слоя. К счастью, современные слайсеры избавляют нас от подобных ковыряний и позволят вставлять команды постобработки ( а М25 и подобные именно ими и являются в данном случае) сразу на этапе подготовки модели к печати. В Simlify3d эти команды прописываются вот здесь.

Например, строка для постановки на паузу будет выглядеть так:

{REPLACE "\n; layer 13, Z = " "; layer 13\nM25 "}

Но в этом принтере её применение вызывает фатальное затруднение(см. выше). Хорошо, поставить на паузу из g-code нельзя, будем ставить в ручную, благо возможность для этого принтер предоставляет нажатием кнопки "Пауза" на тачскрине. Далее вы совершаете какие-то действия (замена пластика, укладка закладных деталей и т.п.) и затем нажимаете "Продолжить". Проще не бывает. Но сидеть и ждать пока принтер печатает до нужного слоя (а его еще надо как-то и засечь вовремя) занятие скучное. Надо чтоб принтер нас предупредил о приближении к целевому слою. Anycubic 4Max Pro 2, к счастью, умеет издавать звуки и этими звуками можно управлять вставляя соответствующие команды в g-code. Итак, нам необходимо чтоб принтер издал звук при начале печати слоя после которого пойдет слой который вначале надо поставить на паузу. Например, нам нужно поменять пластик начиная с 14-го слоя, значит звук должен воспроизвестись заранее, то есть в начале 13-го слоя. Услышав его мы прибежим с пластиком наперевес, дождемся печати текущего слоя, нажмем на пимпу "Пауза" и спокойно заменим пластик. Ву а ля, цель достигнута. Вот строка которая нам поможет в этом.

{REPLACE "\n; layer 13, Z = " "; layer 13\nM300 S1000 P2000 "}

Где layer 13 - номер слоя в начале которого выполниться команда, M300 - команда воспроизведения звука, S1000 - частота звука в герцах, P2000 - длительность звука в миллисекундах.

Однако звук длительностью 2 секунды можно и не услышать. Можно его сделать прерывистым для лучшего восприятия или более продолжительным, например 10 секунд. Но, как показали мои наблюдения, пока воспроизводится звук, сопло будет остановлено в начале указанного слоя и будет там торчать пока звук не прекратится. При коротком звуке (0,5-2 секунды) беды не будет, но при более длительных звуках на модели может остаться след от раскаленного сопла. Чтобы этого избежать можно приподнять сопло на время звучания, а затем опустить на ту же высоту.

{REPLACE "\n; layer 13, Z = " "; layer 13\nG1 Z10.000000\nM300 S1000 P10000\nG1 Z-10.000000 "}

Ну и далее мы с пластиком наперевес... (см. выше)

Чего мы добились? В первом случае раздается короткий звук и мы, услышав его, подходим к принтеру, дожидаемся окончания печати текущего слоя, жмем паузу и совершаем необходимые действия. Во втором случае звук более длинный, что надежнее, сопло отводится вверх на 10мм для защиты от перегрева участка модели, затем сопло опускается на 10мм для продолжения печати, остальные действия с нашей стороны те-же, что и в первом. Небольшим недостатком обоих способов является то, что мы ждем окончания печати текущего слоя (мы же включили сигнал на 1 слой раньше нужного нам слоя), а слои бывают довольно длительными по времени печати. Вторым недостатком является то, что при нажатии кнопки "Пауза" принтер моментально печать не остановит, а будет допечатывать то, что находится в его буфере (это мне пишет на экране Anycubic 4Max Pro 2 при нажатии на паузу), а это около 2-3 секунд, что бывает неприемлемо.

Чтобы исправить эти недостатки необходимо что бы принтер совершал все действия сразу перед началом печати целевого слоя. Но как успеть подбежать к принтеру сразу после начала воспроизведения предупреждения? В этом нам поможет команда G4 - ожидание. У нее всего один аргумент - время. Pnnn - время ожидания, в миллисекундах, Snnn - время ожидания в секундах. Добавляем её в нашу командную строку.

{REPLACE "\n; layer 14, Z = " "; layer 14\nG1 Z10.000000\nM300 S1000 P2000\nG4 S20\nG1 Z-10.000000 "}

Выполняя эту строку принтер в самом начале целевого слоя (14-й в нашем случае) отведет сопло на 10мм вверх, издаст стон частотой 1000 герц и длительностью 2 секунды, встанет на ожидание на 20 секунд, затем опустит сопло на место и продолжит печать. Длительность ожидания можно увеличивать, чтобы дать нам время для необходимых операций. Удобно, но не очень. Можно банально не успеть в отведенное время, а если ожидание задано с большим запасом, то придется ждать его окончания. К счастью, оказалось возможным во время выполнения принтером команды ожидания, поставить его на паузу вручную. Для этого, когда принтер издал звук и встал в ожидание нужно нажать на тачскрине кнопку "Пауза", после этого принтер дождется окончания действия команды G4 ожидание, опустит сопло и попытается продолжить печать, но будет вынужден выполнить команду "Пауза" которую мы дали ему вручную. Сопло вновь поднимется и у нас будет сколько угодно времени для выполнения всего, что мы задумали на этом слое. Это пока всё, что я придумал и опробовал. Командная строка для каждого слоя должна быть прописана в одну строку без переносов. Командных строк может быть сколько угодно. Если вам нужно 10 раз менять пластик, то просто создайте 10 командных строк с указанием необходимого слоя, но каждый раз с новой строки.

Получилось очень много букв для решения, казалось бы, пустяковой проблемы. А этого можно было избежать если бы разработчики озаботились этим сразу при проектировании. И это далеко не единственный недостаток этой модели. Мне пришлось заменить не совсем стандартное сопло на обычное E3D, ибо качество печати родным было отвратное и, как следствие, переделать обдув, так как родное сопло длиннее E3D на 2мм. Мне пришлось долго искать причину подклинивания стола на первых слоях печати. В результате помогла замена модных бронзографитных втулок на оси Z на обычные линейные подшипники. Ну и еще всякого по мелочи. Мне иногда снятся инженеры Anycubic. У некоторых из них по пол головы, у некоторых одна рука, у некоторых две но без ладоней или обе левые. Жуть.

В остальном принтер хороший, качество печати теперь меня полностью удовлетворяет.

Если кто-то знает способ лучше, прошу озвучить его в комментариях, возможно я его не нашел. Надеюсь статья будет полезна.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Комментарии к статье

Комментарии

01.05.2021 в 09:39
0

. Я был не готов курочить исправный принтер из-за такой несущественной

Зачем курочить, достаточно прошивку поправить. Сразу все делается отводит голову, опускает стол,выгружает пластик. Нужно лишь сменить пластик и нажать продолжить печать.

01.05.2021 в 09:50
0

Прошивку там не поправить. Это закрытый проект. Если только полностью менять на что-то свое. Если бы можно было, всё было бы проще. И там не только в прошивке дело, похоже. Там еще и экран менять придется, насколько я понял из обсуждений этой проблемы.

01.05.2021 в 09:58
0

Производитель использует марлин и по условиям лицензии обязан предоставлять исходный код. Писать в поддержку с требованием предоставить.

01.05.2021 в 10:01
0

Возможно, но я обошелся своими силами. Решение меня устраивает.

02.05.2021 в 13:00
0

гонево. на гитхабе есть. на тхине есть. обычный марлин - никаких чудес.

хотя косяками в механике(?) меня удивили- какого черта? в первой все было чики пуки, только электронку перешаманить, ан нет! электронка такая же, а полезли в железяки. походу последний толковый инженер сбежал из аникубиков.

01.05.2021 в 15:15
0

Прошивка там ужас, древний Марлин с кучей недокументированных костылей и без исходников. Исходники есть только для версии принтера 1.0, у меня даже получилось их портировать на 2.0, но вместо устранённых багов вылезла куча новых.

Так что я решил вопрос радикально - поменял плату на Duet 2 WiFi :)

01.05.2021 в 17:07
1

Вроде бы здесь

https://drucktipps3d.de/forum/topic/anycubic-4max-pro-2-0/

выкладывали прошивку

01.05.2021 в 17:10
0

Сейчас 15 страниц на немецком читать не буду ;) Но я плату менял в январе, тогда заходил и на этот форум, работающего решения там ещё не было.

04.05.2021 в 22:02
0

Я нашел решение так - разбиваю g-код на два файла - до паузы и после. В первом файле оставляю начало кода, область печати до паузы и окончание печати. Во втором необходимо доработать начало - если модель небольшая , то можно оставить обнуление абсолютных позиций по трем осям, если мешает, то по оси Z нужно исключить обнуление - включенный принтер по этой оси не так уж и гуляет. Также убрать все перемещения в начале кода ниже верха напечатанного объекта, чтоб головка не врезалась в объект. Можно также снизить нагрев стола, если не нужен.  Далее добавляем часть кода печати после паузы, ну и окончание. 

По завершении печати первого файла выполняем необходимые действия, после запускаем второй файл. Конечно всё зависит от точности концевиков,  но думаю если поставить индукционные , то результат будет отличный.

05.05.2021 в 11:01
0

Мне кажется, это слишком сложный и очень ненадежный путь решения проблемы.

05.05.2021 в 22:24
0

Сложный - да, не спорю. Но насчет надежности думаю достаточно надежный. Отрабатывает на 100%. За неимением другого приходится изгаляться (.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Кот и рыба

Авто Податчик Припоя (Жизни уже не будет прежней)

Пронзающий пространство (фантастическая повесть) Продолжение 14

Ошибка autotune failed temperature too high при настройки PID, переназначение портов в MARLIN для термистора.

Посыпались ремни - не страшно, есть ещё пластик и дихлорметан.

Орден Славы