Продолжение прерванной печати, всё в кучу и с плюшками

Подписаться на 3Dtoday
eta4ever
Идет загрузка
Загрузка
22.08.16
33625
17
печатает на RepRap
3D-печать
54
PREVIEW
Вопросы по восстановлению прерванной по какой-то причине печати возникают регулярно. Материалы по этой теме на портале тоже имеются, но, я думаю, все будут только за единение причин, следствий, "кто виноват", "что делать" и "едят ли курицу руками". Но главная задача - чтобы можно было потом давать ссылку на этот пост, а не искать в закладках наиболее подходящий под конкретный случай.

Итак, у нас есть принтер, который печатал-печатал, а затем по какой-то причине произошла шайтанама. В результате мы получили недопечатанную деталь. Причины - сбой электропитания, разрыв связи с компьютером, таинственные электрические процессы в мозгах принтера, пробка в экструдере (или ролик перегрыз филамент, или пруток кончился, в общем, принтер жужжит вхолостую). А нам нужна цельная деталь.

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

Определение высоты

Независимо от того, к какому решению (второму или третьему) мы приходим, возникает основополагающий вопрос - на какой высоте остановилась печать. От точности определения во многом зависит качество (и объемы постобработки) шва. И тут, опять же, есть варианты. Самый халявный - если удается точно определить, где закончилась печать. Например, если электроника принтера зависла (или связь прервалась), а на дисплее остались заветные цифры "Z-что-то-там". Или есть возможность поглядеть лог терминала до разрыва. Идеальный случай - когда есть последняя команда перемещения по XY (G1 Xxxx Yyyy Eeee) и можно прокрутить лог вверх до ближайшего начала слоя (G1 Zzzz). Это позволяет точно определить даже не высоту а точку!

Маленькая хитрость номер раз. Если печатаете из Repetier-Host, программа пишет лог взаимодействий с принтером. Оно очищается при запуске программы или успешном завершении печати. То есть. Если у вас вырубился компьютер с Repetier-Host, НЕ ЗАПУСКАЙТЕ программу. Вместо этого надо проследовать по маршруту типа C:\Users\<имя пользователя>\AppData\Local\RepetierHost\ и найти там repetier.log. Лог-файл простенький, но там сохраняются прекрасные сообщения типа "< 14:22:57.158 : Печать слоя 131 из 204". Так мы можем узнать, на какой высоте прекратилась печать при выключении компьютера.

Маленькая хитрость номер два. Если печатаете из Pronterface, настройте вывод лога в файл (Settings - Options - User interface - Log path). В этом случае программа будет дублировать в текстовый файл то, что вы видите в окне терминала. Что, опять же, позволит определить высоту прекращения печати.
pronter log.png
Где прячется настройка лога Pronterface

А вот если вы печатали с SD-карты - ну, это серьезнее. Придется определять положение каким-то волшебным образом. Для особо усидчивых и печатающих относительно толстым слоем, можно взять иголочку и посчитать слои. Можно немного проще (но тоже требует внимательности).

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

Теперь поднимаем Z выше модели, подводим к ней по XY, и потихоньку опускаем. Вот как будет касание, положение найдено.

Далее я буду не единожды упоминать код G92. Как он работает, поясню на примере: G92 X100 заставляет принтер считать, что его текущая координата X равна 100, и дальше он будет плясать от этой установки.

Если нельзя запарковать

Если будем отдельно печатать верхнюю часть детали, то снимаем имеющееся со стола и меряем штангенциркулем. А если хочется стоя и в гамаке, то и здесь есть решение. Приподнимаем Z и паркуем XY, как описано выше. Подводим к модели (до касания, лучше холодным чистым соплом) и даем принтеру команду G92 Z0. Теперь он думает, что Z запаркована, соответственно, готовить к печати верхнюю часть детали надо будет, как будто она печатается на столе. Ну, об этом далее.

Подготовка нового G-кода

Если выбираем вариант с отдельным допечатыванием, то нам нужно отслайсить модель с определенной высоты. В Cura на вкладке Advanced в разделе Quality есть пункт Cut off object bottom. То есть, отрезать нижнюю часть модели. В Slic3r нужно порезать (Cut) модель по Z и оставить только верхнюю часть. В Simplify3D (я им не пользуюсь, поэтому точно не расскажу) немного по-другому, там можно печатать именно с заданной высоты, а не с нуля. Тут будет небольшой пробел в повествовании. Наконец, модель можно порезать в netfabb и отслайсить.

Итак, у нас есть новый G-код для верхней половины модели. Печатаем.

Если хотим печатать по имеющейся нижней части, тут опять варианты. Можно подготовить G-код как в абзаце выше, выбросить из него все подготовительные операции (парковку), запарковать XY вручную, выставить нужную Z, дать G92 Z0, прогреть нагреватели и запустить печать. Можно взять имеющийся G-код модели, выбросить из него все до G1 Zzzz, где zzz - наша высота начала печати. Это годится, если мы можем запарковать Z. Паркуем в доступной точке Z, поднимаем выше модели, прогреваем нагреватели, запускаем обрезанный G-код.
find.png
Ищем нужное
cutted code.png
Начало "обрезка" кода с абсолютной подачей. Можно G92 просто в терминале выполнить, лишь бы не забыть.

С обрезанием G-кода есть нюанс. Если у нас G-код сгенерирован с относительной подачей (строки вида G1 Xxxx Yyyy E<небольшое число>;), то ничего чудить не нужно. А если подача абсолютная (координата E постоянно растет), нужно перед запуском печати "обрезка" дать принтеру команду G92 Eeee, где eee - последняя координата E в удаленной части G-кода.

Кстати, обрезанный G-код можно использовать и для отдельной допечатки верхней половины детали. Для этого надо запарковать вручную все оси, дать G92 Zzzz (где zzz - высота имеющейся нижней части), и можно пускать "обрезок". Не забываем прогревать хотэнд и стол до нужных температур, или оставлять соответствующие команды в G-код.

Тонкость

Допустим, у нас высота отпечатанной части 10.0 мм. Для слоя 0.2 это означает, что отпечатано 50 слоев (если первый слой тоже 0.2) Не факт, что последний завершен. Тут хорошо бы прикинуть. Если слой завершен, или близок к тому, то продолжать печать лучше с 10.2. А если слой только начат, то лучше напечатать его повторно. В общем, в зависимости от степени джедайства, у нас будет либо выдавленный слой (который можно подрезать или подшлифовать), либо щель, которую заделывать сложнее. На мой взгляд, выдавленный предпочтительней из-за большей простоты ликвидации (хотя, от детали зависит) и лучшей прочности соединения.

Подборка постов по данной теме

Отдельная допечатка, склейка, Cura.
Допечатка поверх, Simplify3D.
Допечатка поверх, Simplify3D. Еще.
Допечатка поверх, Cura.
Кратко о подрезке G-кода.

Интересно, что параллельно с подготовкой этого материала вышел еще один, тоже про восстановление. К счастью, не слишком пересекающийся с моей компиляцией. Там очень крутая штука упомянута, которая минимизирует использование бубна. Речь идет о совместной работе умного дисплейного модуля MKS TFT и датчика пропадания питающего напряжения. Без небольшого ИБП тут, конечно, не обошлось, но зато какая красота: модуль понимает, что нет питания, фиксирует текущие координаты, паркует голову и ждет, когда хозяин позволит продолжить работу.

Что забыл? Жду в комментариях. Вот, например, вспомнил, что в Slic3r есть Z offset, тоже можно использовать при подготовке G-кода для печати поверх. Главное, потом не забыть убрать, это касается и других волшебных параметров вроде обрезки в Cura.
Подписаться на 3Dtoday
54
Комментарии к статье

Комментарии

22.08.16 в 10:56
1
Если печатать поверх уже отпечатанного, то нижняя часть будет холодной. При достаточно большой высоте горячий стол не сможет прогреть всю деталь и готовый принт будет менее прочным, чем распечатанный с нуля. Поэтому, закономерный вопрос, какие меры можно предпринять для улучшения спаивания? Печатать в термокамере?
22.08.16 в 11:15
2
Для ABS может быть и актуально. В принципе, можно перед печатью накрыть деталь со столом старым свитером, и пусть прогревается. Но я не думаю, что это как-то повлияет на спаивание слоев. По мне, так надо слайсить верхнюю часть отдельно (чтобы у нее сплошное основание было), можно даже немного flow на первом слое прибавить, чтобы он вмазывался в заполнение нижней части детали. Печатать этот слой на черепашьей скорости. Ну и подгонять Z таким образом, чтобы сопло практически ползло по недопечатанному, подплавляя.
17.02.19 в 11:01
0
Как вариант можно сделать холостой слой без подачи прутка поелозить по напечатаному на малой скорости
22.08.16 в 11:37
3
Вот еще одну штуку забыл. Про адгезию. Остановилась у меня раз деталь из ABS и стол успел остыть, она отщелкнулась, но не сдвинулась. Привандалил ее к столу соплями из термопистолета и допечатал.
23.08.16 в 15:24
2
Чтобы продолжить печать с последней точки:
В Repetier-Host можно посмотреть Gcode по слоям, если при этом выделять сам текст кода сверху вниз, то он будет подсвечиваться желтым по ходу процесса печати. Таким образом, зная нужный слой (ищем, как описано в статье), можно визуально найти точку в коде, где оборвалась печать.
Конечно, для этого нужно увидеть эту точку на самой детали, там должен остаться след от остановки сопла.
Далее подчищаем код сверху, и действуем по алгоритму, указанному в статье.
Не забываем про G92 для экструдера.
Так можно продолжить печать с места остановки.

ПродолжитьПечать.jpg
23.08.16 в 16:24
3
Я особенно тщательно буду следить за тем, чтобы комментарии относились к теме, затронутой в посте.
23.08.16 в 22:45
2
eta4ever, Благодарствую!
Классные перекрёстные ссылки, как раз подумал о них.

Хоть мы с Вами (пока) лично и не знакомы,
у меня было ощущение, что у Вас 'зреет' именно ЭТА тема, с чем Вас и Поздравляю!

Могу только добавить, что в Вашем топике очень хорошо разложены варианты возникновения одной и той же ситуации,
о которой ВОШЕДШИЙ В РАЖ Мэйкер-начинающий, может, и не задумывался НИКОГДА, всецело доверяя своим районным энергетикам,
электрикам ДЭЗа (те которые голые концы не оставляют), ну и соседям со сварочными и прочими трёхфазными агрегатами...

Приятно было также узнать, что в мире существуют китайские братья по разуму, которые делают некоторые уникальные по простоте и очень нужные вещи, пока к сожалению только на свой внутренний рынок (если судить по сопроводительной документации).

Ну и наконец, могу сказать однозначно, и рекомендовать всем, кто не приобрёл ещё 3D-принтер, если Вы хотите печатать с карты памяти (т.е. НЕ С КОМПЬЮТЕРА, то на настоящий момент самое удачное, если не ЕДИНСТВЕННОЕ решение - это наличие у нового принтера модуля MKS TFT28 v.1.2
Есть другие модели, но с этой - уже проверено.

Надеюсь, eta4ever, что Вы попробуете эту китайскую технологию, которая даёт даже RAMPS-у "вторую жизнь".

С Уважением,
Ski.
23.08.16 в 23:08
1
Спасибо на добром слове. MKS TFT будет в обозримом будущем изучена, внедрена и распиарена ;)
23.08.16 в 23:11
1
MKS TFT будет в обозримом будущем изучена, внедрена и распиарена
Очень надеюсь.
Не забудьте про MKS TFT28, MKS TFT32, v.1.0, v.1.1, v.1.2, ну и наконец, про MKS-DET (дописал и довыкладывал, Вэлком взглянуть.)
26.08.16 в 15:40
1
Лучше иметь калиброванный цилиндр, скажем на 95% высоты принтера. Тогда его ставим в любое свободное место стола, втыкаем в него сопло и говорим ,что у нас Z=NNN где N высота цилиндра этого, заранее известная.
26.08.16 в 15:53
0
Да, это решение, когда запарковаться нельзя.
26.08.16 в 20:55
1
При всём обилии решений, статья пригодится новичкам 100%. Я подобное методом тыка проходил, даже не подозревая, что "кто то делает это" ))
В симплифае разве что чуть удобней старт/стоп делать, чем в репетире (куру не знаю).
16.10.16 в 21:56
2
Опять я копался в G-коде и наткнулся на интересную команду M928 - она позволяет писать лог на SD-карту.
Например в стартовом коде можно написать
....
M28 full_name_log_file_in_DOS8.3 ; открыть файл для записи (в Вики этого нет, но я думаю команда необходима для M928 )
M928 full_name_log_file_in_DOS8.3 ; Начать запись лога в файл
....
А в финале дать команду
...
M29 ; остановка записи на флешку

https://github.com/MarlinFirmware/Marlin/wiki/M928
16.10.16 в 23:05
0
Интересно. Надо копнуть, что это вообще и как.
27.06.17 в 04:03
0
Помогло... 8)
30.09.17 в 10:24
0
Большое спасибо за статью.:) Как правило для сторонних заказов приходиться перепечатывать модель, а когда столкнулся с проблемой заедания нити, то помогло ручное редактирования кода для продолжения печати.
16.12.18 в 01:25
0
Спасибо! Только что обрезал часть программы, подредактировал немного, сохранил под другим именем, кинул на флешку и все ОК!!!
Единственное - на всякий случай поставил 40% скорости печати, чтоб лучше спаялись слои.

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

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

Студенты из КНР изучают 3D-моделирование и 3D-печать летающих дронов в МАИ

Covestro нарастит производство фотополимеров для 3D-принтеров Carbon

Чиним Nikon Coolpix L610 (не фиксируется крышка батарейного отсека)

Американские военные захотели самый большой 3D-принтер «по металлу»

3D принтер для бизнеса CreatBot DX от 3Dtool. Обзор.

Медицинские 3D-принтеры металлом Concept Laser кардинально меняют реконструктивную хирургию