D:\sideБлогЗлоключения с 3D-печатью

Пару лет назад я задумался о приобретении 3D-принтера. Совершенно не спеша и имея средства, я взвесил приоритеты. В небольшой квартире крупный принтер мне было негде разместить, поэтому большим фактором стала компактность. Мне не нужны были огромные размеры отпечатков и я совершенно не спешил. В характеристиках печати я разбирался лишь приблизительно. Покопавшись в самых разнообразных моделях принтеров на то время, я остановился было на M3D Micro. Но производитель как раз в это время собирал средства на более совершенную модель, M3D Pro. Ознакомившись с отличиями и посомневавшись о стоимости, я оформил предзаказ и на какое-то время о нём забыл.

И-и… в общем, оформление этого предзаказа было, наверное, худшим решением за всё то время, что я осваивал эту область.

Сразу уточню, хоть про оба моих принтера информации на просторах интернетов не так много, и обзор каждого из них был бы, вероятно, полезен, качество моих обзоров на 3D-принтеры было бы неприлично низким, посему я ограничусь описанием своего опыта работы с ними как пользователя-обывателя.

Коротко о технологии

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

Примерно так и работают самые распространённые в настоящее время 3D-принтеры: только вместо пасты они используют разнообразные пластики (в форме намотанного на катушку длинного круглого прутика заданного диаметра), которые разогреваются до температуры плавления и застывают после выдавливания в область печати (на платформу или ранее напечатанный пластик). А выдавливатель, или как его называют «экструдер», закреплён на управляемых двигателями осях. У этой технологии много названий: FDM, FFF, послойное наплавление…

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

Это не единственная существующая технология 3D-печати, но я бы сказал что единственная пригодная для использования в домашних условиях, с некоторыми оговорками. Другие технологии требуют либо дорогущего оборудования (несколько сотен тысяч рублей только на принтер), либо работы с токсичными жидкостями. Что не круто.

Так вот. О моих принтерах.

Американец

Полно историй о том, как компания, собрав деньги на краудфандинге, уплывала в закат ничего не выдав участникам сбора. Я поизучал факты вокруг M3D и сбора на их вторую модель принтера, M3D Pro. На первую, M3D Micro, они изначально собирали деньги точно так же, и она на тот момент уже была у конечных потребителей. И у изготовителя уже были довольно жёсткие планы касательно того, как будет выглядеть новый принтер и что именно они в нём улучшат. Что же касается первой модели… ну, её не ругают. Принтеры первой модели совсем маленькие, подогреваемой платформы не имеют, и им не нужны особенно толстые детали чтобы конструкция была надёжной. Во всяком случае, я думаю так сейчас. Тогда я об этом не задумывался. Я посмотрел обзоры и отзывы и в них не было ненависти.

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

Софтварь

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

Ухудшало процесс ещё и то, что M3D явно страдало синдромом изобретателя велосипедов, и вместо того чтобы использовать обычные отполированные до блеска системные компоненты UI, они реализовали собственные, «красивенькие», но категорически не поддерживающие тачскрин, плохо воспринимающие прокрутку, медленные и дёрганые. Пользоваться ими практически больно, но поскольку альтернатив не было, приходилось пользоваться этим. И да, у принтера нет собственных аппаратных элементов ввода-вывода для человека вообще, весь ввод-вывод происходит по USB-проводу от компьютера. Функция работы без компьютера номинально была, но она настолько урезала возможности, что в сочетании с общей нестабильностью принтера в ней не было совершенно никакого смысла. А настройки печати в этой программе отдельная западня, но я из неё перечислю всего один пункт: если в ней загрузить настройки по умолчанию, загораются предупреждения о том, что настройки выходят за рамки рекомендованных. Щито?

Но на программной части мои неприятности не закончились.

Хардварь

Эпизод I: прямота

Принтер удалось довести до кондиции, в которой он всё-таки начал выдавать твёрдые тела, похожие на загруженную модель, но обращал на себя внимание один интересный эффект, который я было принял за особенность модели. Я печатал кораблик, известный в сообществе как Benchy. И его боковая поверхность была немножко волнистой (волны с периодом около миллиметра; и нет, это не отдельные слои, коих в каждом миллиметре может быть 5-20), будто имитировала доски. Вообще эффект интересный, если бы не одна деталь: на исходной модели боковые поверхности абсолютно гладкие! Это стало особенно заметно, когда я попытался напечатать держатель для катушки с пластиком.

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

Ось Z (она же вертикальная, как правило соосная силе тяжести) выполнена из четырёх металлических стержней по углам каркаса принтера, на них нарезана резьба и на каждом присутствует эдакая «гаечка», на которых закреплены оставшиеся две оси (движения; три оси, если считать экструдер) и собственно сама печатающая головка. Все стержни сцеплены внизу общим передаточным ремнём и приводятся в действие одним-единственным двигателем.

Так вот оказалось, что не все эти стержни прямые. Зафиксировал я проблему на одном, но оказалось, что он такой не один. Приводил этот эффект к тому, что печатающая головка едва заметно смещалась при программном перемещении вдоль Z не только по факту вдоль Z, но и спиралью поперёк X и Y, что и приводило к волнам на модели. Восхитительно.

Производитель по гарантии отправил детали, но за доставку из США почтой мне пришлось платить самому. Вышло… довольно дорого. С тех пор при выборе принтера я обращаю внимание на доступность деталей.

И это не последняя неисправность.

Эпизод II: холод

После замены стержней принтер вроде протрезвел и начал печатать вполне сносно, но посреди печати очередного кораблика внезапно остановился с ошибкой «Heater failed» (отказ нагревателя). Ошибка эта противопожарная: возникает, когда программа по показаниям датчика температуры приходит к выводу, что нагрев не происходит, и выключает нагреватель, чтобы избежать перегрева и потенциального возгорания. Как я узнал позже, эта проверка отсутствует на большом количестве китайских принтеров, и в новостях есть истории о вполне реальных возгораниях принтеров, но об этом позже.

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

Но похоже, что в моём случае был неисправен термодатчик. Он даже при комнатной температуре нёс откровенный бред, заявляя иногда что у меня в комнате температура ниже нуля. Представитель на этом этапе заметил, что у некоторых действительно отказывали термодатчики на плате внутри принтера, которая отвечает за замер температуры «за бортом» (есть ещё датчик на нагревателе в печатающей головке, но дело было не в нём).

Так я оплатил ещё одну доставку, на сей раз печатной платы для принтера. Опять же, за саму плату денег с меня не взяли. Плату совместно с приятелем установили, и принтер действительно завёлся.

Но и это ещё не всё!

Эпизод III: разрыв

Этот эпизод очень короткий и совершенно не драматичный.

Детали, которые использовались в принтере, явно предназначались для масштабов первой модели, которая почти вдвое меньше по каждой из осей. Они были совсем тоненькие, что плохо отразилось уже на стержнях.

И произошёл ещё один отказ в близком месте: вышеупомянутый ремень, который сцеплял вместе стержни оси Z, разорвался. Найти такой же ремень в продаже где-то неподалёку, чтобы сэкономить на доставке от производителя, мне не удалось, поэтому пришлось заказывать всё там же.

Я совершенно не ожидал, что придётся так часто заказывать детали и конская стоимость доставки из Штатов меня уже начала порядком напрягать, как и явные промахи производителя.

Эпилог

Ремень мы установили, но с тех пор я даже не включал этот принтер. И судя по тому, что я вижу в каналах официального сообщества производителя, ситуация лучше не стала: инженеры, которые занималсь программной частью, ушли из компании, вынудив её в очередных моделях опереться на открытые программные проекты и в целом позиционировать свои продукты как «дружелюбные к движению open source» или около того.

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

Может быть из этого что-то и получится. Но уже к началу эпизода III я был поглощён совсем другим устройством. Перейдём к нему.

Китаец

Когда меня начали сильно напрягать «особенности» американского аппарата, среди печатников здорово нашумел Creality CR-10, примерно как сейчас у всех на слуху их же Ender 3. Мне CR-10, впрочем, показался слишком большим, и поизучав ассортимент компании, я решил взять модель поменьше, CR-8. Как выяснилось впоследствии, от CR-10 он отличается весьма существенно, хотя на момент покупки мне так и не показалось.

Историческая справка

По отзывам было видно, что производитель активно использует открытую прошивку для 3D-принтеров Marlin, но при этом отказывается публиковать исходный код точно той версии, которая используется в принтере, хотя GPL, по которой лицензирован Marlin, это запрещает. После некоторого скандала, который совпал по времени ещё и с крахом канала китайской ютуберши Naomi Wu, более известной в интернете как SexyCyborg (из песни слова не выкинешь)…

В общем, Наоми взялась представлять интересы сообщества перед Creality в Китае, видимо в том числе заручившись их финансовой поддержкой (которая ей потребовалась из-за скандала с Patreon) и похоже, что у неё получилось! Потому что они вскоре выпустили код внесённых изменений (вызвав в сообществе групповой фейспалм [закрытие лиц ладонями в знак разочарования], потому что изменения очень сомнительного качества), а следующий их принтер, если ничего не путаю, даже официально признали «Open Source Hardware». Это несказанно порадовало.

Что же он такое

О CR-10 легко найти килотонны информации. О CR-8 же несколько сложнее. Но представьте себе CR-10, у которого отсутствует правая «балка» оси Z и вся конструкция которого закреплена на управляющей коробке с электроникой. При визуальном сравнении складывается впечатление, что CR-8, не считая платформы, это половина CR-10. Конструкция экструдера идентичная. Но, на удивление, управляющая плата совершенно другая. И на этом, с одной стороны, я немножко обжёгся, но с другой стороны, это дало хороший повод вспомнить Си (который язык программирования). Об этом немножко дальше.

С ним приключений у меня было гораздо меньше, чем с «американцем». Механическая регулировка высоты платформы на винтах оказалсь куда как удобнее беспрестанного щёлкания по стрелочкам в софтине от M3D. И практически первый же отпечаток сразил меня наповал. Впрочем, после M3D чтобы сразить меня наповал, многого было не надо. Это, конечно, не нашумевший оригинал от Prusa, который измеряет и запоминает высоту платформе во множестве точек автоматически и потому после сборки готов к работе практически немедленно, но на регулировку времени ушло очень немного.

Стандартный рабочий процесс для этого принтера предполагает преобразование модели в формате STL на компьютере в набор инструкций для принтера в формате G-code, запись получившегося файла на SD-карту, вставку этой карты в принтер и печать с неё. То есть, принтер нет необходимости подключать к компьютеру, чтобы он печатал. Это удобно.

Необходимости нет, но возможность есть, в форме порта USB 2.0 Type B, распространённого на принтерах (не 3D, а обычных, для печати всяких закорючек на бумаге). Зачем? Например, чтобы подключить принтер к маленькому компьютеру, хоть малинке (т. е. Raspberry Pi), где установлен Octoprint и загружать на принтер модели посредством Wi-Fi. Или подключить к этому же компьютеру камеру и проинструктировать его делать снимки процесса печати на каждом слое. Не нужно ждать, пока производитель соизволит это сделать в своём ПО, а ведь он может и не сделать вовсе, и даже не потому что он вредный.

Приключения

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

Я попытался добиться от производителя исходников прошивки, чтобы обновить Marlin, потому что имевшаяся у меня версия заметно расходилась с советами по использованию, что я находил для принтеров на его базе. У меня возникло подозрение, что там просто очень старая версия. Я открыл репозиторий Marlin в надежде найти там конфигурацию под мой принтер, и своей модели не обнаружил. Ой-ой.

Заметив, что принтер очень похож на CR-10, я предположил, что и электроника в нём очень похожа, и внимательный читатель уже знает, что я ошибся в этом суждении. Впрочем, я и сам достаточно быстро об этом узнал, когда снял с принтера нижнюю крышку и увидел плату, не похожую ни на какую другую, которые мне попадались на глаза. Ключевым отличием было то, что драйверы шаговых двигателей (аппаратные драйверы, платы то бишь, а не программы) отделены от остальной платы.

Я поговорил с разными людьми в сообществах по 3D-печати, и один человек узнал в моей плате плату от Creality Ender-4, конфигурация к которой была! Победа! А… Не совсем, при подстановке этой конфигурации Marlin просто не скомпилировался. Не беда, я же когда-то изучал Си! И я начал погружаться в дебри процесса сборки Marlin, и обнаружил, что в списке материнских плат у них почему-то перечислены не все файлы. Я попытался это починить, назначив плате номер, который показался мне незанятым, после чего прошивка скомпилировалась и залилась. Победа! А… почему нагреватель головки не нагревается?

Вскоре пожаловал мэйнтейнер Marlin, Скотт Латейн, он же tinkyhead, который заметил что взятый мой номер уже занят. То есть, я залил в свой принтер прошивку для другой материнской платы. Отличная, блин, работа! Я легко отделался, потому что материнская плата, на которую я наткнулся, имела тот же самый контроллер, и единственным отличием был контакт нагревателя – он был на другой ноге контроллера. Скотт оперативно назначил этой плате другой (действительно незанятый) номер, и вообще привёл этот кусок репозитория в порядок, добавив остальные забытые платы. И с этим исправлением прошивка заработала нормально. Победа! А… Нет, в этот раз и впрямь победа!

Где-то между первым вскрытием принтера и успешной перепрошивкой в сообществе активно обсуждалась тема самовозгораний принтера, о защите от которых я упоминал ранее. И перед тем, как приступить к перепрошивке, я скачал из принтера оригинальную прошивку. Мало ли, может, у меня ничего не получится, и нужно будет возвращать то, что там было. И наслушавшись жутких историй о пожарах, я открыл бинарник прошивки и начал там искать строчки, которые должны выводиться на экран. И, с одной стороны к моему ужасу, с другой в полном соответствии с моими ожиданиями, сообщения об отказе нагревателя там не было. Что при условии, что производитель шёл по пути наименьшего сопротивления, означало то, что связанный код и константы были просто исключены из сборки специальным флагом-выключателем в препроцессоре Си. Причём выключены явно, по умолчанию эта опция включена! А ещё я выяснил, что версия прошивки в нём датируется январём 2016. Далеко не первая свежесть.

Обновлённая прошивка чувствовалась совершенно иначе.

Апгрейды

Собственно, для меня, после изучения ассортимента принтеров, возможность апгрейда стала большим аргументом в пользу китайских хотя бы и дешёвых и не очень качественных принтеров. Их можно доработать и даже переработать. Понятно, что не любой человек хочет за такое браться, но посколькуя брал принтер для развлечения, а не как «стабильный надёжный инструмент для изготовления деталей», для меня это плюс.

Зачем

В двух словах: для развлечения.

В трёх словах: я искал хобби.

В четырёх словах формулировать смысла не вижу, опишу детальнее. В процессе ремонта я освоил рисование чертежей мебели в 3D, я был практически готов к тому, чтобы рисовать детали самостоятельно. И у меня возникали ситуации, которые очень даже можно было решить, напечатав на принтере детальку даже из непрочного пластика.

К тому же, заманивала идея печати фигурок для настольных игр, чем, впрочем, я по сей день толком не занялся. У меня был когда-то здоровенный за́мок-конструктор для варгейма, модульность конструкции которого меня крайне впечатлила, но ассортимент деталей толком не позволял собрать ничего более интересного, чем замок, описанный в инструкции. И в голове до сих пор смутно витает идея разработать или найти/доработать детали для сборки собственных замков. Нет, я не играл в варгеймы, мне нравился именно процесс строительства и объём игрового поля. Для человека, который привык к настольным играм из бумаги и картона, в лучшем случае ламинированных, в которых самые объёмные компоненты это однообразные абстрактные фишки и кубики, это был разрыв шаблона.

На практике принтер пригодился преимущественно для мелких инженерых поделий в доме, но не только:

В заключение

Доволен ли я тратами?

Собственно, цель, ради которой принтер покупался, вторым аппаратом была всё-таки достигнута, и себя ещё не исчерпала – развлекательный потенциал принтера ещё не реализован даже на четверть из того, о чём я задумывался.