Содержание
Как победить 3D-печать
Или история о том, как интересно провести 2 месяца жизни всего за 13 500 р. :)
Статья об особенностях сборки, прошивки, подключения и запуска 3D-принтера на базе RepRap Mendel в Linux и не только. Но подходы и приёмы, описанные в этой статье, подойдут ко всем типам 3D-принтеров и операционным системам.
В данной статье мы постарались описать весь свой опыт и все решения, найденные в ходе упорной двухмесячной работы по запуску 3D-принтера в Нижегородской Радиотехническом Колледже (НРТК), в помещении хайтек-сообщества CADR.
История, или как это случилось
Вдохновение и апатия
В марте 2014-го года мы в Нижегородском Радиотехническом Колледже решились заказать из Китая для нас на то время совершенную новинку и пик технологий - 3D-принтер. Почему из Китая? Потому, что мы слышали, что там можно заказать принтер за приемлемую сумму денег.
Особую благодарность хотелось бы выразить администрации колледжа Пронину Геннадию Михайловичу и Кормщиковой Ирине Александровне за готовность пойти на достаточно рисковый шаг, и поддержку нашего предложения о заказе и покупке 3D-принтера.
Сразу хочу оговориться, что на то время мы совершенно ничего не представляли о 3D-печати, кроме видео в интернетах. Мы слышали о проекте RepRap, почитали информацию на сайте http://reprap.org/. Мы знали, что существует несколько разновидностей - моделей. И выбор принтера для покупки делали несколько не осознанно. Больше ориентируясь на цену и некую эфемерную единицу "качество печати".
Заказ мы сделали на сайте AliExpress и принтер пришел достаточно быстро, за две недели. Мы получили сам принтер и бобину с PLA-пластиком.
Пришло все в трёх коробках. Все было аккуратно упаковано. И мы приступили к сборке. Сборкой занимались сотрудники вычислительного центра Нижегородского Радиотехнического Колледжа. Виктор Бондаренко сделал аккуратную и качественную сборку каркаса принтера. Электроникой занимались Владимир Слугин и Никита Блынский. И вот, через два дня, у нас был полностью готовый к подключению к компьютеру 3D-принтер.
По поводу особенностей сборки -- сейчас уже сложно что то вспомнить. Но в интернете можно найти много инструкций, и на диске, идущем с принтером, были подробные инструкции по соединению элементов. За что стоит особенно отметить китайцев, в комплекте было всё в нужном количестве! Это было очень приятно и важно для нас - впервые собирающих 3D-принтер!
Вообще стоит сказать, что сборка -- достаточно утомительный процесс. Пока вы собираете крупные детали -- всё идет быстро и просто, а вот когда дело доходит до мелочей, крепления шаговых двигателей, размещения блока питания и пр, всё становится не очевидно и утомительно. Лучше всего заниматься сборкой 3D-принтера в команде! Это позволит меньше "париться" и избежать ошибок.
После сборки мы приступили к подключению. Мы в НРТК широко используем свободное ПО, и первое что мы попробовали - подключить принтер к Ubuntu 12.10. После консультаций с Борисом Терещенковым мы уже знали, что для управления принтером нужно использовать Repetier. Но у нас на принтере не было прошивки.
На диске мы нашли архив с прошивкой под названием Melzi-Sprinter. На тот момент мы уже знали, по информации с сайта reprap.org, что на плате принтера используется стандартный микроконтроллер Atmega, но не знали, какая именно. Если посмотреть на чип поближе, то можно рассмотреть маркировку Atmega 1284p. И вся плата построена по принципу плат Arduino, которые у нас в колледже используются на практиках у студентов достаточно давно. Поэтому было понятно, что для прошивки нам потребуется среда разработки Arduino с сайта http://arduino.cc/en/Main/Software .
Мы все скачали, установили, распаковали прошивку, открыли в среде файл .ino
. Мы даже вычитали, что нужно установить специальный набор файлов для прошивки конкретно этого микроконтроллера (об этом подробнее в разделе о прошивке). Но вот незадача, при попытке компиляции прошивки среда выдавала ошибку, отсутствия библиотеки time.h.
С Никитой Блынским мы смогли избавиться от этой ошибки, отключив опции работы с SD-картами и некоторые другие функции, для которых нужна была эта отсутствующая библиотека, и получили рабочую прошивку Sprinter-Melzi!
Мы успешно прошили принтер и установили Repetier на компьютер с Ubuntu 12.10. Нажали кнопку "Подключить", и процесс соединения с принтером прошёл успешно. Мы, с замиранием сердца, в ручном режиме поуправляли движением экструдера по осям. И это для нас было равносильно магии! Мы увидели, что принтер "шевелиться" и работает!!!
У нас включался разогрев экструдера, разогрев стола, и управлялась скорость вращения вентилятора. Это было просто замечательно!
Мы решили опробовать принтер в деле. Взяли среду 3D-моделирования Blender и нарисовали незамысловатую модель. По внешнему виду модель напоминала логотип игры Quake :)) Среда Repetier принимает модели в формате stl, а Blender умеет прекрасно в него экспортировать! Чем мы и воспользовались!
Загрузили модель в формате stl в Repetier, выполнили слайсинг с помощью программы slic3r (она идет в комплекте, вместе с Repetier) и попытались выполнить печать. И вот тут нас ждала первая и большая проблема. Принтер перемещал экструдер в начальные позиции по всем осям, и на этом останавливался. Прогрев экструдера и стола проходил успешно, но процесс печати не начинался. При этом в окне с командами и ответами принтера в Repetier появлялась ошибка "Error: Checksum mismatch, Last Line: 19". И это происходило каждый раз!
Было решено попробовать установить софт на Windows и попробовать печать оттуда. Мы получали туже ошибку в Repetier, но печать шла, и мы получили какие-то результаты.
Но здесь у нас обнаружилась вторая проблема: на высоте около 5 сантиметров экструдер начинал мазать по детали, и, в конце-концов, сорвал её со стола!
Мы смогли напечатать ещё несколько небольших деталей, но у нас начала появляться проблема с "забитием" экструдера. В начале печати нить из экструдера выходила хорошо, но после нескольких минут печати нить просто переставала выходить, и экструдер дальше двигался в холостую. Иногда помогало поддавить нить сверху, иногда -- нет. В какой-то момент мы решились разобрать экструдер. Отключили от него Hot-end часть и разобрали его (для этого достаточно открутить гайку сверху). В нем находится ptfe трубка и как нам тогда казалось забивалась именно она. Мы ее прочищали и вроде бы пластик снова шёл. Но проблема из раза в раз возвращалась :(
Чуть подробнее все это описано на Блоге вычислительного центра Нижегородского Радиотехнического Колледжа.
Вот здесь у нас наступил этап "перенасыщения" проблемами с 3D-печатью, навалилась очередная порция работы, и мы отложили принтер в сторону -- почти что год!
Второе дыхание
Вторым дыханием для нашего проекта по запуску 3D-принтера в Нижегородском радиотехническом колледжа стало создание по инициативе Артема Попцова и поддержке администрации колледжа CADR Space - помещения и сообщества людей по аналогии с HackSpace в европе.
У нас появилось новое место, новая идея и новое вдохновение вернуться к старому проекту с принтером. Не может же Нижегородский Hackspace жить без 3D-принтера!
И вот следующие два месяца, с начала февраля 2015 до середины марта 2015, стали самыми продуктивными и богатыми на знания и информацию о 3D-печати для нас! 18 марта 2015 года восхищенно крикнули "ДА, ОНО РАБОТАЕТ", когда у нас детали стали печататься надежно и точно.
Но до этого мы:
- Выяснили что ошибка "Error: Checksum mismatch, Last Line: 19" возникает только в последних версиях Repetier и для корректной работы RepRap Mendel Pangu в Ubuntu 14.04 вам нужно использовать Repetie-Host 0.90D либо 0.84.
- Столкнулись с не включающимся подогревом стола и некорректным отображением его температуры в прошивке Marlin. С этой проблемой нам помог справиться пользователь ysb с форума soliforum. Он сделал модификацию Marlin именно для Mendel Pangu!
- Мы обнаружили что с модифицированной ysb прошивкой Marlin все работает замечательно, но при начале печати происходит перекос осей Z. Один из двигателей перестает вращаться! В ходе личной переписки с ysb выяснилось что такое происходит за за слишком высокой скорости перемещения по оси Z и при последовательном подключении z-двигателей эту проблему можно поправить в коде прошивки ( #define HOMING_FEEDRATE {50*60, 50*60, 2*60, 0} //chahge 3*60 to 2*60 ). Подробнее о всех изменениях в прошивке Marlin для Mendel Pangu в соответствующем разделе.
- Ну и в конце было практически полное забитие экструдера. Мы даже попытались топить пластик вынув ptfe трубку (что было большой ошибкой!), после чего нам пришлось долго, методом "нагрева самореза" прочищать хот-энд что бы вернуть трубку на место (пластик поднялся и все забил, застыв при этом). Оказалось что нужно тонкой проволкой прочистить само нижнее отверстие диаметром 0,3мм. Засор был в нем. И что бы в дальнейшем засоров не появлялось нужно прочистить экструдер методом "холодной протяжки" описанной по ссылке и в соответствующем разделе. Мы просто вручную пропускали/топили нить через хот-энд, постепенно опуская температуру до минимальной, при которой пластик еще протягивается через хот-энд. С нашим PLA мы начали с 200 С и дошли до 135 С, когда струна уже практически не топилась.
- Так же в ходе экспериментов мы выяснили что в наших условиях для печати нам лучше всего подходит PLA-пластик:
- Для него нужна более низкая температура экструдера (в нашем случае 200 С в настройках Repetier).
- Для него не нужно греть стол, что позволяет нам мазать его клеем-карандашом для лучшего прилипания первого слоя
- Его нужно обдувать вентилятором во время печати, что избавляет нам от необходимости защиты принтера от сквозняка :)
И в ходе всех этих испытаний нам приходилось сохранять самообладание и хладнокровие, дабы не в пасть в стадию годовалой давности :)
Ну а теперь факты только факты и ничего кроме фактов и все по порядку!
Что нужно сделать в начале
Прежде чем приступать к поиску прошивки для вашего принтера нужно точно узнать что у вас за модель принтера.
Мы покупали принтер на aliexpress и честно считали что мы купили RepRap Mendel. Потом мы стали выяснять что у нас за плата на принтере и как видно на фото, у нас написано на ней Melzi Ardentissimo и мы тут подумали что у нас RepRap Mendel Prusa и честно пытались его прошить как Prusa.
Но за тем нашлась старая прошивка, которую мы взяли с диска, который шел с принтером, и в ней в самом начале файла Configuration.h увидел строчку #define RP3D.COM_PANGU и тут у нас появились мысли, может у нас что то не совсем Prusa. Как оказалось компания RP3D.COM производить RepRap Mendel, но для возможности использовать шаговые двигатели различного типа слегка изменила схему платы управления. И эта модификация называется RepRap Mendel Pangu. Вот для него то и нужна была прошивка.
Как только мы выяснили точную модель нашего принтера и платы все пошло гораздо быстрее и определеннее!
Прошивка
Надеемся вы прочитали пару предыдущих абзацев!
Установка Arduino
Для прошивки платы управления принтером вам понадобиться скачать вреду разработки Arduino с сайта http://arduino.cc/en/Main/Software
Если вы работаете в Ubuntu 14.04 или старше - доcтаточно установить среду разработки из репзитория командой apt-get install arduino
Выбираем прошивку, подходящую для вашего принтера
Саму прошивку вам нужно будет поискать в интернете. Для большинства RepRap-принтеров рекомендуют использовать прошивку Marlin. Она является комбинацией кодов прошивок Sprinter и sbpf? какой то еще версии прошивок.
Официальную прошивку для RepRap Menderl Pangu можно скачать в самом низу этой страницы http://rp3d.com/wiki/index.php?title=Pangu_i3
На диске, с которым шел принтер, была та-же самая прошивка. Но она у нас просто так не собралась и нам пришлось отключить опцию поддержки SD-карта и еще некоторые опции, после чего прошивка стала компилироваться корректно. Скачать модифицированную версию прошивки Sprinter для RepRap Mendel Pangu можно здесь.
Но, мы посчитали что раз есть новая версия прошивки - Marlin, нужно бы установить ее. К тому же на сайте RepRap обещают просто заоблачные возможности и улучшения в Marlin по сравнению со Sprinter.
- Marlin можно скачать с официального репозитория с github, но у нас с официальной версией не заработал подогрев стола! В RepRap Mendel Pangu есть некоторые изменения в плате.
- Есть еще несколько модификаций прошивки Marlin с расширенной поддержкой плат управления, например Marlin от ErikZalm и Marlin 2014 для RepRap Prusai3. Но нам они то же не помогли с не включающимся подогревом стола.
- В итоге нам очень помог пользователь ysb с форума soliforum. Прошивка Marlin от ysb заработала как нужно, но мы испытали проблема - перекос осей Z при начале печати. Как это происходило, можно посмотреть на данном видео https://youtu.be/W2xjoesSssY?t=78 . И это происходило только при начале печати, при ручном управлении все работало гладко без шума и пыли.
Оказалось, что проблема с перекосом по оси Z с прошивкой Marlin связанна с последовательным (Serial) подключением двигателей, и слишком большой скоростью перемещения по оси Z во время поиска нулевой позиции. Это удалось исправить изменением параметра
#define HOMING_FEEDRATE {50*60, 50*60, 2*60, 0} // set the homing speeds (mm/min){50*60, 50*60, 4*60, 0} !!!changed from 3*60 to 2*60
В дополнении к этому, мы еще поменяли "поправки", связывающие количество "шагов" шагового двигателя и реальное перемещение экструдлера (и нити) по соответствующей оси. Эти параметры меняются в зависимости от выбранного типа шестеренки, резиновой ленты либо диаметра шестеренки на двигателе подачи струны в экструдер. Калибровка принтера производится изменением именно этих параметров! (рекомендую почитать эту статью по калибровке принтера)
#define DEFAULT_AXIS_STEPS_PER_UNIT {85.3333, 85.3333,2560,158.8308}; //Got from sprinter.!!! original is {80, 80,3200,158.8308};
Так же при экспериментах с ABS пластиком выяснилось что экструдер у нас не достигает нужной температуры, но при попытки выставить температуру выше 240 С, у нас начинались сильные скачки температуры вплоть до 300 С и экструдер отключался по защите в прошивки. Пришлось расширить диапазон температур по защите до 280 С. Но в итоге оказалось что с PLA пластиком температур нам вполне хватает и этот параметр оказался не востребованным. (видео с тестом температур http://www.youtube.com/watch?v=JwLsAoe7yio и видео с тестом повышения температуры http://youtu.be/7Tzm16wOHSs )
#define HEATER_0_MAXTEMP 380 //edited from 270 (не рекомендум :)
Финальную версию прошивки Marlin для RepRap Mendel Pangu с модификациями от YSB и Нижегородского Радиотехнического Колледжа можно скачать у нас на сайте
http://wiki.nntc.nnov.ru/index.php/%D0%A4%D0%B0%D0%B9%D0%BB:MARLIN_2014-02-9_Pangu_i3-CADR.zip
Распаковываем и открывает файл-проекта прошивки в Arduino
Здесь все просто- Открывает среду разработки Arduino
- Меню Файл -> Открыть
- В появившемся файл-менеджере идем в каталог с распакованной прошивкой и выбираем там файл Marlin.ino
- Появляется новое окно среды Arduino, где каждый файл проекта открыть в отдельной закладке. Щелкаете по закладкам и видите нужный файл.
- Главный файл, на который нужно обратить внимание - это Configuration.h
Подключаем плату управления для прошивки
Подключаем плату к компьютеру USB-кабелем. В Linux у вас должно появиться устройство /dev/ttyUSB0. Появилось ли оно, можно узнать командой ls /dev/ttyUSB*, а лучше всего, после подключения платы к компьютеру ввести команду dmesg и посмотреть информацию от ядра Linux о том, как оно отреагировало на подключения этого устройства.
Теперь запускаем среду arduino, в меню Сервис -> Последовательный порт выбираем порт подключения устройства, обычно это /dev/ttyUSB0, а в меню Сервис -> Плата выбираем тип микроконтроллера и платы. В зависимости от типа платы, используются различные коды загрузчика, для прошивки на микроконтроллер. В нашем случае в стандартной поставке Arduino поддержки микроконтроллера Atmega 1284p не оказалось. Для возможности прошивки платы нам понадобилось:- Скачать архив с модифицированным Marlin с сайта по данной ссылке https://www.dropbox.com/s/0ke7myxojt4i6ct/Arduinov101.rar либо только нужные файлы с нашего сайта архив с каталогами поддержки Melzi и микроконтроллера Atmega 1284p для среды Arduino
- Из полученного архива нам понадобилось только два каталога Sanguino и Melzi, в которых находятся описания и бинарниками загрузчика для нашего типа платы и микроконтроллера. Для добавления их поддержки в среду разработки Arduino достаточно скопировать эти два каталога в /usr/share/arduino/hardware. В данном каталоге уже есть каталоги arduino и tools, рядом с ними должны появиться каталоги Melzi и Sanguino
sudo cp -r Melzi /usr/share/arduino/hardware/ sudo cp -r Sanguino /usr/share/arduino/hardware/
- Теперь в среде Arduino у вас должна появиться поддержка микроконтроллера Atmega 1284p
Программное Обеспечение для печати
Для работы с 3D-принтерами существуют различные программы управления. Например: reprap, Repetier-host, prontinterface. Это только те, о которых мы слышали.
Кроме программы работы с принтером, которая по сути дает вам возможность только двигать осями и включать-выключать нагрев экструдера и стола, вам понадобится программа для анализа 3D-модели и "разрезания" модели по слоям. Этот тип программ так и называется Слайсеры (анг. Slice - нарезать кусочками). В нашем случае будет использоваться слайсер Slic3r.
Программа управления принтером
Сразу оговорюсь что анализом программ управления и выбором мы не занимались. Около года назад мы попросили совета у Бориса Терещенкова, у которого на тот момент уже был 3D-принтер в личном пользовании, какое ПО лучше всего использовать. Его советом был Repetier-Host, мы его и "выбрали" для работы.
Сразу скажи, что первый опыт работы с Repetier-Host версии 0.95F показал что он печатает из Windows, а вот в Linux, работает все, только до момента начала печати. Как только в Ubuntu 12.10 с установленным Repetier-Host 0.95F мы начинали процесс печати - мы получали ошибку
"Error: Checksum mismatch, Last Line: 19"
После долгих и мучительных выяснений в чем проблема выяснилась одна простая вещь. В последней версии Repetier-Host видимо есть ошибка и при начале печати он слишком мало времени ждет ответа от принтера после перевода его в режим разогрева экструдера и стола.
Решением проблема стало использование более старой версии Repetier-Host. Эксперименты показали что в Ubuntu 14.04 прекрасно работают Repetier-Host 0.84 и Repetier-Host 0.90D.
Установка выполняется очень просто:
- Качаем архив с нужной версией программы отсюда: http://www.repetier.com/download/repetier-host-linux-0-90d/
- Распаковываем его
- Устанавливаем пакет mono-delev со всеми зависимостями
apt-get install mono-devel
- Заходим в каталог, куда распакован Repetier-Host и запускаем скрипт repetierhost (тот который без расширений).
Установка слайсера
А вот слайсер установить так просто не получится. Как оказалось в библиотеках, использующихся для сборки слайсера из старый версий RepetierHost есть ошибка. И все рекомендуют собирать новый слайсер с официального репозитория с GitHub - что и мы вам рекомендуем!
Для простоты - воспользуемся официальной статьей https://github.com/alexrj/Slic3r/wiki/Running-Slic3r-from-git-on-GNU-Linux
- Устанавливаем необходимые пакеты для сборки slic3r из исходников, а так же для его загрузки с github
sudo apt-get install git build-essential libgtk2.0-dev libwxgtk2.8-dev libwx-perl libmodule-build-perl libnet-dbus-perl libexpat1-dev sudo apt-get install cpanminus sudo apt-get install libxmu-dev freeglut3-dev libwxgtk-media2.8-dev
- Устанавливаем curl для получения параметров подключения к cpan репозиторию
sudo apt-get install curl curl -L http://cpanmin.us | sudo perl - --sudo App::cpanminus
- С помощью утилиты git получаем исходники slic3r в текущий каталог с официального репозитория и переходим в каталог с исходниками
git clone https://github.com/alexrj/Slic3r.git cd Slic3r
- Запускаем компиляцию с помощью perl
sudo perl Build.PL sudo perl Build.PL --gui
Теперь каталог slic3r можно скопировать в каталог с RepetierHost и поместить весь каталог RepetierHost с /opt/ что бы все пользователи системы могли им пользоваться! (ну либо никуда ничего не перемещать и просто запускать из известного вам места).
Настройка RepetierHost и Slic3r для работы с RepRap Mender Pangu
А вот здесь начинается самое интересное!
Пластик(и)
Когда у вас встает вопрос как мне настраивать слайсер, подогревать ли стол, какую температуру экструдера выставлять в настройках, сначала вам нужно определиться какой вид пластика у вас сейчас в руках.
Великолепный способ быстро определить тип пластика мне подсказал все тот же пользователь ysb с форума soliforum. Вам нужно просто поджечь кусочек вашего пластика и посмотреть как он горит!
Мы определили тип пластика и теперь можно выяснять как настраивать слайсер на подготовку gcoda для печати модели именно вашим типом пластика.
Режимы печати с ABS
Для ABS пластика потребуется более высокая температура хот-энде. По рекомендации ysb, я использовал 220 С для экструдера и 90 С для стола.Для ABS-пластика вам потребуется физически отключить вентилятор!
Так же, по словам ysb нагреватель и сам экструдер в Pangu рассчитан на температуру не выше 240 С, иначе есть шанс расплавить ptfe-трубку внутри. К тому же, по нашим тестам, если попробовать выставить температуру выше 240 С вы будете получать очень большие прыжки темературы, вплоть до 320 С, после чего нагрев экструдера будет выключен по защите в прошивке. Мы испытывали проблему, как мы считали, с недогревом пластика и для тестов, нам пришлось повысить этот барьер в коде прошивки до 380 С ( #define HEATER_0_MAXTEMP 380 ), что бы иметь возможность греть экструдер до 260 С, но это не решило проблем, поэтому не рекомендуем!
После некоторых экспериментов выяснилось что наш hot-end, а точнее термистор в нем не совсем точно показывает текущую температуру. Для проверки мы воспользовались мультиметром с подключенной термопарой. И у нас получились расхождения примерно в 30 С в меньшую сторону, т.е. если я на компьютере выставлял 220 С, то на мультиметре я видел всего 190.
Тут конечно сложно сказать кому верить, китайскому термистру в hot-end'е или китайской термопаре подключенной к китайскому мультиметру :) Но мне кажется что мультиметр ближе к истине (темболее что мы испытали его на кипящем чайнике с водой и он выдал нам 93...95 градусов С с термопарой помещенной в пакетик и опущенной в кипящую воду :)
Режимы печати с PLA
С PLA пластиком все гораздо проще! Температура ему нужна пониже. Ysb советует 190 С для hot-end'a, но мы помня о предыдущих тестах с мультиметром используем в настройках слайсера 200 С.А основная прелесть PLA в том, что стол вообще нагревать не нужно!!!
Благодаря этому для лучшего прилипания первого слоя пластика мы можем просто помазать стекло клеем-карандашом. Эффект очень хороший!