Недавно у меня появился вот такой принтер:
Плюсов много: качественная сборка, красивый корпус, приемлемое соотношение качества и скорости печати, очень удобные для домашнего использования размеры.
Но есть 2 существенных недостатка.
Первый недостаток – фирменное программное обеспечение вообще не позволяет менять параметры печати.
В общем, получается, что принтер почти наверняка напечатает то, что вам нужно, но после того, как будет напечатано несколько цифр, возникает непреодолимое желание что-то изменить в настройках и оказывается, что в принципе ничего изменить нельзя.
Даже толщина слоя.
Получается 3D-принтер для домохозяек и школьников.
Второй недостаток – фирменный чип-картридж с пластиком.
Пластика в нем около 300 грамм, а стоит он столько же, сколько и несколько килограммов обычного.
Кроме того, патроны еще нужно поискать.
В общем без всяких сомнений я решил заменить управляющую электронику на гораздо более интересную, в виде прошивки Arduino mega 2560 + Marlin.
Разобрав принтер, я увидел вот эту плату:
На фото плата с уже отпаянным оригинальным контроллером управления (его видно на правой стороне платы, прикрепленного скотчем, чтобы не потерялся).
Также имеются подписи на дорожках, необходимые для подключения драйверов шаговых двигателей к микроконтроллеру.
Силовые цепи
Принтер питается от внешнего источника питания 24 В.Это напряжение напрямую используется силовой частью драйверов шаговых двигателей, драйвером нагрева экструдера и для питания вентиляторов.
Для питания логической части это напряжение сначала понижается линейным стабилизатором напряжения до 6В, после чего оно подается на стабилизатор 3,3В - это напряжение используется для питания МК, логической части драйверов ШД, WiFi модуль и встроенную карту памяти microSD. Также 6В преобразуется маломощным стабилизатором в напряжение 5В, которое используется для питания внешней флешки.
Управляющий микроконтроллер
Управляет всем микроконтроллер PIC, к которому подключается периферия, представленная SD-драйверами, WiFi-модулем, флэш-SD-картой, внешними USB-портами и сенсорным графическим ЖК-дисплеем.
Документацию на этот дисплей мне найти не удалось, а разбирать его интерфейс с даталогером мне было лень.
В общем я отказался от всей этой роскоши, выпаяв МК и отключив питание на SD и WiFi.
Драйверы шаговых двигателей
На плате установлены 4 одинаковых драйвера A3979. Каждый драйвер получает 3 управляющих сигнала #ENABLE, STEP и DIR. Был выбран максимальный доступный для данной микросхемы микрошаговый режим с частотой 16 тактов на шаг.
Выходной ток, устанавливаемый напряжением на выводе REF, также фиксирован.
Как я чуть не сжег двигатели Поскольку напряжение на выводе REF формируется резистивным делителем, включенным между напряжением питания цифровой части и землей, при переходе на ардуино я не учел тот факт, что напряжение выросло с 3,3 до 5 вольт, что привело к увеличение напряжения на выходе делителя.
Из-за этого после модификации сильно увеличился ток, подаваемый на моторы, но при настройке я этого не заметил, так как долго не включал моторы.
Этот баг я заметил только тогда, когда уже всё откалибровал, собрал и запустил первую длительную печать.
Распечатал куб.
Время печати составило более получаса.
И уже под конец печати я почувствовал запах сгоревших обмоток двигателя, что не характерно для принтеров.
При попытке проверить температуру SD чуть не сгорела.
Температура была значительно выше 100 градусов.
Но оно прошло – двигатели не пострадали.
Поэтому пришлось снова разбирать принтер и менять сопротивление, чтобы уменьшить ток.
Драйвер нагревательного элемента
На плате установлены 2 микросхемы VN5050. Это одноканальный драйвер нагрузки с выходным током до 16,5А и обратной связью по току.
Одна из микросхем подключена к нагревателю экструдера, а вторая управляет обдувом модели.
Хотя, учитывая возможности этой микросхемы, второй драйвер можно использовать для переключения нагревательного стола без повреждений (производители, скорее всего, на это и рассчитывали, поскольку для вентилятора можно использовать обычный полевой транзистор логического уровня).
Эта микросхема включается путем подачи логической единицы на вход Isense, как бы парадоксально это ни звучало.
Управление вентилятором
Помимо вентиляторов для обдува модели есть еще 2: охлаждение платы и обдув экструдера.Управляются они самым корявым образом «включено-выключено» через полевые транзисторы.
Отдых
На плате также есть модуль WiFi и карта памяти microSD, но я отключил от них питание, обрезав дорожку, так как эти устройства оказались не нужны.
Модернизация
С самого начала я поставил перед собой цель переделать принтер с минимально возможными затратами на приобретение комплектующих и материалов, и родная плата для этого очень подошла.Фактически для преобразования потребовалась всего лишь плата Arduino mega 2560, несколько резисторов и множество тонких проводов.
При составлении прошивки я указал, что использую шилд RAMPS 1.4 с одним экструдером, поэтому подключил все провода к Ардуино, глядя в диаграмма .
Первым делом выпаял контроллер управления и стабилизатор 3,3В.
После этого, проверив даташиты драйверов, я нашел и подписал все дорожки, отвечающие за управление периферией.
Также называются концевые выключатели.
Оказалось, что почти все входы и выходы пригодны для использования с логикой 5 В.
Единственное, что пришлось переделать, это схему подключения терморезистора.
Один конец терморезистора подключается к общей шине, а второй контакт подключается к шине 5В с помощью резистора сопротивлением 4,7 кОм.
Аналоговый сигнал снимается со второго вывода термистора и поступает на вход контроллера А13. Также были заменены резисторы, задающие опорное напряжение в драйверах шаговых двигателей.
Вентиляторы обдува экструдера и платы должны быть постоянно включены, поэтому на затворы соответствующих транзисторов подавалось 5В.
Драйверы управления отопителем и вентиляторами обдува модели были подключены к выходам D8 и D9.
Я добавил несколько последних штрихов к плате Arduino. Отпаял разъемы питания и USB. Также, чтобы контроллер питался исключительно от принтера и не включался при подключении USB-кабеля и отсутствии питания принтера, я отпаял клемму от транзистора:
Я включил контроллер, подав напряжение 6 В с платы принтера на вывод Vin Arduino. Для питания логической части драйверов шаговых двигателей я подал напряжение 5 В на линию, по которой ранее от Arduino поступало напряжение 3,3 В.
Нулевые точки ардуино и основной платы я соединил одним толстым проводом, чтобы избежать образования замкнутых петель.
Для подключения USB использовался разъем, установленный на плате.
Во время первого теста принтер часто падал с компьютера.
Скорее всего, это произошло из-за того, что дорожки, которые раньше передавали сигналы D+ и D- на печатной плате, висели в воздухе.
Я разрезал их рядом с разъемом и скрутил провода D+ и D-, идущие к плате Arduino. После этого связь больше не прерывалась.
В итоге произошло вот что:
Пришло время настроить прошивку и ПО.
Я использовал прошивку 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 = правда; const bool Y_MIN_ENDSTOP_INVERTING = правда const bool Z_MIN_ENDSTOP_INVERTING = правда; const bool X_MAX_ENDSTOP_INVERTING = правда; const bool Y_MAX_ENDSTOP_INVERTING = правда; const bool Z_MAX_ENDSTOP_INVERTING = правда; // инверсия входов концевого выключателя #define DISABLE_X ложь #define DISABLE_Y false #define DISABLE_Z ложь #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 изменил с 0 на 140 — именно с этим значением при необходимости вы перед печатью необходимо точно откалибровать нулевое положение.
Во вкладке «Экструдер» я указал диаметр сопла 0,3 мм.
Во вкладке «Размеры» указаны размеры печатной области.
У этого принтера все оси ровно 140 мм.
После этого принтер нормально работал даже без тонкой настройки слайсера.
Slic3r в простом режиме.
Правда, скорость не космическая.
На данный момент в свободное время занимаюсь тонкой настройкой слайсера для получения лучшего скоростного качества.
Спасибо за внимание.
Теги: #Сделай сам или Сделай сам #3D принтеры #3d принтер #электроника #arduino #avr #хак #механика
-
«Идеальная Карьера Приведет Вас Не Туда».
19 Oct, 24 -
Яндекс Проанализировал Работу Автофокуса
19 Oct, 24 -
Прогнозирующие Интерфейсы
19 Oct, 24 -
Таймлапс-Таймер На Arduino
19 Oct, 24 -
Что Нового В Windows Server 2012 R2?
19 Oct, 24 -
Rtx 3080 — Мечта, Которой Нет В Наличии
19 Oct, 24 -
Дизайнер Монетизации: Кто Он И Как Им Стать
19 Oct, 24