RepRap-NRTC
Содержание
Как победить 3D-печать
Или история о том, как интересно провести 2 месяца жизни всего за 18 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 (тот который без расширений).
После запуска программы сделайте базовые настройки параметров подключения к принтеру. Самое главное здесь - устройство подключения, обычно /dev/ttyUSB0 и скорсть передачи данных, в прошивке выставлено 115200, здесь нужно указать эту же скорость!
Нажимайте кнопку "Подключиться", ждите 10 секунд, пока плата управления перезагрузится и можете на закладке Управление подвигать осями принтера! Все должно заработать как надо!
Установка слайсера
А вот слайсер установить так просто не получится. Как оказалось в библиотеках, использующихся для сборки слайсера из старый версий 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
А вот здесь начинается самое интересное!
Настройка slic3r для подготовки моделей для печати на RepRap Mender Pangu
Для правильной работы со слайсером Slic3r, для начала нужно указать каталог, где он установлен. Для этого в Repetier-Host в правой части экрана зайдите в закладку "Слайсер" и нажмите кнопку "Настроить".В появившемся окне нужно указать только каталог, где установлен Slic3r.
Пластик(и)
Когда у вас встает вопрос как мне настраивать слайсер, подогревать ли стол, какую температуру экструдера выставлять в настройках, сначала вам нужно определиться какой вид пластика у вас сейчас в руках.
Великолепный способ быстро определить тип пластика мне подсказал все тот же пользователь 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 в том, что стол вообще нагревать не нужно!!!
Благодаря этому для лучшего прилипания первого слоя пластика мы можем просто помазать стекло клеем-карандашом. Эффект очень хороший!
"Работа" с экструдером
Прочистка методом "холодной протяжки"
Дополнительные информационные ресурсы
- Отличная серия статей по настройке прошивки для принтерв RepRap http://null-b.blogspot.ru/2013/10/3d-reprap-5.html