RepRap-NRTC

Материал из CADR
Версия от 16:12, 25 марта 2015; Gumanoed (обсуждение | вклад) (Выбираем прошивку, подходящую для вашего принтера)
Перейти к: навигация, поиск

Как победить 3D-печать

Или история о том, как интересно провести 2 месяца жизни всего за 13 500 р. :)

Статья об особенностях сборки, прошивки, подключения и запуска 3D-принтера на базе RepRap Mendel в Linux и не только. Но подходы и приёмы, описанные в этой статье, подойдут ко всем типам 3D-принтеров и операционным системам.

В данной статье мы постарались описать весь свой опыт и все решения, найденные в ходе упорной двухмесячной работы по запуску 3D-принтера в Нижегородской Радиотехническом Колледже (НРТК), в помещении хайтек-сообщества CADR.

История, или как это случилось

Вдохновение и апатия

В марте 2014-го года мы в Нижегородском Радиотехническом Колледже решились заказать из Китая для нас на то время совершенную новинку и пик технологий - 3D-принтер. Почему из Китая? Потому, что мы слышали, что там можно заказать принтер за приемлемую сумму денег.

Особую благодарность хотелось бы выразить администрации колледжа Пронину Геннадию Михайловичу и Кормщиковой Ирине Александровне за готовность пойти на достаточно рисковый шаг, и поддержку нашего предложения о заказе и покупке 3D-принтера.

Сразу хочу оговориться, что на то время мы совершенно ничего не представляли о 3D-печати, кроме видео в интернетах. Мы слышали о проекте RepRap, почитали информацию на сайте http://reprap.org/. Мы знали, что существует несколько разновидностей - моделей. И выбор принтера для покупки делали несколько не осознанно. Больше ориентируясь на цену и некую эфемерную единицу "качество печати".

Наш заказ принтера на aliexpress

Заказ мы сделали на сайте AliExpress и принтер пришел достаточно быстро, за две недели. Мы получили сам принтер и бобину с PLA-пластиком.

Посылка с принтером пришла к нам в трех коробках

Пришло все в трёх коробках. Все было аккуратно упаковано. И мы приступили к сборке. Сборкой занимались сотрудники вычислительного центра Нижегородского Радиотехнического Колледжа. Виктор Бондаренко сделал аккуратную и качественную сборку каркаса принтера. Электроникой занимались Владимир Слугин и Никита Блынский. И вот, через два дня, у нас был полностью готовый к подключению к компьютеру 3D-принтер.

По поводу особенностей сборки -- сейчас уже сложно что то вспомнить. Но в интернете можно найти много инструкций, и на диске, идущем с принтером, были подробные инструкции по соединению элементов. За что стоит особенно отметить китайцев, в комплекте было всё в нужном количестве! Это было очень приятно и важно для нас - впервые собирающих 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. Нажали кнопку "Подключить", и процесс соединения с принтером прошёл успешно. Мы, с замиранием сердца, в ручном режиме поуправляли движением экструдера по осям. И это для нас было равносильно магии! Мы увидели, что принтер "шевелиться" и работает!!!

Рисуем модель в Blender для пробной печати на нашем принтере в НРТК

У нас включался разогрев экструдера, разогрев стола, и управлялась скорость вращения вентилятора. Это было просто замечательно!

Мы решили опробовать принтер в деле. Взяли среду 3D-моделирования Blender и нарисовали незамысловатую модель. По внешнему виду модель напоминала логотип игры Quake :)) Среда Repetier принимает модели в формате stl, а Blender умеет прекрасно в него экспортировать! Чем мы и воспользовались!

Загружаем модель в Repetier и делаем слайсинг с помощью Slic3r

Загрузили модель в формате stl в Repetier, выполнили слайсинг с помощью программы slic3r (она идет в комплекте, вместе с Repetier) и попытались выполнить печать. И вот тут нас ждала первая и большая проблема. Принтер перемещал экструдер в начальные позиции по всем осям, и на этом останавливался. Прогрев экструдера и стола проходил успешно, но процесс печати не начинался. При этом в окне с командами и ответами принтера в Repetier появлялась ошибка "Error: Checksum mismatch, Last Line: 19". И это происходило каждый раз!

Печать детали на нашем принтере - проблема на высоте около 5 см, мажет по детали и срывает ее со стола :(

Было решено попробовать установить софт на 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).
    • Для него не нужно греть стол, что позволяет нам мазать его клеем-карандашом для лучшего прилипания первого слоя
    • Его нужно обдувать вентилятором во время печати, что избавляет нам от необходимости защиты принтера от сквозняка :)

И в ходе всех этих испытаний нам приходилось сохранять самообладание и хладнокровие, дабы не в пасть в стадию годовалой давности :)

Мы в CADR Space празднуем начало работы 3D-принтера!
Печать первой детали на принтере после долгого простоя
Качество детали на высоте
Печатаем на 3D-принтере визитницу с логотипом Нижегородского Радиотехнического Колледжа

Ну а теперь факты только факты и ничего кроме фактов и все по порядку!

Что нужно сделать в начале

Прежде чем приступать к поиску прошивки для вашего принтера нужно точно узнать что у вас за модель принтера.

Мы покупали принтер на 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 редакция от Нижегородского Радиотехнического Колледжа
Здесь все просто
  • Открывает среду разработки Arduino
  • Меню Файл -> Открыть
  • В появившемся файл-менеджере идем в каталог с распакованной прошивкой и выбираем там файл Marlin.ino
  • Появляется новое окно среды Arduino, где каждый файл проекта открыть в отдельной закладке. Щелкаете по закладкам и видите нужный файл.
  • Главный файл, на который нужно обратить внимание - это Configuration.h


Подключаем плату управления для прошивки

Подключаем плату к компьютеру USB-кабелем. В Linux у вас должно появиться устройство /dev/ttyUSB0. Появилось ли оно, можно узнать командой ls /dev/ttyUSB*, а лучше всего, после подключения платы к компьютеру ввести команду dmesg и посмотреть информацию от ядра Linux о том, как оно отреагировало на подключения этого устройства.

Выбираем название устройства и тип микроконтроллера для прошивки Arduentissimo Melzi на базе Atmega 1284p
Теперь запускаем среду 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
Плата управления Arduentissimo Melzi, с микроконтроллером Atmega 1284p. Обратите внимание на пин переключения платы в режим прошивки!
Что бы проверить тип микроконтроллера в вашем случае просто посмотрите на самый большой чип на плате и прочитайте на нем маркировку. В нашем случае это была 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.

Установка выполняется очень просто:

Слайсер

Пластик(и)

Когда у вас встает вопрос как мне настраивать слайсер, подогревать ли стол, какую температуру экструдера выставлять в настройках, сначала вам нужно определиться какой вид пластика у вас сейчас в руках.

Великолепный способ быстро определить тип пластика мне подсказал все тот же пользователь ysb с форума soliforum. Вам нужно просто поджечь кусочек вашего пластика и посмотреть как он горит!

Сжигаем ABS пластик и видим много дыма
Сжигаем PLA и дымы вообще нет, но пластик капает

Мы определили тип пластика и теперь можно выяснять как настраивать слайсер на подготовку gcoda для печати модели именно вашим типом пластика.

Режимы печати с ABS

скачки температуры при попытке выставить температуру экструдера выше 240 С
Для ABS пластика потребуется более высокая температура хот-энде. По рекомендации ysb, я использовал 220 С для экструдера и 90 С для стола.

Для ABS-пластика вам потребуется физически отключить вентилятор!


Так же, по словам ysb нагреватель и сам экструдер в Pangu рассчитан на температуру не выше 240 С, иначе есть шанс расплавить ptfe-трубку внутри. К тому же, по нашим тестам, если попробовать выставить температуру выше 240 С вы будете получать очень большие прыжки темературы, вплоть до 320 С, после чего нагрев экструдера будет выключен по защите в прошивке. Мы испытывали проблему, как мы считали, с недогревом пластика и для тестов, нам пришлось повысить этот барьер в коде прошивки до 380 С ( #define HEATER_0_MAXTEMP 380 ), что бы иметь возможность греть экструдер до 260 С, но это не решило проблем, поэтому не рекомендуем!

Проверяем соответствие данных о температуры со встроенного термистора и данных с термопары подключенной к мультиметру http://www.youtube.com/watch?v=JwLsAoe7yio
Это очень важно. ABS очень не любит сквозняков и перепада температуры. Мы думали, не сделать ли нам корпус вокруг принтера. Но, забегая вперед, оказалось что этого не требуется с pla.

После некоторых экспериментов выяснилось что наш hot-end, а точнее термистор в нем не совсем точно показывает текущую температуру. Для проверки мы воспользовались мультиметром с подключенной термопарой. И у нас получились расхождения примерно в 30 С в меньшую сторону, т.е. если я на компьютере выставлял 220 С, то на мультиметре я видел всего 190.

Тут конечно сложно сказать кому верить, китайскому термистру в hot-end'е или китайской термопаре подключенной к китайскому мультиметру :) Но мне кажется что мультиметр ближе к истине (темболее что мы испытали его на кипящем чайнике с водой и он выдал нам 93...95 градусов С с термопарой помещенной в пакетик и опущенной в кипящую воду :)

Режимы печати с PLA

Prepare-table-for-print.jpg
С PLA пластиком все гораздо проще! Температура ему нужна пониже. Ysb советует 190 С для hot-end'a, но мы помня о предыдущих тестах с мультиметром используем в настройках слайсера 200 С.

А основная прелесть PLA в том, что стол вообще нагревать не нужно!!!

Благодаря этому для лучшего прилипания первого слоя пластика мы можем просто помазать стекло клеем-карандашом. Эффект очень хороший!

"Работа" с экструдером

Прочистка методом "холодной протяжки