Собираем 3D принтер из LEGO-блоков — часть 2

Перевел SaorY для mozgochiny.ru

Снова приветствую всех мозгочинов! И выкладываю продолжение мозгоруководства по созданию своими руками 3D-принтера используя Lego-блоки.

 

sobiraem-3d-printer-iz-lego-blokov-chast-26

Начало…

 

 

Шаг 8: Электроника

 

sobiraem-3d-printer-iz-lego-blokov-chast-21

 

sobiraem-3d-printer-iz-lego-blokov-chast-22

 

sobiraem-3d-printer-iz-lego-blokov-chast-23

Чтобы разобраться в электронных составляющих этой поделки рекомендую посетить эти ресурсы: первый, второй и третий.

Микрошаги
Двигатели Nema имеют 200 шагов/оборот, но и это число можно увеличить с помощью микростеппинга, то есть перемычек на плате Ramp (3 синих перемычки на фото). Перемычки микростеппинга выставляются до монтажа плат stepstick, и если используется драйвер двигателя A4988, то можно получить 16 микрошагов, а если Drv8825, то 32 микрошага.
Размер шага A4988

j1 j2 j3
no no no fullstep
yes no no halfstep
no yes no 1/4step
yes yes no 1/8step
yes yes yes 1/16step

Размер шага Drv8825

j1 j2 j3
no no no full step
yes no no half step
no yes no 1/4 step
yes yes no 1/4 step
no no yes 1/16 step
yes no yes 1/32 step
no yes yes 1/32step
yes yes yes 1/32step
Концевые выключатели

Для Lego-принтера можно использовать 6 концевиков, но достаточно и 3-х, по одному на каждую ось и подключаются они к контактам X1, Y1 и Z1. Каждый концевой выключатель имеет 3 провода с назначением:

— сигнал
— масса, заземление
— Vcc

 

Двигатели Nema

Шаговые двигатели имееют 4 провода для подключения к плате и пронумерованы слева направо 1A, 1B, 2A, 2B, где:

1А — черный
1В — зеленый
2А — синий
2В — красный

Весь даташит для двигателя находится 3303_0_Datasheet

После подключения всей электроники производится тестирование мозгоподелки, а именно функционирование двигателей, концевиков, экструдера и нагрева стола. Еще перед установкой софта Marlin на принтер следует изменить файл configuration.h. А вот уже после его загрузки можно начать 3D печать!

Во время моей первой печати я столкнулся с небольшими трудностями при подаче нити — была разница в настройках мозгонити и сопла экструдера, и вызвано это было настройками Pronterface. Фактический размер нити был 1.75кв.мм, а выставленный 3кв.мм, размер сопла по умолчанию был выставлен 0.5 с высотой слоя 0.4мм, а фактический диаметр сопла 0.3мм.

Заголовок и версия

#define STRING_VERSION «1.0.2»
#define STRING_URL «reprap.org»
#define STRING_VERSION_CONFIG_H __DATE__ «20150530» __TIME__ // — дата и время сборки
#define STRING_CONFIG_H_AUTHOR «(Госс, LegoPrinter)» // — указываем того, кто сделал изменения.
#define STRING_SPLASH » v «STRING_VERSION» — «STRING_URL // -будут показаны во время загрузки
Плата Ramp

В данной 3D мозгоподелке используется плата Ramps 1.4 и один экструдер.

#define MOTHERBOARD BOARD_RAMPS_13_EFB
#define EXTRUDERS 1
Термисторы и температура

Для нагрева стола используются два термистора и еще один на 100к в экструдере:

// 0 is not used
// 1 is 100k thermistor — best choice for EPCOS 100k (4.7k pullup)
// 2 is 200k thermistor — ATC Semitec 204GT-2 (4.7k pullup)
// 3 is Mendel-parts thermistor (4.7k pullup)
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1

Настройка температурного максимума зависит от применяемых компонентов — экструдера и нагревательного стола. Так для Geeetech Mk8 он составляет 280 градусов Цельсия.

#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150

 

Концевый выключатели и размер печатного пространства

Положение концевиков: значение 1 для максимального положения и — 1 для минимального. Начальная точка: по оси Y стол выдвинут вперед, по оси X экструдер находится слева, а по оси Z в нижнем положении. Для моего принтера эта точка описывается так:

#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

Максимумы печатного пространства зависят от сборки:

#define X_MAX_POS 195
#define X_MIN_POS 0
#define Y_MAX_POS 215
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0

 

Шаги, скорость и ускорение

Скорость подачи выставляется в мм/мин вместо мм/сс.

#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
#define HOMING_FEEDRATE {20*60, 20*60, 1*60, 0} // set the homing speeds (mm/min)

Шаговый двигатель Nema 17: 360/1.8=200 шагов за оборот
Микростеппинг Drv8825= 32 (max)
Микростеппинг a4988 = 16 (max)

Шаг/единицу для осей X и Y:

steps_per_mm = (шаг двигателя*микрошаг драйвера) / (расстояние между зубцами ремня* диаметр зубчатого шкива)= (200 * 32 шага) / (2 * 20 мм) = 160 шагов / мм

Шаг/единицу для оси Z:
Для 5мм-го резьбового стержня шаг зубца=0.8 (грубо) или 0.5(хорошо)
steps_per_mm = (шаг двигателя* микрошаг драйвера) / шаг зубца== (200 * 32) / 0,8 = 8000

Шаг/единицу для экструдера:

steps_per_mm = (шаг двигателя* микрошаг драйвера) / (диаметр шестерни* пи)
= (200 * 32) / (7 * 3,1415926) = 291,02618

#define DEFAULT_AXIS_STEPS_PER_UNIT {160, 160, 8000, 291.0261}
#define DEFAULT_MAX_FEEDRATE {1500, 1500, 2.5, 32} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {1500,1500,100,10000}
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts

Величины нагрева (нужна калибровка, вентилятор всегда на 100%)

#define PLA_PREHEAT_HOTEND_TEMP 180
#define PLA_PREHEAT_HPB_TEMP 70
#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
#define ABS_PREHEAT_HOTEND_TEMP 240 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255

 

 

Шаг 9: Настройка и калибровка

 

sobiraem-3d-printer-iz-lego-blokov-chast-24

sobiraem-3d-printer-iz-lego-blokov-chast-25

Некоторые компоненты мозгоподелки требуют калибровки перед использованием. В этом помогут пункты этого шага, выполняя которые можно повысить качество печати.

Для тестирования экструдера я использовал настройки Prusa по умолчанию из предыдущего шага, и после разогрева экструдера удалось выдавить некоторое количество PLA. Но для качественной печати придется провести вычисление требуемых параметров, затем изменить файл конфигурации и загрузить его на ATmega. Кстати, перезагрузку файла нужно проводить после каждого изменения.

На сайте Reprap.org имеется вся подробная информация для калибровки принтера, вот только там нет описания ПИД-тюнинга, описание этого процесса можно найти на Reprap wiki. Свою калибровку самоделки я как раз начал с ПИД-тюнинга, все остальные настройки не зависят от этого процесса.

ПИД-тюнинг

С помощью софта Marlin контролируется нагрев стола и экструдера, и для этого нужно установить правильные температурные значения этих объектов. При включении принтера включается нагрев стола — через резистор течет ток и стол нагревается, при достижении нужной температуры нагрев стола отключается. При этом, вследствие задержек между повышением температуры и выключением нагрева, заданная температура будет немного превышаться. ПИД параметры хранят температурные характеристики стола и экструдера, и это позволяет замедлить нагрев при достижении нужной температуры во время печати.

Нижеследующая команда (после подключения принтера к pconsole ) включает нагрев стола до достижения температуры 60 градусов, и держит ее в течение 8-ми циклов.

M303 Е-1 S60 С8

Консоль дает результаты:

bias: 78 d: 78 min: 59.79 max: 60.19 Ku: 504.75 Tu: 10.22
Classic PID Kp: 302.85 Ki: 59.24 Kd: 387.04

Автонастройка ПИД закончена и нужно записать последние значения Kp, Ki, Kd в файл сonfiguration.h

После настройки нагревательного стола настраивается экструдер. Он имеет более высокое значение температуры:

M303 S190 E0 C8

Мои первые результаты таковы:

bias: 65 d: 65 min: 186.25 max: 194.55 Ku: 19.95 Tu: 51.51
Classic PID Kp: 11.97 Ki: 0.46 Kd: 77.09

Автонастройка ПИД закончена и нужно записать последние значения Kp, Ki, Kd в файл сonfiguration.h

Настройка продолжается до тех пор, пока значения перестанут изменяться. При этом процесс настройки всегда начинается с холодных стола и экструдера.  Мои окончательные результаты таковы (не используйте их в своем принтере, определите свои!):

#define PIDTEMP
#define DEFAULT_Kp 11.60
#define DEFAULT_Ki 0,40
#define DEFAULT_Kd 83.55

#define PIDTEMPBED
#define DEFAULT_bedKp 310,61
#define DEFAULT_bedKi 60.76
#define DEFAULT_bedKd 396,96
Двигатели

Судя по инструкции параметры для сборки PrusaI3 таковы:

#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,4000,760 * 1.1}
Если используется драйвер 8825 вместо 4988 (1/16 вместо 1/32 ) тогда параметры таковы:

#define DEFAULT_AXIS_STEPS_PER_UNIT {} 157.4804,157.4804,8000,317,6616

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

#define DEFAULT_AXIS_STEPS_PER_UNIT {160, 160, 8000, 291,0261}

Отличие всего лишь в 2.52 шаг/единицу, но разница в качестве заметна.

 

Экструдер

Мои вычисления следующие:
steps_per_mm = (шаг двигателя * микрошаг драйвера) / (диаметр шестерни* пи) = (200 * 32) / (7 * 3,1415926) = 291,02618

Но это в теории, а на практике все по-другому. Экструдер работал абы как, еще потому что я выставил неверное значение диаметра сопла. После установки верного диаметра 0.3мм принтер стал выдавать слишком много нити, и я думал что это из-за удвоенного значения, может микрошаг драйвера не 1/32, а 1/16. От подачи (с помощью Pronterface) 10см нити сопло использовало лишь 5.4см, поэтому я умножил мои значения на 0.54 и повторил тест после перезагрузки прошивки принтера. И наконец, со значением 191 шаг/мм, принтер выдавал нужное количество 100мм нити.

Следующий параметр который я настраивал это скорость подачи экструдера (второе фото). Начал я с 100мм нити с скоростью 10мм/сек, это заняло 10 минут. Затем выставил 30мм/сек с расходом все тех же 100мм нити и повышал я значение скорости до тех пор, пока экструдер уже не смог справиться с назначенными 100мм нити, это произошло на скорости 75мм/сек. После этих тестов я выставил безопасное значение — 60мм/сек.

 

Выравнивание стола

Этот процесс подробно описывается в Reprap wiki — Leveling the Print Bed.

 

Программное обеспечение

По умолчанию размер сопла выставлен 0.5мм, а фактический размер 0.3мм, поэтому требуется изменить настройки в программном обеспечении перед печатью. Моя первая тестовая печать оказалась неудачной, так как я использовал значение по умолчанию, что привело к неправильной подачи нити и слишком большой высоте слоя.

 

 

Шаг 10: Печать

 

sobiraem-3d-printer-iz-lego-blokov-chast-26

sobiraem-3d-printer-iz-lego-blokov-chast-27

sobiraem-3d-printer-iz-lego-blokov-chast-28

sobiraem-3d-printer-iz-lego-blokov-chast-29

sobiraem-3d-printer-iz-lego-blokov-chast-210

На данном этапе, хотя и нужна некоторая калибровка, принтер работает нормально. В дальнейшем мне нужно изменить параметры нити.

Оси принтера должны двигаться плавно, мозгодвигатели не должны делать пропуски. С этими проблемами, кстати, я столкнулся во время первой печати.

Данное видео показывает работу Lego-принтера до калибровки.

 

 

Будет полезно обучиться работе в Pronterface и научиться создавать stl-файлы. Себе я скачал несколько уроков и учусь управлять 3D-принтером, а научившись чему-либо полезному поделюсь.

Доработка на 3 июня 2015:

Мне удалось поменять настройки Pronterface изменив вручную GCode (выставить высоту слоя 0.1мм). Далее я скачал stl-файл и начал печать. Все шло нормально, но потом принтер начал делать пропуски по осям X и Y. Причина оказалась в том, что подшипник LM8UU, купленный на популярном ресурсе, не скользил как должен. После замены подшипников (во время которой я сделал несколько фото Y-каретки) я снова запустил печать и все прошло отлично!

Полностью завершать печать я не стал, так как не хватило нити, да и заняло бы это 7 часов. Хотя понижения процента заполнения может решить обе проблемы.

 

 

Шаг 11: Печать LEGO-блока

 

sobiraem-3d-printer-iz-lego-blokov-chast-211

 

sobiraem-3d-printer-iz-lego-blokov-chast-212

 

sobiraem-3d-printer-iz-lego-blokov-chast-213

sobiraem-3d-printer-iz-lego-blokov-chast-214

sobiraem-3d-printer-iz-lego-blokov-chast-215

 

Доработка на 5 июня 2015:

Решил посмотреть — сможет ли поделка распечатать Lego-блок. Скачал stl-файл с Lego-кирпичиком и со второго раза, с высотой слоя 0.2мм получилось все-таки распечатать кирпичик. Может не совсем идеальный, но достаточно точный (первое фото). Заняло это всего 25 минут времени.

Во время первой распечатки кирпичика, с значением высоты слоя 0.1мм, нить отставала от нагревательного стола. Уменьшение вдвое высоты слоя удвоит время печати, но кирпич получится более качественный.

 

 

На втором фото показаны первый кирпичик (оранжевый), кирпичик второй попытки и настоящий Lego-кирпич.
Доработка на 8 июня 2015:

Откалибровал подачу сопла (шаг калибровки), скачал stl-файл полого мячика и запустил печать. Расчетное время печати с высотой слоя 0.2мм составит 1 час 37 минут (и 1746см нити).

На одном из своих видео процессов печати я увидел отклонение влево ремня оси X, поэтому я заменил Lego-колесико в конце ремня на настоящий шарикоподшипник. Это дало повышение качества при последующей мозгопечати.

 

 

Шаг 12: Первая не пробная печать

 

sobiraem-3d-printer-iz-lego-blokov-chast-216

sobiraem-3d-printer-iz-lego-blokov-chast-217

sobiraem-3d-printer-iz-lego-blokov-chast-218

sobiraem-3d-printer-iz-lego-blokov-chast-219

sobiraem-3d-printer-iz-lego-blokov-chast-220

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

В поисках решения этой проблемы я нашел кожух вентилятора, который устанавливается на экструдер и охлаждает печатную головку самоделки. Для его установки нужно изменить каретку экструдера, а сам кожух установить на радиатор вертикально.
Доработка на 20 июня 2015:

Первым завершенным распечатанным объектом стала полигональная ваза, которую я распечатал по закаченному и немного модифицированному файлу в пропорции 3:22.

Поделка работает не как Lego-игрушка, а как настоящий 3D-принтер. Обновленные оси X и Y дают действительное повышение качества печати.

 

 

Шаг 13: Улучшения

 

sobiraem-3d-printer-iz-lego-blokov-chast-221

sobiraem-3d-printer-iz-lego-blokov-chast-222

sobiraem-3d-printer-iz-lego-blokov-chast-223

sobiraem-3d-printer-iz-lego-blokov-chast-224

Полный список результатов и изменений таков:

— Два первых теста (квадратные пластинки): большинство параметров прошивки стоят по умолчанию, без калибровки.

— Стопор двери: регулировка параметров X и Y на основе измеренных значений первой печати. Видны пропуски работы шаговых двигателей.

— Третья и четвертая попытка: между этими распечатками были заменены все подшипники и сокращена подача нити.

— Первый Lego-кирпичик (желтый): нить отстает от нагревательного стола. Печать слоем 0.1мм дает хороший результат.

— Lego-кирпич с высотой слоя 0,2 мм.

Все результаты в довольно быстрые сроки.
Последующие улучшения (уже выполненные)

Главное преимущество создания мозгопринтера из Lego-блоков в том, что его конструкцию можно изменить. Одной из проблем возникших в процессе сборки было соединение оси Z c 5мм резьбовым стержнем, и решилась эта проблема установкой трубки от анкера (см. фото).

Позднее я приобрел 2 муфты двигателя М5 оси Z, они цельнометаллические и имеют внутреннюю резьбу, их можно использовать вместо больших металлических пробок. Красный технический кирпичик 1х8 (последнее фото) оси Z соединен с муфтой и вследствие чего, вся ось может свободно перемещаться по резьбовому стержню.

А теперь сайты полезные для сборки мозгопринтера:

Prusa i3 Rework, Building a Prusa i3, 3D Printer botbuilder

И на этом руководство по созданию Lego-поделки завершено, надеюсь было полезно.

Удачи в творчестве!

(A-z Source)

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ!


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Copy This Password *

* Type Or Paste Password Here *