Металл2024 Реклама
Метобр2024 Реклама

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

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

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

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

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

7

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

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

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

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

{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. У некоторых из них по пол головы, у некоторых одна рука, у некоторых две но без ладоней или обе левые. Жуть.

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

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

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

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

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

7
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама