Мне периодически задают вопросы по «малинкам», «апельсинкам» и тому, куда это вообще и зачем. И тут я начинаю понимать, что перед тем, как писать «узкие» инструкции по настройке, неплохо было бы вкратце рассказать о том, как эта кухня вообще работает, снизу вверх и слева направо. Лучше поздно, чем никогда, поэтому вашему вниманию предлагается некое подобие ликбеза по ардуинам, рампсам и другим страшным словам.
Тому, что у нас сейчас есть возможность за разумные деньги купить или собрать собственный FDM 3D-принтер, мы обязаны движению RepRap. Не буду сейчас о его истории и идеологии — нам сейчас важно то, что именно в рамках RepRap сформировался определенный «джентльменский набор» железа и софта.
Чтобы не повторяться, скажу один раз: в рамках данного материала я рассматриваю только «обычные» FDM 3D принтеры, не уделяя внимания промышленным проприетарным монстрам, это совершенно отдельная вселенная со своими законами. Бытовые устройства с «собственными» железом и софтом тоже остануться за рамками этой статьи. Далее под «3D принтером» я понимаю полностью или частично открытое устройство, «уши» которого торчат из RepRap.
Часть первая — 8 бит хватит всем.
Поговорим про восьмибитные микроконтроллеры Atmel с архитектурой AVR, применительно к 3D-печати. Исторически сложилось так, что «мозг» большинства принтеров — это восьмибитный микроконтроллер от Atmel с архитектурой AVR, в частности, ATmega 2560. А в этом виноват другой монументальный проект^ его название — Arduino. Программная его составляющая в данном случае не интереса — Arduino-код более прост для понимания новичками (по сравнению с обычным C/С++), но работает медленно, а ресурсы жрет как бесплатные.
Поэтому, когда ардуинщики упираются в нехватку производительности, они или бросают затею, или потихоньку превращаются в эмбеддеров («классических» разработчиков микроконтроллерных устройств). При этом, кстати, «железо» Arduino бросать совершенно не обязательно — оно (в виде китайских клонов) дешевое и удобное, просто начинает рассматриваться не как Arduino, а как микроконтроллер с минимальной необходимой обвязкой.
По факту, Arduino IDE используется как удобный в установке набор из компилятора и программатора, «языком» Arduino в прошивках и не пахнет.
Но я немного отвлекся. Задача микроконтроллера — выдавать управляющие воздействия (осуществлять так называемый «ногодрыг») в соответствии с получаемыми инструкциями и показаниями датчиков. Очень важный момент: данные маломощные микроконтроллеры обладают всеми типичными чертами компьютера — в маленьком чипе есть процессор, оперативная память, постоянная память (FLASH и EEPROM). Но если ПК работает под управлением операционной системы (и она уже «разруливает» взаимодействие железа и многочисленных программ), то на «меге» у нас крутится ровно одна программа, работающая с железом напрямую. Это принципиально.
Часто можно услышать вопрос, почему не делают контроллеры 3D-принтеров на основе микрокомпьютера вроде того же Raspberry Pi. Казалось бы, вычислительной мощности вагон, можно сразу сделать и веб-интерфейс, и кучу удобных плюшек… Но! Тут мы вторгаемся в страшную область систем реального времени.
Википедия дает следующее определение: «Система, которая должна реагировать на события во внешней по отношению к системе среде или воздействовать на среду в рамках требуемых временных ограничений». Если совсем на пальцах: когда программа работает «на железе» непосредственно, программист полностью контролирует процесс и может быть уверен, что заложенные действия произойдут в нужной последовательности, и что на десятом повторении между ними не вклинится какое-то другое. А когда мы имеем дело с операционной системой, то она решает, когда исполнять пользовательскую программу, а когда отвлечься на работу с сетевым адаптером или экраном. Повлиять на работу ОС, конечно, можно. Но предсказуемую работу с требуемой точностью можно получить не в Windows, и не в Debian Linux (на вариациях которой в основном работают микро-пк), а в так называемой ОСРВ (операционная система реального времени, RTOS), изначально разработанной (или доработанной) для данных задач. Применение RTOS в RepRap на сегодняшний день — жуткая экзотика. А вот если заглянуть к разработчикам станков с ЧПУ, там уже нормальное явление.
Для примера — плата не на AVR, а на 32-битном NXP LPC1768. Smoothieboard называется. Мощи — уйма, функций — тоже.
А дело все в том, что на данном этапе развития RepRap, «8 бит хватит всем». Да, 8 бит, 16 МГц, 256 килобайт флеш-памяти и 8 килобайт оперативной. Если не всем, то очень многим. А тем, кому недостаточно (это бывает, например, при работе с микрошагом 1/32 и с графическим дисплеем, а также с дельта-принтерами, у которых относительно сложная математика расчета перемещений), в качестве решения предлагаются более продвинутые микроконтроллеры. Другая архитектура, больше памяти, больше вычислительной мощности. И софт все равно в основном работает «на железе», хотя, некоторые заигрывания с RTOS маячат на горизонте.
Marlin и Mega: частота сигнала STEP
Прежде чем переходить ко второй части и начинать разговор об электронике RepRap. Я хочу попытаться разобраться с одним спорным моментом — потенциальных проблемах с микрошагом 1/32. Если теоретически прикинуть, то исходя из технических возможностей платформу её производительности не должно хватать для перемещения со скоростью выше 125 мм/с.
Для проверки этого продположения я построил «тестовый стенд», подключил логический анализатор, и стал экспериментировать. «Стенд» представляет собой классический бутерброд «Mega+RAMPS» с переделанным пятивольтовым питанием, установлен один драйвер DRV8825 (1/32). Двигатель и ток упоминать смысла нет — результаты полностью идентичны при «полном» подключении, при наличии драйвера и отсутствии двигателя, при отсутствии и драйвера и двигателя.
То есть, отталкиваясь от частоты прерываний в 10 КГц, мы получаем эффективную частоту до 40 КГц. Применив к этому немножко арифметики, получаем вот что:
до 62.5 мм/с — один шаг на прерывание;
до 125 мм/с — два шага на прерывание;
до 250 мм/с — четыре шага на прерывание.
Это теория. А что на практике? А если задать больше 250 мм/с? Ну, хорошо, даю G1 X1000 F20000 (333.3(3) мм/с) и анализирую полученное. Измеренная частота импульсов при этом составляет почти 40 КГц (250 мм/с). Логично.
На скорости выше 10000 мм/мин (166,6(6) мм/с) я стабильно получаю провалы в тактировании. На обоих движках синхронно (напомню, CoreXY). Длятся они 33 мс, находятся примерно за 0.1 с до начала снижения скорости. Иногда такой же провал есть в начале движения — через 0.1 после завершения набора скорости. Вообще, есть подозрение, что он устойчиво пропадает на скорости до 125 мм/с — то есть, когда не применяются 4 шага на прерывание, но это только подозрение.
Как интерпретировать этот результат — я не знаю. С какими-то внешними воздействиями она не коррелирует — с общением по последовательному порту не совпадает, прошивка собрана без поддержки всяких дисплеев и SD-карт.
Мысли
1. Если не пытаться что-то нашаманить с Marlin, потолок скорости (1.8″, 1/32, 20 зубов, GT2) — 250 мм/с.
2. На скоростях выше 125 мм/с (гипотетически) есть глюк с провалом тактирования. Где и как он будет проявляться в реальной работе — я предсказать не могу.
3. В более сложных условиях (когда процессор что-то усиленно считает) точно будет не лучше, а скорее — хуже. Насколько — вопрос для куда более монументального исследования, ведь придется сопоставлять запланированные программой перемещения с реально выданными (и захваченными) импульсами — на это у меня пороху не хватит.
Часть 2. Шаговый квартет.
Во второй части речь пойдет о том, как описанный ранее микроконтроллер управляет шаговыми двигателями.
Move it!
В «прямоугольных» принтерах нужно обеспечить перемещение по трем осям. Допустим, двигать печатающую головку по X и Z, а стол с моделью — по Y. Это, например, привычный, любимый китайскими продавцами и нашими покупателями Prusa i3. Или Mendel. Можно двигать голову только по X, а стол — по Y и Z. Это, например, Felix. Я практически сразу как вляпался в 3D-печать (с МС5, у которого XY-стол и Z-голова), так стал поклонником перемещения головы по X и Y, а стола — по Z. Это кинематика Ultimaker, H-Bot, CoreXY.
Короче, вариантов много. Давайте для простоты считать, что у нас три мотора, каждый из которых отвечает за движение чего-нибудь по одной из осей в пространстве, согласно декартовой системе координат. У «прюши» за вертикальное перемещение отвечают два двигателя, суть явления это не меняет. Итак, три мотора. Почему в заголовке квартет? Потому что надо еще пластик подавать.
В ногу
Традиционно используются шаговые двигатели. Их фишка — хитрая конструкция обмоток статора, в роторе используется постоянный магнит (то есть, контактов, касающихся ротора нет — ничего не стирается и не искрит). Шаговый двигатель, согласно своему названию, двигается дискретно. Наиболее распространенный в рамках RepRap образчик имеет типоразмер NEMA17 (по сути, регламентируется посадочное место — четыре крепежных отверстия и выступ с валом, плюс два габарита, длина может варьироваться), оснащен двумя обмотками (4 провода), а полный оборот его состоит из 200 шагов (1.8 градуса на шаг).
В простейшем случае, вращение шагового двигателя осуществляется путем последовательной активации обмоток. Под активацией понимается приложение к обмотке напряжения питания прямой или обратной полярности. При этом схема управления (драйвер) должна не только уметь коммутировать «плюс» и «минус», но и ограничивать потребляемый обмотками ток. Режим с коммутацией полного тока называется полношаговым, и у него есть весомый недостаток — на низких скоростях двигатель жутко дергается, на чуть более высоких — начинает греметь. В общем, ничего хорошего. Для увеличения плавности движения (точность не увеличивается, дискретность полных шагов никуда не пропадает!) применяется микрошаговый режим управления. Он заключается в том, что ограничение тока, подаваемого на обмотки, изменяется по синусоиде. То есть, на один реальный шаг приходится некоторое количество промежуточных состояний — микрошагов.
Для реализации микрошагового управления двигателями применяются специализированные микросхемы. В рамках RepRap их две — A4988 и DRV8825 (модули на основе этих микросхем обычно называются так же). Плюс, осторожно сюда начинают проникать хитроумные TMC2100. Драйверы шаговых двигателей традиционно выполняются в виде модулей с ножками, но бывают и напаяны на плату. Второй вариант с первого взгляда менее удобен (нет возможности изменить тип драйвера, да и при выходе оного из строя возникает внезапный геморрой), но плюсы тоже имеются — на продвинутых платах обычно реализуется программное управление током двигателей, а на многослойных платах с нормальной разводкой запаянные драйверы охлаждаются через «пузо» чипа на теплоотводный слой платы.
Но, опять же, говоря о самом распространенном варианте — микросхема драйвера на собственной печатной плате с ножками. На входе у нее три сигнала — STEP, DIR, ENABLE. Еще три вывода отвечают за конфигурацию микрошага. На них мы подаем или не подаем логическую единицу, устанавливая или снимая джамперы (перемычки). Логика микрошага прячется внутри чипа, нам туда влезать не надо. Можно запомнить только одно — ENABLE разрешает работу драйвера, DIR определяет направление вращения, а импульс, поданный на STEP, говорит драйверу о том, что необходимо сделать один микрошаг (в соответствии с заданной джамперами конфигурацией).
Основное отличие DRV8825 от A4988 — поддержка дробления шага 1/32. Есть другие тонкости, но для начала достаточно этого. Да, модули с этими чипами вставляются в колодки управляющей платы по-разному. Ну, так получилось с точки зрения оптимальной разводки плат модулей. А неопытные пользователи жгут.
В общем случае, чем выше значение дробления, тем плавнее и тише работают двигатели. Но при этом увеличивается нагрузка на «ногодрыг» — ведь выдавать STEP приходится чаще. О проблемах при работе на 1/16 лично мне не известно, а вот когда возникает желание полностью перейти на 1/32, уже может возникнуть нехватка производительности «меги». Особняком тут стоят TMC2100. Это драйверы, которые принимают сигнал STEP с частотой как для 1/16, а сами «додумывают» до 1/256. В результате имеем плавную бесшумную работу, но не без недостатков. Во-первых, модули на TMC2100 стоят дорого. Во-вторых, лично у меня (на самодельном CoreXY под названием Kubocore) с этими драйверами наблюдаются проблемы в виде пропуска шагов (соответственно, сбой позиционирования) при ускорениях выше 2000 — с DRV8825 такого нет.
Резюмируя в трех словах: на каждый драйвер нужно две ноги микроконтроллера, чтобы задать направление и выдавать импульс микрошага. Вход разрешения работы драйвера обычно общий на все оси — кнопка отключения двигателей в Repetier-Host как раз одна. Микрошаг — это хорошо с точки зрения плавности движений и борьбы с резонансами и вибрацией. Ограничение максимального тока двигателей надо настраивать с помощью подстроечных резисторов на модулях драйверов. При превышении тока мы получим чрезмерный нагрев драйверов и двигателей, при недостаточном токе будет пропуск шагов.
Спотыкач
В RepRap не предусмотрено обратной связи по положению. То есть, программа управляющего контроллера не знает, где в данный момент находятся подвижные части принтера. Странно, конечно. Но при прямой механике и нормальных настройках это работает. Принтер перед началом печати перемещает все, что можно, в начальную позицию, и от нее уже отталкивается во всех передвижениях. Так вот, противное явление пропуска шагов. Контроллер выдает драйверу импульсы, драйвер пытается провернуть ротор. Но при чрезмерной нагрузке (или недостаточном токе) происходит «отскок» — ротор начинает поворачиваться, а потом возвращается в исходное положение. Если это происходит на оси X или Y, мы получаем сдвиг слоя. На оси Z — принтер начинает «вмазывать» следующий слой в предыдущий, тоже ничего хорошего. Нередко пропуск происходит на экструдере (из-за забива сопла, чрезмерной подачи, недостаточной температуры, слишком малого расстояния до стола при начале печати), тогда мы имеем частично или полностью непропечатанные слои.
С тем, как проявляется пропуск шагов, все относительно понятно. Почему это происходит? Вот основные причины:
1. Слишком большая нагрузка. Например, перетянутый ремень. Или перекошенные направляющие. Или «убитые» подшипники.
2. Инерция. Чтобы быстро разогнать или затормозить тяжелый объект, нужно затратить больше усилий, чем при плавном изменении скорости. Поэтому сочетание больших ускорений с тяжелой кареткой (или столом) вполне может вызвать пропуск шагов при резком старте.
3. Неправильная настройка тока драйвера.
Последний пункт — вообще тема для отдельной статьи. Если вкратце — у каждого шагового двигателя есть такой параметр, как номинальный ток. Он для распространенных моторов находится в диапазоне 1.2 — 1.8 А. Так вот, при таком ограничении тока у вас должно все хорошо работать. Если нет — значит, двигатели перегружены. Если нет пропуска шагов с более низким ограничением — вообще прекрасно. При снижении тока относительно номинала уменьшается нагрев драйверов (а они могут перегреваться) и двигателей (больше 80 градусов не рекомендуется), плюс, снижается громкость «песни» шаговиков.
Часть 3. Горячка.
В первой части цикла я рассказывал о маленьких слабеньких 8-битных микроконтроллерах Atmel архитектуры AVR, конкретно — о Mega 2560, которая «рулит» большинством любительских 3D-принтеров. Вторая часть посвящена управлению шаговыми двигателями. Теперь — о нагревательных приборах.
Суть FDM (fused deposition modeling, торговая марка Stratasys, всем обычно до лампочки, но острожные люди придумали FFF — fused filament fabrication) в послойном наплавлении филамента. Наплавление происходит следующим образом: филамент должен расплавиться в определенной зоне хотэнда, и расплав, подталкиваемый твердой частью прутка, выдавливается через сопло. При движении печатающей головки происходит одновременное выдавливание филамента и приглаживание его к предыдущему слою концом сопла.
Казалось бы, все просто. Охлаждаем верхнюю часть трубки термобарьера, а нижнюю — нагреваем, и все хорошо. Но есть нюанс. Нужно с приличной точностью поддерживать температуру хотэнда, чтобы она гуляла лишь в небольших пределах. Иначе получим неприятный эффект — часть слоев печатается при более низкой температуре (филамент более вязкий), часть — при более высокой (более жидкий), а результат выглядит похожим на Z-вобблинг. И вот, у нас в полный рост встает вопрос стабилизации температуры нагревателя, обладающего очень маленькой инерцией — из-за малой теплоемкости любой внешний «чих» (сквозняк, вентилятор обдува, мало ли что еще) или ошибка регулирования моментально приводит к заметному изменению температур.
ПИД
Здесь мы вторгаемся в чертоги дисциплины под названием ТАУ (теория автоматического управления). Не совсем моя специальность (айтишник, но выпускающая кафедра АСУ), но курс такой у нас был, с преподавателем, который показывал слайды на проекторе и периодически над ними угорал с комментариями: «Ой, доверил этим студентам лекции в электронный вид переводить, они тут таких косяков налепили, ну, ничего, вы разберетесь». Ладно, лирические воспоминания в сторону, поприветствуем ПИД-регулятор.
Очень рекомендую ознакомиться со статьей, там довольно доступно написано про ПИД-регулирование. Если же совсем упростить, то выглядит картина так: у нас есть некоторое целевое значение температуры. И с определенной частотой мы получаем текущее значение температуры, и нам необходимо выдать управляющее воздействие, чтобы уменьшить ошибку — разницу между текущим и целевым значением. Управляющее воздействие в данном случае — ШИМ-сигнал на затвор полевого транзистора (мосфета) нагревателя. От 0 до 255 «попугаев», где 255 — максимальная мощность. Для тех, кто не знает, что такое ШИМ — простейшее описание явления.
Итак. Каждый «такт» работы с нагревателем нам необходимо принять решение о выдаче от 0 до 255. Да, мы можем просто включать или выключать нагреватель, не заморачиваясь ШИМ. Допустим, температура выше 210 градусов — не включаем. Ниже 200 — включаем. Только в случае с нагревателем хотэнда такой разброс нас не устроит, придется поднимать частоту «тактов» работы, а это дополнительные прерывания, работа АЦП тоже не бесплатная, а у нас крайне ограниченные вычислительные ресурсы. В общем, надо управлять точнее. Поэтому ПИД-регулирование. П — пропорциональное, И — интегральное, Д — дифференциальное. Пропорциональная составляющая отвечает за «прямую» реакцию на отклонение, интегральная — за на накопленную ошибку, дифференциальная в ответе за обработку скорости изменения ошибки.
Если еще проще — ПИД-регулятор выдает управляющее воздействие в зависимости от текущего отклонения, с учетом «истории» и скорости изменения отклонения. Нечасто я слышу о калибровке ПИД-регулятора «марлина», но функция такая имеется, в результате мы получаем три коэффициента (пропорциональный, интегральный, дифференциальный) позволяющие наиболее точно управлять именно нашим нагревателем, а не сферическим в вакууме. Желающие могут почитать про код M303.
Чтобы проиллюстрировать крайне низкую инерцию хотэнда, я на него просто дунул.
Ладно, это про хотэнд. Он есть у всех, если речь идет о FDM/FFF. Но некоторые любят погорячее, так возникает великий и ужасный, жгущий мосфеты и рампсы, нагревательный стол. С электронной точки зрения с ним все сложнее, чем с хотэндом — мощность относительно большая. А вот с позиций автоматического регулирования проще — система более инертная, да и допустимая амплитуда отклонения выше. Поэтому стол с целью экономии вычислительных ресурсов обычно управляется по принципу bang-bang («пыщь-пыщь»), этот подход я выше описывал. Пока температура не достигла максимума, греем на 100%. Потом пусть остывает до допустимого минимума, и снова греем. Также отмечу, что при подключении горячего стола через электромеханическое реле (а так нередко делают, чтобы «разгрузить» мосфет) только bang-bang является допустимым вариантом, ШИМить реле не надо.
Датчики
Напоследок — про терморезисторы и термопары. Терморезистор изменяет свое сопротивление в зависимости от температуры, характеризуется номинальным сопротивлением при 25 градусах и температурным коэффициентом. По факту, устройство нелинейное, и в том же «марлине» есть таблицы для пересчета полученных с терморезистора данных в температуру. Термопара — редкий гость в RepRap, но попадается. Принцип действия иной, термопара является источником ЭДС. Ну, то есть, выдает определенное напряжение, величина которого зависит от температуры. Напрямую к RAMPS и подобным платам не подключается, но активные адаптеры существуют. Что интересно, также в «марлине» предусмотрены таблицы для металлических (платиновых) термометров сопротивления. Не такая уж редкая вещь в промышленной автоматике, но встречается ли «живьем» в RepRap — мне не известно.
Часть 4. Единение.
3D-принтер, работающий по принципу FDM/FFF состоит, по сути, из трех частей: механики (передвижение чего-то в пространстве), нагревательных приборов и электроники, всем этим управляющей.
В общих чертах я уже рассказал, как каждая из этих частей работает, а теперь попробую порассуждать на тему «как это собирается в одно устройство». Важно: многое буду описывать с позиций кустаря-самодельщика, не оснащенного дерево- или металлообрабатывающими станками и оперирующего молотком, дрелью и ножовкой. И еще, чтобы не распыляться, в основном про «типовой» RepRap — один экструдер, область печати в районе 200х200 мм.
Наименее вариативное
Оригинальный E3D V6 и его очень недобрая цена.
Начну с нагревателей, тут популярных вариантов не очень много. Сегодня в среде самодельщиков наиболее распространен хотэнд E3D.
Точнее, его китайские клоны весьма плавающего качества. Про мучения с полировкой цельнометаллического барьера или использование трубки боудена «до сопла» не буду — это отдельная дисциплина. Из личного небольшого опыта — хороший металлический барьер прекрасно работает с ABS и PLA, без единого разрыва. Плохой металлический барьер нормально работает с ABS и отвратно (вплоть до «никак» — с PLA), и в таком случае бывает проще поставить столь же плохой термобарьер, но с тефлоновой вставкой.
В целом же, E3D очень удобны — можно поэкспериментировать как с термобарьерами, так и с нагревателями — доступны как «маленькие», так и Volcano (для толстых сопел и быстрой брутальной печати). Тоже условное деление, кстати. Сейчас использую Volcano с соплом 0.4. А некоторые изобретают втулку-проставку, и работают себе спокойно с короткими соплами от обычного E3D.
Программа минимум — покупаем типовой китайский комплект «E3D v6 + нагреватель + набор сопел + кулер». Ну и, рекомендую сразу пачку разных термобарьеров, чтобы когда дело дойдет до этого, не ждать очередной посылки.
Второй нагреватель — это не второй хотэнд (хотя тоже неплохо, но не будем погружаться), а стол. Можно причислить себя к рыцарям холодного стола, и вообще не поднимать вопрос нижнего подогрева — да, тогда сужается выбор филамента, придется немного подумать о надежной фиксации модели на столе, но зато вы никогда не узнаете про обугленные клеммы RAMPS, глубокие отношения с тонкими проводами и дефект печати типа «слоновья нога». Ладно, пусть нагреватель все-таки будет. Два популярных варианта — из фольгированного стеклотекстолита и алюминия.
Первый — простой, дешевый, но кривой и «жидкий», требует нормального крепления к жесткой конструкции и ровного стекла сверху. Второй
— по сути, та же печатная плата, только в качестве подложки — алюминий. Хорошая собственная жесткость, равномерный прогрев, но стоит дороже.
Неочевидный недостаток алюминиевого стола — это когда китаец плохо приляпывает к нему тонкие провода. На текстолитовом столе заменить провода просто, имея базовые навыки пайки. А вот припаять 2.5 квадрата к дорожкам алюминиевой платы — задача продвинутого уровня, с учетом отличной теплопроводности данного металла. Я использовал мощный паяльник (который с деревянной ручкой и жалом в палец), а в помощь ему пришлось призвать термовоздушную паяльную станцию.
Самое интересное
Самая вкусная часть — это выбор кинематики. Я в первом абзаце обтекаемо упомянул механику как средство «передвижения чего-то в пространстве». Вот, теперь как раз к тому, что и куда двигать. В общем и целом, нам надо получить три степени свободы. А двигать можно печатающую головку и стол с деталью, отсюда и все многообразие. Есть радикальные конструкции с неподвижным столом (дельта-принтеры), есть попытки воспользоваться схемами фрезерных станков (XY-стол и Z-головка), есть вообще извращения (полярные принтеры или позаимствованная из робототехники SCARA-механика). Про весь этот беспредел можно долго рассуждать. Так что, ограничусь двумя схемами.
«Прюша»
XZ-портал и Y-стол. Политкорректно назову эту схему «заслуженной». Все более-менее ясно, сто раз реализовано, допилено, модифицировано, на рельсы посажено, в габаритах смасштабировано.
Общая идея такова: есть буква «П», по ногам которой ездит перекладина, приводимая в движение двумя синхронизированными двигателями с помощью передачи «винт-гайка» (редкая модификация — с ремнями). На перекладине висит двигатель, который за ремень таскает влево-вправо каретку. Третья степень свободы — это движущийся вперед-назад стол. Плюсы конструкции есть, например, изученность вдоль и поперек или чрезвычайная простота в кустарной реализации из подручных материалов. Минусы тоже известны — проблема синхронизации двигателей Z, зависимость качества печати аж от двух шпилек, которые должны быть более-менее одинаковы, сложно разогнаться до высоких скоростей (поскольку двигается относительно тяжелый инертный стол).
Z-стол
При печати медленнее всего изменяется координата Z, да еще и только в одну сторону. Вот и будем двигать по вертикали стол. Теперь надо придумать, как перемещать в одной плоскости печатающую головку. Есть решение проблемы «в лоб» — по сути. берем портал «прюши», кладем его на бок, заменяем шпильки на ремень (и убираем лишний движок, заменяя его на передачу), поворачиваем на 90 градусов хотэнд, вуаля, получаем нечто вроде MakerBot Replicator (не последнего поколения).
Как еще улучшить эту схему? Надо добиться минимальной массы подвижных деталей. Если откажемся от директ-экструдера и будем подавать филамент по трубке, все равно остается двигатель X, который нужно зазря катать по направляющим. И вот тут включается настоящая инженерная смекалка. По-голландски она выглядит как куча валов и ремней в ящике под названием Ultimaker. Конструкция доведена до такого уровня, что многие считают Ultimaker лучшим настольным 3D-принтером.
Но есть более простые инженерные решения. Например, H-Bot. Два неподвижных мотора, один длинный ремень, горстка роликов. И это дело позволяет перемещать каретку в плоскости XY путем вращения двигателей в одну или в разные стороны. Красиво. На практике предъявляет повышенные требования к жесткости конструкции, что несколько усложняет изготовление из спичек и желудей, особенно при использовании деревянных подшипников.
Более сложная схема, с двумя ремнями и бОльшей кучкой роликов — CoreXY. Считаю лучшим вариантом для реализации, когда вы уже собрали свою или китайскую «прюшу», а творческий зуд не утих. Можно делать из фанеры, алюминиевого профиля, табуреток и других ненужных предметов мебели. По принципу действия результат похож на H-Bot, но меньше склонен к заклиниванию и скручиванию рамы в бараний рог.
Электроника
Если нужно сэкономить деньги — то Mega+RAMPS в китайском исполнении просто вне конкуренции. Если же нет особых познаний в электрике и электронике, а нервы не лишние, то лучше посмотреть в сторону более дорогих, но грамотно сделанных плат от Makerbase или Geeetech.
Основные болячки бутерброда в виде «не тех» выходных транзисторов и питания всего пятивольтового колхоза через стабилизатор на плате Arduino там вылечены. Если говорить о совсем альтернативных вариантах, то я жду, когда появится возможность приобрести плату на LPC1768, например, ту же MKS SBase, и поразвлекаться с 32-битным ARM и прошивкой Smoothieware. А параллельно — неторопливо изучаю прошивку Teacup применительно к Arduino Nano и Nanoheart.
Самодельщику
Ну, допустим, решили вы обязательно слепить свой велосипед. Не вижу в этом ничего плохого.
В общем-то, отталкиваться надо от финансовых возможностей и от того, что можно найти в гараже или подвале. А также от наличия или отсутствия доступа к станкам и радиуса кривизны рук. Грубо говоря, есть возможность потратить 5 тысяч рублей — хорошо, обходимся самым минимумом. За десятку уже можно немного разгуляться, а приближение бюджета к 20 тысячам изрядно развязывает руки. Конечно, сильно облегчает жизнь возможность купить китайский конструктор «прюши»— можно и разобраться в основах 3D-печати, и получить отличный инструмент для развития самопала.
Тем более, что большинство деталей (двигатели, электроника, часть механики) спокойно перекочует и в следующую конструкцию. Короче говоря, покупаем акриловое барахло, допиливаем до вменяемого состояния, печатаем детали для следующего принтера, пускаем предыдущий на запчасти, намылить, смыть, повторить.
Далее
На этом пожалуй всё. Возможно, получилось немного галопом. Но по-другому объять необъятное в рамках общего обзорного материала сложно. Хотя, полезных ссылок для размышления я накидал, ищущий по-любому обрящет. Вопросы и дополнения традиционно приветствуются. Ну и, да, в обозримом будущем будет продолжение — уже о конкретных решениях и граблях в рамках проектирования и постройки Kubocore 2.
А вы производили экономический расчёт? что проще собрать или купить готовый принтер?
Проще купить, собрать — дешевле.