Реклама

Цветная печать двумя хотэндами с сервоприводом

Подписаться на 3Dtoday
fix0id
Идет загрузка
Загрузка
21.04.17
11730
65
печатает на Ultimaker Original
Техничка
167
988e6890d9951e0b85bcc7901144200b.jpg
Приветствую!
Пару месяцев назад я решил, что мне жизненно необходимо научить свою Прюшу печатать двумя филаментами. Не откладывая в долгий ящик, распечатал Y-адаптер, подключил второй экструдер, и после непродолжительной настройки принтер выдал что-то цветное. Долго в таком виде он не остался, меня напрягала необходимость печатать каждый раз остров для прокачки пластика при смене цвета. Несмотря на очевидную дешевизну такого подхода (необходимо найти пару фитингов, дополнительную боуден трубку и еще один шаговик), я почти сразу от него отказался и кроме калибровочной инь-яни ничего и не распечатал.
Следом я решил попробовать печать двумя хотэндами на одной каретке, тут меня постигло еще большее разочарование. Из неактивного хотэнда подтекал пластик и оседал прыщами при любом соприкосновении с распечаткой, что драматически влияло на качество.
В поисках альтернативы, я наткнулся на Dondolo, в котором неактивный хотэнд при помощи серво привода убирается из зоны печати, также во избежание подтёков пластика выход хотэнда физически запирается при помощи препятствия. Данная идея мне очень понравилась, но у меня не директ экструдер, а боуден, в связи с чем я решил сделать нечто подобное, но под комплектующие, что у меня уже были.
Данным постом я не претендую на открытие Америки, но хочу рассказать в виде небольшой инструкции, как реализовать данную схему. Ниже речь идет о манипуляциях с Prusa i3 подобным принтером с боуден подачей филамента, хотэндом E3D v6 и прошивкой Marlin-1.1.0-RC8.

0. Необходимые компоненты

- ($3.6) второй хотэнд;
- ($1.0) вентилятор для охлаждения радиатора хотэнда (3010S);
- ($0.8) дополнительная боуден трубка;

- ($1.2) драйвер шагового двигателя;
- ($8.2) дополнительный шаговый двигатель;
- провода для подключения двигателя;
- ($6.0) дополнительный экструдер;

- держатель хотэндов (печатается, модель прилагается);
- ($2.0) подшипник 608zz – 1 шт.;

- винт М3х10 – 2 шт.;
- винт M4x5 – 1 шт.;
- винт M4x20 – 2 шт.;
- винт M4x25 – 4 шт.;
- винт М4х40 – 2 шт.;
- шайба кузовная M4 – 3 шт.;
- гайка M4 – 8 шт;

- ($4.7) серво привод (EMAX ES08MAII) + 3-хжильный провод для подключения;
- еще провода;
- ($0.5) банка из под лимонада/пива/кваса;

Также, если у вас уже есть нагревательный стол и обдув детали, то вам придется освободить один из силовых выходов D8 – D10, соответственно для организации обдува понадобится:
- ($0.6) (опционально) ключ на полевом транзисторе для организации обдува детали (MOSFET модуль);
- ($5.0) (опционально) вентиляторы охлаждения детали (в моем случае 2 турбины AV5015)
- (опционально) воздуховоды для охлаждения детали (печатается, модель прилагается)

Итого выходит, где-то на $34.

1. Внесение изменений в прошивку

Файл Configuration.h

Необходимо определить силовые выходы D10 – D8 (EEB или EEF). Строка по умолчанию: #define MOTHERBOARD BOARD_RAMPS_14_EFB , Меняем на:#define MOTHERBOARD BOARD_RAMPS_14_EEB //extruder, extruder, bed
Далее – указать количество экструдеров. Строка по умолчанию: #define EXTRUDERS 1 , Меняем на: #define EXTRUDERS 2
Указание на наличие датчика температуры на втором хотэнде и его тип. Строка по умолчанию: #define TEMP_SENSOR_1 0 , Меняем на: #define TEMP_SENSOR_1 1
Также необходимо указать на наличие сервомотора
Строка по умолчанию: #define NUM_SERVOS 0 , Меняем на: #define NUM_SERVOS 1

Также следом за определением количества экструдеров добавляем следующий код: (Представленный код - смесь того, что уже было в прошивке с добавлениями от себя, возможно есть более элегантное решение, но я сделал именно так. При написании кода, я ориентировался на уже имеющуюся в прошивке поддержку SWITCHING_EXTRUDER , но она работает немного не так как нужно. В случае, если вы захотите делать что-то типа Dondolo, то следует воспользоваться определением именно этой функции, и не дописывать дополнительный код в прошивку).

#define SWITCHING_HOTENDS
#if ENABLED(SWITCHING_HOTENDS)
#define SWITCHING_HOTENDS_SERVO_NR 0 // servo num
#define SWITCHING_HOTENDS_SERVO_ANGLES { 120, 0 } // Angles for E0, E1
#endif

120 и 0 – углы, на которые следует поворачиваться сервоприводу при переключении между хотэндами. Если при работе сервопривод начнет издавать характерный треск, значит у него не выходит повернуться на заданный угол, из-за погрешности стыков распечатанных деталей, тогда следует уменьшить разницу в значениях на 1-2 градуса (например 120 и 2 соответственно, как это сделал я).

Файл Marlin_ main.cpp

Ищем « void invalid_ extruder_ error» Добавляем перед этой функцией или после нее следующий код:

#if ENABLED(SWITCHING_HOTENDS)
inline void move_hotends_servo(uint8_t e) {
const int angles[2] = SWITCHING_HOTENDS_SERVO_ANGLES;
MOVE_SERVO(SWITCHING_HOTENDS_SERVO_NR, angles[e]);
}
#endif

Несколькими строками ниже должна начаться функция tool_change, необходимо найти следующую строку: «void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool no_move/*=false*/) {». В функции описывается поведение для разных случаев многоцветной печати (миксирующие хотэнды, раздельные головки, печать одним экструдером и сервой), все это очень занимательно, но нужно добавить наш случай.
Следует перед строкой «# if ENABLED( SWITCHING_ EXTRUDER)» добавить следующий код:

#if ENABLED(SWITCHING_HOTENDS)
float z_raise = 0.5;
destination[Z_AXIS] += z_raise;
planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
stepper.synchronize();

move_hotends_servo(active_extruder);
delay(500);
destination[Z_AXIS] -= z_raise;
planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
stepper. synchronize ();
# endif

Готово, компилируем и заливаем прошивку в микроконтроллер.

2. Подключение электроники
ed7460213d1955588675816a7a981f70.png
D10 - нагревательный элемент первого хотэнда; D9 - нагревательный элемент первого хотэнда; D8 – нагревательный стол; D11,5 V, GND – сервопривод (в моем рампсе от чего-то на пине 5v у D11 пина нет напряжения, я подключился в другой свободный 5v пин);E1 (2 B,2 A,1 A,1 B) – двигатель 2-го экструдера; Чуть ниже драйвер второго хотэнда; T0( GND, A13) – термистор первого хотэнда, T1( GND, A14) – термистор стола, T2( GND, A15) – термистор второго хотэнда, D4, GND - MOSFET модуль для подключения вентилятора обдува детали
8944c7843a5b468fd85d1eab362fe04e.jpg
V+, V- - вентилятор(ы) обдува модели; VIN, GND –блок питания; SIG –к выходу D4 RAMPS.

3. Сборка держателя хотэндов
Модель: http://www.thingiverse.com/thing:2260178. Хочу заметить, что модель я делал исходя из комплектующих, что у меня были в наличии, в интернете есть и другие модели, например: http://www.thingiverse.com/thing:1412102
31d7fb9fa65f87e3f1a0168de12d2cca.JPG
bda8719eaa7faa97b88df15a8628b4e4.JPG
8d101e817083ed8f53c9918cbb4e2bf1.JPG
3699be3363b714cf9a17be428cd9982a.JPG
88903b14edae527ba66836375abdfcf4.JPG
4. Настройка Слайсера, подготовка модели к печати (На примере Cura 15.04.6 RU).
4.1. Указываем на наличие второго экструдера
4.2. Задаем смещение второго хотэнда относительно первого. Меню «Принтер» - «Настройки принтера…». Смещения необходимо подобрать опытным путем, в случае использования модели держателя из статьи, предлагаю оттолкнуться от указанных на скриншоте.
15d5064d98fd5512811ea7bead403c04.png
4.3. Скачиваем калибровочную модель (http://www.thingiverse.com/thing:533814);
4.4. Загружаем оба STL файла из архива в слайсер;
4.5. Жмем правой кнопкой по модели и выбираем «Объединить двойную экструзию»
d9ec9dac51c09f95c024a1b2a98f8fee.png
4.6. Не забываем настроить обдув модели. У меня при включении турбин более чем на 45% хотэнды переставали справляться с нагревом.
97ded3b9d211bbf577247f53ec81f85c.png
4.7. устанавливаем остальные настройки по своему вкусу и сохраняем .gcode для печати.

5. Калибровка принтера
Делаем паузу и проверяем, все, что сделали до этого момента с самого начала.
Печатаем калибровочную модель и радуемся ;)
1ba956af98455e51966061ae05e44884.JPG
Повторяем пункты 4.2 и 4.7, и так по кругу до тех пор, пока не добьемся правильной геометрии.
b918c58afcd03adb97f4118b937688e8.JPG
7. Апгрейд готов.
Спасибо за внимание!

В заключение несколько фотографий
Модель лягушки (http://www.thingiverse.com/thing:329436). Слева лягуха, что я печатал головкой с двумя хотэндами без сервы. Видно, что из неактивного хотэнда постоянно вытекал пластик и цеплялся за модель, не спасал даже щит вокруг.
96b5bfe1e12384a576123f0fe1522d6f.jpg
823e3f6c9f1c568c4461081250bd309a.jpg
Такая же история с штурмовиком (слева печать в два хотэнда, справа 2 хотэнда с сервой).
b5ec269e03a7dab1e7bc3c6d0864f599.JPG
Подписаться на 3Dtoday
167
Комментарии к статье
Реклама

Комментарии

21.04.17 в 10:06
7
огонь, вот молодчина!
04.06.17 в 14:18
0
21.04.17 в 10:09
4
Бомбезно! А линки на товары добавить вообще шик будет!
И еще, а что если на кертке предусмотреть какие-нибудь шторки. Т.е. сопло отодвинулось и кончик прикрыт шторкой. Просмотрел.
И не видно регулировки высоты относительно друг друга хотэндов.
21.04.17 в 10:27
4
линки вечером скину.
шторки есть, из банки сделаны. На фото и видео видно, там такие крылышки по бокам. Не самое удачное решение, но я в каретке предусмотрел отверстия в разных местах, надо подумать над шторками еще будет.
С регулировкой в прошивке я не справился, как не колдовал, смещалась нет так. По этому пришлось высоту регулировать в ручную.
21.04.17 в 10:37
1
Я уже заметил.
По этому пришлось высоту регулировать в ручную.
Вот и я о чем.
А так спасибо, все собирался на нечто подобное. Не хватает только шаговика.
21.04.17 в 10:42
3
Понял, я уже переделал модель для легкой регулировки. На днях постараюсь выложить на сингиверсе и сюда тоже напишу.
21.04.17 в 20:40
2
24.08.17 в 00:26
0
а если собрать такое на 2 титанах аэро с движками- блинчиками? должно существенно уменьшить вес головы по идее, без ущерба усилию экструдера+ будет намного короче голова и рычаги от радиаторов e3d, что тоже должно положительно сказаться на скорости печати и качестве
04.06.17 в 14:19
0
Про калибровку XYZ немного тут: http://3dtoday.ru/blogs/fix0id/marlin-112-color-printing-became-closer/
21.04.17 в 10:18
8
Поздравляю. Ты изобрел Пикасо 250. :D
21.04.17 в 10:51
1
Дондоло же
21.04.17 в 11:00
1
Принцип один :D
21.04.17 в 13:09
3
Да, но за почти 35 баксов. Уже бегу колхозить такое на свой ЗАВ.
21.04.17 в 13:10
1
Тоже вариант :) Но по мне - громоздко как-то. Напиши потом, как вышло.
21.04.17 в 18:25
0
У меня Макс плюс. Стол форматом А4. Влезет.
21.04.17 в 10:46
1
Отличная статья!
Спасибо!
21.04.17 в 10:55
1
а почему бы не сделать такое же, но как в ультимейкере? серву в горизонтальное положение и экструдеры будут ходить вверх вниз. :)
21.04.17 в 11:08
1
Все конечно здорово, а как обстоят дела со стабильностью ??? головы четко встают в нужное место ? есть люфты ?

И еще, мне в таких конструкциях не очень нравятся сервы - у них ресурс не такой большой (там коллекторный двигатель и контактный датчик) как например у ШД... в определенный момент (самый не подходящий) серва скажет упс...

А так, здорово, есть хороший вариант и есть развитие, СПАСИБО !
21.04.17 в 11:18
1
Не замечал люфтов, работает четко. Я думаю, серва проживет достаточное время, у меня же не конвейер цветных изделий :) Нужно время, чтобы понять.

В крайних положениях качающаяся каретка упирается в барьеры + серва включена все время для удержания положения. Можно сделать не зубчатую передачу конечно, а рычагом, тогда упор будет с двух сторон.
21.04.17 в 23:04
0
Сервы разные бывают:)
22.04.17 в 12:40
0
Да. В идеале сделать сердечник такой дугой и по 2 обмотки с каждой стороны фиксированные. Ну и схему с 2 мосфетами, одна от низкого уровня включает свое поле, друга от высокого. И люфвтов не будет и скорость переключения молниеносная. С другой стороны тот же скажем аккуатор и пазы.
21.04.17 в 11:36
1
Неплохо. А сколько получился общий вес каретки?
21.04.17 в 12:07
2
Думаю, что намного легче чем с директом!
21.04.17 в 14:58
1
Директ это уже другая история.
P.S. Как по мне, на Пруше стол ощутимо тяжелее каретки даже для директа. Только стекло 200х200х4 весит 400 грамм. И не надо ставить на директ топовые по мощности движки. Даже в том же размере нема17 можно взять шаговик на 26Ncm массой 220гр (есть варианты еще легче).
21.04.17 в 20:58
1
Сразу не взвешивал, разбирать лень еще раз.
Пластика грамм на 90, подшипник - 11г., хотэнды - 2*40г., вентиляторы обдува радиаторов хотэндов - 2* 7,5г. винтики все потянут грамм на 100, турбины обдува, грамм по 30 каждая и серва - где-то 25 грамм.
ИТОГО:380 грамм, примерно
21.04.17 в 12:07
2
Хорошая реализация. Тоже интересен вес.
21.04.17 в 12:13
3
Дондоло собирал, идея понравилась, сейчас делаю под боуден аналогичное, пока на этапе моделирования. А тут бац- и Вы с готовым :D. Но свой вариант я пожалуй всё равно доделаю, там немного другая идея, более компактная каретка должна получиться.
21.04.17 в 12:23
1
Будет интересно посмотреть
Также, если прошивку иначе будете править, тоже поделитесь :)
21.04.17 в 14:56
1
Поясните пожалуйста один момент:
#if ENABLED(SWITCHING_HOTENDS)
float z_raise = 0.5;
destination[Z_AXIS] += z_raise;
planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
stepper.synchronize();

move_hotends_servo(active_extruder);
delay(500);
destination[Z_AXIS] -= z_raise;
planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
stepper. synchronize ();
# endif
В программировании я не шарю, с прошивками дружить пытаюсь, но не всегда выходит :D. Я так понял здесь вы задали поднятие по Z на 0.5 при смене, а остальное?
21.04.17 в 21:33
0
Да, сначала задаем высоту подъема, чтобы сопла не чиркали по модели при смене,
далее увеличиваем значение элемента Z_AXIS массива destination на данную величину (a += x - альтернативная запись a = a + x)
Потом гоним головку вверх, дергаем сервой, чуть ждем и возвращаемся назад.

В теории в этом месте можно было при опускании учитывать разницу в высоте сопел, но что-то у меня пошло не так, когда я пытался это сделать.
21.04.17 в 12:44
2
Такая же идея была, думал, удачная или нет. Теперь вижу что удачная :)
21.04.17 в 13:43
4
Эту статью надо прям в FAQ в образец как писать статьи. Пользы 100%, тема раскрыта 100%, последовательность описания 100%, осталось место для размышлений 100%...
21.04.17 в 13:54
1
Опа! Обалдень! Лайк! Действительно очень круто запарился, отлично получилось!:D
21.04.17 в 14:29
1
Во всех отношениях отличная статья: и идею показали, и показали пример аппаратной и программной реализации, и грамотно всё изложено.
Спасибо!
21.04.17 в 15:23
1
в интернете есть и другие модели, например: http://www.thingiverse.com/thing:1412102
Куда компактнее получилось, чем по этой ссылке.

А вывести на одну вертикаль оба сопла не получается? Слишком громоздко?
21.04.17 в 17:00
3
Чтобы вывести на одну вертикаль без усложнения механики необходимо:
- или поднимать ось вращения до схождения центрального вектора и векторов от оси с концам хотэндов, что приведет к увеличению вертикальных размеров;
- или увеличивать угол вращения, что создаст неудобства к подаче филамента, если вообще не приведет к пересечению трубок боуден, трубки будут болтаться и повысится шанс того, что они за что-то зацепятся. Еще это приведет к необходимости ставить более длинные трубки.
1f0851ed4b3f6dd93a1bd6837557f3d3.png
5ea18a13f21b04a1281a2a21566fd58e.png


Можно было сделать передаточный механизм, добавляющий к вращению еще и качение, но это усложнило бы конструкцию.
21.04.17 в 18:36
0
Поздравляю с успехом, Fix0id !
Что-то я нигде не увидел утирательной башни.

хотелось бы услышать Ваши соображения насчёт ретрактов и "сопливчика".
21.04.17 в 20:37
0
Спасибо!
Ретракт при смене сопла на 10 мм, скорость 80мм/с

А башня не нужна, тк из неактивного сопла ничего не вытекает, оно прикрывается куском банки Пепси :0)
Посмотрите на фото и видео ушки по бокам.

"Сопливчик", это что?:)
21.04.17 в 21:24
1
"Сопливчик", это что?
Я так понимаю, это поролоновая губка или силиконовая щетка которая стирает грязь с сопла.

В вашей конструкции можно попробовать прицепить небольшие губки на кусках банки, чтобы при смене сопел все вытиралось автоматически.
21.04.17 в 21:29
0
ааа, я думал приложить кусочки поролона и обмотать их термоскотчем, но тогда нужно использовать что-то жестче, чем банка.
В любом случае ушки в том виде, что сейчас - временное решение.
21.04.17 в 21:05
0
Вот я и нашёл того кто читает мои сонные мысли!! (тут должен быть подозревающий что-то смайл, но я его не нашёл)
21.04.17 в 23:02
0
МОлодец, спасибо за подробное излжение
22.04.17 в 08:30
0
супер!
22.04.17 в 16:57
0
Если не трудно, просьба выложить рабочие файлы. В солидворксе, или другие. Спасибо за проделанную работу. Хочется переделать под свой принтер. Заранее спасибо.
23.04.17 в 23:11
0
Скинул вам в личку, fusion 360
22.04.17 в 17:39
0
В избранное сразу
Спасибо!
23.04.17 в 13:25
0
В избранное. Кстати, никто не знает, как это заставить на смузи работать?)
23.04.17 в 15:16
0
Скажите, а как фиксируются механизм в крайних положениях
23.04.17 в 23:12
0
Качающаяся часть упирается в барьеры в крайних положениях, и серва включенная держит положение.
23.04.17 в 23:43
1
Из моего опыта моделиста, серва долго жить не будет
28.04.17 в 09:53
0
+1

В закрытой камере серва умирает очень быстро. Плюс у сервы есть эффект "рысканья", из-за чего зубчатая передача с сервы на качели обречена на провал в качестве печати (стабильность угла у сервы никакая )
26.04.17 в 12:14
0
А если сервопривод заменить соленоидом или магнитным замком?
Сделать пружинку которая будет удерживать головки в промежуточном состоянии, и два соленоида (магнитных замка) на каждой голове + металлическая планка по центру. В зависимости от того какая голова нужна подаем напряжение на нужный магнит и он прилипает к центральной планке, сняли напругу головки вернулись в промежуточное положение. Мне кажется так будет надежнее и точнее и даже возможно быстрее.
26.04.17 в 13:06
0
Можно подумать над магнитом, тем более я их штук 7 вытащил из обычных принтеров.
Изначально я все таки стремился реализовать данный подход самым простым способом с наименьшими затратами и приемлемым результатом, так что над кареткой долго не думал :)
23.04.17 в 23:01
0
del
24.04.17 в 22:56
0
Не могли бы вы адаптировать модель под винты M3 ? :)
26.04.17 в 13:07
0
При всем уважении, М4 винты в любом стоймаркете за копейки продаются, в том же Леруа вообще на вес
28.04.17 в 11:39
1
Что, если переключать головки не сервой, а упираясь в рычаг? Сделать справа и слева от головки рычаги. Когда нужно включить правый хотэнд - двигаем головку вправо, она упирается в рычаг и опускается правая головка. Когда нужно опустить левый хотэнд- двигаем головку влево, упираемся в рычаг и опускается левая головка. Тогда серва становится не нужна, и уменьшается вес головки на вес сервы. Плюс увеличивается надёжность, так как серва может сломаться. Фиксацию в крайних положениях можно сделать пружинкой или магнитами. Как думаете?
28.04.17 в 12:01
0
можно двумя магнитами гонять рычаг, я уже думал над этим, все упирается в свободное время. Решение с сервой и зубчатой передачей лежало на поверхности, по этому я решил сначала его реализовать, чтобы в принципе работало, а уже потом допиливать :)
29.04.17 в 11:31
3
Вот нарисовал картинку:



Описание: http://3dtoday.ru/questions/switching-heads-3d-printer-without-the-servos/

Как?
29.04.17 в 08:48
0
Добрый день! Подскажите пожалуйста почему модуль вентиляторов и терморезистор 2 экструдера подцеплен на D4 ? Или я что-то упустил или не понял. И чем был обусловлен выбор A13 для драйвера 2 экструдера?
29.04.17 в 13:46
0
Доброго дня. Там форматирование дурацкое вышло в описании.
Читать следует так:

Чуть ниже драйвер второго экструдера;
T0( GND, A13) – термистор первого хотэнда,
T1( GND, A14) – термистор стола,
T2( GND, A15) – термистор второго хотэнда,
D4, GND - MOSFET модуль для подключения вентилятора обдува детали
01.05.17 в 01:09
0
И еще вопрос, не могли бы вы выложить исходники? Дело в том, что я поклонник щупов и являюсь свидетелем секты AUTO_BED_LEVELING, в настоящий момент щуп на серве. Хотелось бы его вкорячить также и в новую голову (скорее всего с другой стороны каретки)
01.05.17 в 19:00
0
скинул в личку
03.05.17 в 07:50
0
классный проект, захотелось использовать в d-bot, который сейчас собираю, быть может и со мной поделитесь исходниками. Спасибо.
03.05.17 в 08:02
1
В личку скинул

Для написания комментариев, пожалуйста, авторизуйтесь.

Реклама

Читайте в блогах

Filamentarno Total Pro: сушить или не сушить?

Первый опыт двухцветной печати.

Супер Вован по вызову

Создание модели герба города Серова

Строим "правильную" дельту - 8. Подключаем двигатели, устанавливаем контроллеры ШД.

REC: Выбираем лучший 3D-принтер!

Реклама