вторник, 12 ноября 2013 г.

Контроллер принтера своими руками. Немного истории.

     У всех начинающих принтеростроителей возникает резонный вопрос на тему самостоятельного изготовления всей электроники. Зачем покупать готовые контроллеры, если схемы все открытые, детали продаются, за плечами богатый опыт паяния и т.д. У каждого второго это подкреплено классической нехваткой денег и желанием сэкономить на всем. Собственно, я тоже начинал не с магазинных контроллеров, а с самодельного колхозного варианта. Вот он, мой самый первый контроллер 3D принтера, собранный на коленке:

 

     Вернее, не полностью контроллер, а только мозговая его часть. Здесь еще не хватает драйверов шаговых двигателей, силовой электроники и еще пары мелочей (они были собраны также навесом на отдельной плате). Собран он на базе микроконтроллера ATMega644-20PU. В качестве переходника COM -> USB микросхема FT232BM от FTDI (прилеплена сбоку). Все это обильно полито канифолью и обмотано жгутом мгтф-провода. Кстати, совет всем начинающим разработчикам - обязательно отмывайте ацетоном канифоль с плат! Иначе замучаетесь искать причину глюков или полной неработоспособности устройства.
     В контроллер была залита прошивка-загрузчик (bootloader), которая превратила это беспорядочное месиво проводов в ATMega644Arduino - контроллер.
     Среда программирования Arduino после долгих манипуляций приняла-таки самодельный контроллер за своего (он определился как Sanguino) и позволила залить в него нужный мне софт. Прошивку брал от оригинального RepRap'а (другое туда не лезло из-за объема встроенной Flash-памяти в 64 Кб).
   
     Вот схема этого чуда:


     Если возникнет желание это дело спаять, то посоветую использовать вместо ATMega644 более мощный контроллер ATMega1284p. Он точно такой же по корпусу и назначению выводов, но имеет 128 Кб Flash-памяти на борту, а это позволит залить в него нормальную Marlin-скую прошивку со всеми бантиками. В качестве бантиков мы будем подключать экраны, sd-карты, энкодеры и т.д.

     После сборки устройства в него необходимо залить bootloader (загрузчик) любым удобным способом.

     Идем по ссылке: http://code.google.com/p/sanguino/downloads/list и качаем самый свежий дистрибутив заголовочных файлов, содержащих, в том числе, и нужные нам загрузчики. Извлекаем архив и открываем \sanguino\bootloaders\atmega. Загрузчик для ATMega644p называется ATmegaBOOT_168_atmega644p.hex, а для ATMega1284p - соответственно: ATmegaBOOT_168_atmega1284p.hex.

     Если все было собрано правильно, то устройство при подключении к компьютеру должно попросить драйвера для установки. Их можно скачать отдельно с сайта разработчика чипа: http://www.ftdichip.com/FTDrivers.htm, либо сразу скачать среду программирования ардуино: http://arduino.ru/Arduino_environment (там они находятся в папке drivers\FTDI USB Drivers). Для того, чтобы наш самопальный контроллер стал доступным для программирования из-под ардуины, надо в нее скопировать заголовочные файлы для Sanguino.

     Вопросы задавайте в комментариях.



p.s. Чтобы не возиться со всеми этими загрузчиками и прочими сложностями, а потратить время на более приятные занятия - оочень советую купить готовый контроллер, например, Arduino Mega 2560 R3 и сразу приступить к его программированию.
   
   
   
   

понедельник, 11 ноября 2013 г.

Контроллер 3D принтера. Что такое Arduino.

     Пожалуй пора начинать говорить про такую большую и, на первый взгляд, сложную тему как управляющая электроника. Можно бесконечно долго обсуждать конструкции / варианты изготовления тех или иных узлов экструдера, но без того, чтобы это дело включить и проверить работоспособность, вроде даже не особо интересно, поэтому начнем...
     Итак, что же такое Arduino и как оно вообще относится к нашей теме.
Цитата с сайта Arduino.ru:

"Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов."

     Платформа пользуется бешеной популярностью среди западных разработчиков, поэтому и была выбрана в качестве управляющей электроники для самых первых (да и почти что всех последующих) принтеров.
     Состоит эта самая платформа из двух частей:

1. Аппаратная часть (красивая синяя плата с контроллером и вшитым в него загрузчиком);
2. Программная часть (открытое бесплатное ПО, позволяющее писать под эти самые платы на понятном языке С/С++).

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


     Все, что необходимо, под рукой - на панели кнопки для проверки кода, компиляции и загрузки в устройство (контроллер).

     Для того, чтобы начать все это дело осваивать, необходимо прикупить плату-контроллер. 

     Из всего многообразия ардуиновских плат нам подойдет только пара вариантов - либо на базе микроконтроллера ATMega1280 (Arduino Mega) либо на базе более мощного ATMega2560 (Arduino Mega 2560). Обусловлено это размером прошивки Marlin firmware, которую мы будем туда вливать. Кстати, прошивок (равно как и софта, который с этими прошивками работает) в сети гуляет достаточно много. Для желающих поиграться - добро пожаловать на сайт reprap.org. Там же описано и железо, под которое все эти прошивки заточены. Лично мне прошивка Marlin показалась лучшим решением, которая, в отличие от многих, умеет просматривать наперед отсылаемый ей g-code (об этом позже), благодаря чему не затыкается во время печати сложных моментов. К тому же данная прошивка понимает дуги (G02 G03) ака круговая интерполяция. Про это я тоже напишу позже, но суть в том, что другие контроллеры для печати окружностей / дуг требуют сотен команд линейной интерполяции, ибо рисуют только отрезками, а Marlin всего одной. Это офигенный плюс.
     К тому же в прошивке Marlin есть одна очень приятная штука - PID-регулирование температуры. Не вдаваясь в подробности - оно позволяет очень точно (при правильном подборе коэффициентов) регулировать температуру, что, само собой, положительно скажется на качестве печати.
     В данной прошивке еще много всяких интересных возможностей и особенностей, но о них как-нибудь потом.

     Еще один момент - для платы Arduino Mega (2560) разработан и уже повсюду (Ebay.com например) выпускается Ramps shield v1.4:


     Это готовое (либо в виде набора для самостоятельной сборки) дополнение к ардуине, которое превращает ее в полноценный контроллер 3D-принтера, этакий Plug-and-Play:


     В собранном виде получается этакий бутерброд: в основании Arduino Mega, в нее вставляется Ramps 1.4, а в рампс вставляются платы драйверов шаговых двигателей Pololu A4988 (их еще называют StepStick):


     Драйвера, хоть и маленькие, зато очень даже могучие! Позволяют подключать биполярные шаговые двигатели с током до 2А на обмотку (питание 8 - 35 V). При этом имеют режим микрошага до 1/16 (для плавного вращения). Единственное условие - наличие радиатора охлаждения, без которого допускается подключение двигателей с током до 1А на обмотку. 

     Кстати, в том же Китае уже стали продавать целые комплекты железа, которое я тут описываю (иногда даже с готовыми прошивками Marlin) по очень даже сносной цене. Они включают в себя и ардуину мега и рампс и даже драйвера Pololu в количестве 4-5 штук + комплект проводов:

http://www.ebay.com/itm/SainSmart-Mega2560-A4988-RAMPS-1-4-3D-Printer-KIT-For-Arduino-RepRap-/271253409360?pt=LH_DefaultDomain_0&hash=item3f27f68e50

          Комплект как на фото стоит чуть меньше 3000 руб (доставка бесплатная) - вполне демократично, учитывая что одна только Arduino Mega 2560 в России обойдется почти в такую же цену.

     Как покупать товар из Китая объяснять не буду - там нет ничего сложного, единственная сложность это регистрация в сервисе PayPal.com и привязка своей банковской карты. Позже, возможно, открою свой онлайн-магазин, где будет все, что я тут описываю (и готовые принтеры в том числе). 

     А пока расскажу еще про один замечательный контроллер под названием Teensylu, который, по-моему личному мнению, не получил достаточного распространения. В собранном виде этот контроллер выглядит примерно так:

     На фото не хватает только четырех драйверов Pololu A4988, которые вставляются в черные панельки и все! У вас в руках готовое решение для управления принтером. 
     Есть еще более компактное решение под названием Printrboard:
     Плата является "форком" Teensylu (т.е. произошла именно от нее), в которую авторы сразу впаяли драйвера шаговых двигателей (A4982) и добавили разъем под MicroSD карточку памяти (для печати без компьютера).
     НО! Такую плату я бы не советовал по одной простой причине - если сгорит один из драйверов А4982, то поменять его будет ооочень проблематично (как было у меня). Во первых, у этих микросхем очень мелкий шаг ног, без паяльной станции не обойтись, а во-вторых - найти их просто нереально в отличие от той же Pololu A4988, которая уже и в России продается (вот тут например). Так что решать вам.

     Посоветую все-таки начать с Arduino Mega 2560. У меня оно как-то сразу прижилось, закрутилось и завертелось, в отличие от той же Teensylu, с которой пришлось поиграться (эту историю я напишу как-нибудь в другой раз). Да и в голом виде (без шиелдов) этот контроллер можно использовать для очень многих целей (а не только для принтера).

     В самом простом варианте (ну или на начальном этапе) нам понадобится ардуина, драйвер Pololu (одного для экструдера хватит) и еще несколько дешевых деталей для включения нагревателя HotEnd'а и контролирования его температуры.
    
     До скорого...