Как приручить 3D принтер Cubify Cube 2

в 6:37, , рубрики: 3d-принтер, arduino, avr, diy или сделай сам, механика, хак, электроника

Недавно достался мне вот такой принтер:

image

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

Но есть 2 существенных минуса.

Первый недостаток заключается в том, что фирменное ПО совсем не позволяет менять параметры печати. В общем получается что принтер практически наверняка напечатает то что нужно, но после того как будет распечатано несколько фигурок возникает непреодолимое желание что либо поменять в настройках и выясняется что поменять в принципе ничего нельзя. Даже толщину слоя. Получается 3д принтер для домохозяек и школьников.

Второй недостаток это фирменный чипованный картридж с пластиком. Пластика в нём около 300 грамм, а стоит он как несколько килограмм обычного. К тому же картриджи ещё нужно поискать.

В общем, не сомневаясь я решил заменить управляющую электронику на гораздо более интересную, с виде Arduino mega 2560 + Marlin firmware.

После разбора принтера моему взору представилась вот такая плата:

image

На фото плата с уже выпаянным родным управляющим контроллером (его можно увидеть справа платы прикрепленным скотчем, чтобы не потерялся). Также присутствуют подписи на дорожках, необходимые для подключения драйверов шаговых двигателей к микроконтроллеру.

Цепи питания

Принтер питается от внешнего блока питания 24В. Непосредственно это напряжение используется силовой частью драйверов шаговых двигателей, драйвером нагрева экструдера и для питания вентиляторов. Для питания логической части это напряжение сначала понижается до 6В линейным стабилизатором напряжения, после чего поступает на стабилизатор 3.3В – это напряжение используется для питания МК, логической части драйверов шаговых двигателей, WiFi-модуля и встроенной microSD-карты памяти. Также 6В преобразуется маломощным стабилизатором в напряжение 5В, которое используется для питания внешнего USB flash-накопителя

Управляющий микроконтроллер

Как приручить 3D принтер Cubify Cube 2 - 3

Всем управляет PIC-микроконтроллер, к которому подключается периферия, представленная драйверами ШД, WiFi-модулем, flash SD-картой, внешними портами USB и сенсорным графическим ЖК-дисплеем. Мне не удалось найти документацию на этот дисплей, а разбирать его интерфейс с даталогером было лениво. В общем, я отказался от всей этой роскоши, выпаяв МК и перерезав дорожку питания на SD и WiFi.

Драйверы шаговых двигателей

image

На плате установлены 4 идентичных драйвера A3979. На каждый драйвер приходит 3 управляющих сигнала #ENABLE, STEP и DIR. Выбран максимально доступный для этой микросхемы микрошаговый режим с 16 тактами на шаг. Выходной ток задаваемый напряжением на ножке REF также фиксированный.

Как я чуть не спалил двигатели
Так как напряжение на ножке REF формируется резистивным делителем включенным между напряжением питания цифровой части и землёй, то при переходе на arduino я не учёл того момента что напряжение поднялось с 3.3 до 5 вольт что привело к возрастанию напряжения на выходе делителя. Из-за этого после переделки ток подаваемый на моторы сильно возрос, но во время настройки я этого не заметил поскольку не включал двигатели сильно на долго. А заметил я этот косяк только когда уже всё откалибровал, собрал и запустил первую длительную печать. Печатал кубик. Время печати было больше полу часа. И уже под конец печати я почувствовал не характерный для принтеров запах горелых обмоток ШД. При попытке проверить температуру ШД чуть не обжёгся.Температура была сильно больше 100 градусов. Но пронесло — моторы не пострадали. Поэтому пришлось снова разбирать принтер и менять сопротивления для снижения тока.

Драйвер нагревательного элемента

image

На плате присутствует 2 микросхемы VN5050. Это одноканальный драйвер нагрузки с выходным током до 16.5А и обратной связью по току. Одна из микросхем подключена к нагревателю экструдера, а вторая управляет вентиляторами обдува модели. Хотя учитывая возможности этой микросхемы второй драйвер можно без ущерба использовать для коммутации нагревательного стола (производители скорее всего на это и рассчитывали потому что для вентилятора можно использовать и обычный logic level полевой транзистор).

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

Управление вентиляторами

Помимо вентиляторов для обдува модели есть ещё 2: охлаждение платы и обдув экструдера. Управляются они самым топорным образом «включил-выключил» через полевые транзисторы.

Остальное

Как приручить 3D принтер Cubify Cube 2 - 6

Ещё на плате есть WiFi-модуль и microSD-карта памяти, но я отключил от них питание посредством перерезания дорожки за ненадобностью этих девайсов.

Модернизация

С самого начала я поставил себе цель переделать принтер с наименьшими затратами на приобретение комплектующих и материалов, и родная плата очень хорошо для этого подошла. По сути для переделки потребовалась только плата Arduino mega 2560, несколько резисторов и много тонких проводков.

При компиляции прошивки я указывал, что использую шилду RAMPS 1.4 с одним экструдером, поэтому все провода втыкал в ардуину, заглядывая в схему.

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

Единственное, что пришлось переделать, это схема подключения термистора. Термистор одним концом подключен к обшей шине, а второй контакт подтянуть к шине 5В резистором 4.7кОм. Аналоговый сигнал снимается со второго вывода термистора и подаётся на вход контроллера А13.

Также были заменены резисторы, задающие опорное напряжение в драйверах ШД. Вентиляторы обдува экструдера и платы должны быть постоянно включены, поэтому на затворы соответствующих транзисторов подал 5В. Драйверы управления нагревателем и вентиляторами обдува модели подключил к выходам D8 и D9.

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

Как приручить 3D принтер Cubify Cube 2 - 7

Запитал контроллер, подав напряжение 6В с платы принтера на контакт Vin ардуины. Для запитки логической части драйверов ШД на линию, по которой раньше шло напряжение 3.3В с ардуины, подал 5В. Нулевые точки ардуины и основной платы соединил одним толстым проводом во избежание образования замкнутых петель.

Для USB-подключения был использован установленный на плате разъём. При первом испытании принтер часто отваливался от компьютера. Скорее всего это было из-за дорожек, по которым раньше шли сигналы D+ и D- на печатной плате, которые болтались в воздухе. Я их перерезал непосредственно возле разъёма и свил между собой провода D+ и D-, идущие к плате ардуино. После этого соединение больше не обрывалось.

В итоге получилось вот что:

Как приручить 3D принтер Cubify Cube 2 - 8

Настало время настройки прошивки и ПО.

Я использовал прошивку Marlin. По её настройке в интернете есть очень много информации и я ранее неоднократно сталкивался с её конфигурированием под разные принтеры, но в этот раз ситуация была несколько не типичная. Всё дело в том, что концевик по оси Z установлен внизу, то есть в максимальном положении. Таким образом при выполнении парковки ось Z становится в максимальное положение. Я довольно долго колдовал с настройками в прошивке, пока не познал дзен. Но обо всём по порядку.

Конфигурация принтера задаётся в файле Configuration.h. Я не буду многословным и опишу только те пункты, в которые вносил изменения.

Изменеия внесённые Configuration.h

#define MOTHERBOARD BOARD_RAMPS_13_EFB // использована плата RAMPS с одним экструдером

#define TEMP_SENSOR_0 2 // в экструдере использован термистор 200к с подтягивающим резистором 4.7кОм

#define DEFAULT_Kp 13.3
#define DEFAULT_Ki 2.55
#define DEFAULT_Kd 17.32 // настройки ПИД регулятора полученные после автотюнинга

#define ENDSTOPPULLUPS // активация подтягивающих резисторов на входах концевиков

const bool X_MIN_ENDSTOP_INVERTING = true;
const bool Y_MIN_ENDSTOP_INVERTING = true
const bool Z_MIN_ENDSTOP_INVERTING = true;
const bool X_MAX_ENDSTOP_INVERTING = true;
const bool Y_MAX_ENDSTOP_INVERTING = true;
const bool Z_MAX_ENDSTOP_INVERTING = true; // инверсия входов концевиков

#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false // не дизактивировать неиспользуемые моторы

#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false // задание правильного направления движения моторов

#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR 1 // на оси Z концевик стоит в максимальной позиции

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 140
#define Y_MAX_POS 140
#define Z_MAX_POS 140 // минимальные и максимальные значения координат по осям

#define HOMING_FEEDRATE {50*60, 50*60, 40*60, 0} // скорости при парковке

#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,80,115.75} // количество шагов на мм
#define DEFAULT_MAX_FEEDRATE {300, 300, 300, 20} // максимальная скорость
#define DEFAULT_MAX_ACCELERATION {1000,1000,100,10000} // максимальное ускорение

Далее я настроил Repetier Host для корректной работы с принтером. Настройки находятся во вкладке «Конфигурация», пункт «Настройки принтера».

Во вкладке «Соединение» выбрал нужный порт и его скорость.

Во вкладке «Принтер» изменил скорость перемещения по оси Z на 1500 мм/мин, и изменил значение позиции парковки по оси Z c 0 на 140 — именно этим значением нужно при необходимости точно калибровать нулевую позицию перед началом печати.

Во вкладке «Extruder» указал диаметр сопла 0.3 мм.

Во вкладке «Размеры» указал размеры печатной области. Для этого принтера по всем осям получается ровно по 140 мм.

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

Спасибо за внимание.

Автор: diystatic

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js