Калибровка стола. Калибровка стола Калибровка экструдера 3d принтера в marlin

Жаропонижающие средства для детей назначаются педиатром. Но бывают ситуации неотложной помощи при лихорадке, когда ребенку нужно дать лекарство немедленно. Тогда родители берут на себя ответственность и применяют жаропонижающие препараты. Что разрешено давать детям грудного возраста? Чем можно сбить температуру у детей постарше? Какие лекарства самые безопасные?

Итак, вы собрали принтер, спаяли электронику, все включили, что делать дальше?

Первое, что необходимо сделать — скачать и залить необходимую прошивку. К разным типам плат подходят разные прошивки. Т.к. у меня плата Ramps 1.25 на базе Arduino Mega 2560, я выбрал наиболее подходящую и одобряемую людьми прошивку . В чем её преимущество: управление 2 экструдерами, чтение файлов с SD-карт и работа в автономном режиме, возможность подключения ЖК-экранчика.

Скачиваем IDE Arduino, в ней находятся все необходимые драйвера и если плата сразу не определилась, то устанавливаем драйвер arduino из папки «arduino\drivers\».

Само приложение выглядит следующим образом (установка не требуется, надо только распаковать архив):

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

Хоть плата и подключена к USB, но определяется как com-порт.

Надеюсь вы уже скачали прошивку . Архив надо распаковать. В IDE Arduino открываем файл marlin.pde.. Вы должны увидеть следующую картину:

Среди закладок видно все файлы, которые входят в проект. Просто так заливать прошивку бессмысленно, в ней надо указать тип нашей платы. Так, переходим в закладках в файл configuration.h и на 10 строчке видим все типы плат, которые поддерживаются прошивкой:

Выбираем тип платы. Если у вас плата , то в поле #define MOTHERBOARD вписываем цифру 3, если у вас на плате 3 транзистора: 1-ый на , 2-ой на , 3-ий для fan (кулера), то пишем в этом поле 33, если вы собираетесь подключить второй экструдер, то пишите 34.

Кому не терпится запустить принтер на этом можно закончить настройку прошивки, но только в том случае, если у вас стоят все концевые датчики (6шт), экструдер имеет датчик температуры и есть нагревательный стол.

Уже достаточно давно (примерно пол года) пользуюсь прошивкой Marlin Kimbra (MagoKimbra/MK4duo).

это переработанная прошивка Marlin итальянским RepRap сообществом. Прошивка интересна тем, что ее можно запустить как на 8 битных мозгах, так и на 32х битных мозгах на плате Arduino DUE в связке с низкобюджетным RAMPS4Due.

Скачать прошивку и ознакомиться со списком ее фич можно по официальному адресу прошивки на гитхабе .

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

Прошивка работает на моем принтере, без проблем. Прошивку периодически обновляю, обычно вместе с выходом очередной версии.

Если есть желание сменить прошивку — попробуйте. Думаю вам понравится.

После смены прошивки с Marlin-а на MagoKimbra, первым делом надо очистить EEPROM по команде

M502 — Revert to the default «factory settings». You still need to store them in EEPROM afterwards if you want to.

M500 — Store parameters in EEPROM

На сайте теоретически есть некий конфигуратор прошивки, но, я его ни разу не использовал. Попытался, но какой-то он ракообразный. В итоге проще все сконфигурировать руками.

Кратко расскажу как настроить прошивку на примере своего принтера, мозгов типа бутерброд arduino mega + ramps и кинематики Cartesian (Prusa i3). Активирую минимально-необходимое для работы количество фич.

В настройке прошивки особо сложного ничего нет, все интуитивно понятно.

Так же уделю внимание РОДНЫМ МОЗГАМ Prusa i3 от flsun3d . Изначально принтер идет с единой материнской платой RAMPS 1.4 Plus

Если пролить в нее прошивку отличную от той что прислал китаец (Marlin 1.0.0), у принтера автоматически перестанет работать дисплей и экструдер с E0 переедет на E1. Я столкнулся с такой проблемой, посидел вечер поковырялся и нашел решение. В конце статьи расскажу как это исправить.

Прошивка без проблем собирается в последней среде Arduino (1.8.1).

Открываем файл MK4duo.ino с помощью среды Arduino и начинаем настраивать.

Начинаем со вкладки Configuration_Basic.h

Тут мы настроим

* — Тип серийных коммуникаций

* — Материнскую плату

* — Тип механики (Cartesian для Prusa I3)

* — Количество экструдеров

С ходу правим

#define BAUDRATE 250000

Если охота в терминале (или Pronterface) видеть кто конфигурил прошивку

#define STRING_CONFIG_H_AUTHOR «(Mef73, custom config)»

А можно и не трогать.

Больше в этой вкладке делать нечего, поскольку по умолчанию уже включено

#define MOTHERBOARD BOARD_RAMPS_13_HFB

#define MECHANISM MECH_CARTESIAN

А так же установлен один экструдер и один драйвер для экструдера.

Переходим ко вкладке Configuration_Cartesian.h

Начну с изменения имени принтера, хотя это и не обязательно

#define CUSTOM_MACHINE_NAME «Prusa I3 flsun»

#define INVERT_E0_DIR true

Именно мой штатный экструдер принтера Prusa i3 от flsun3d такой, инвертный. Можно перевернуть разъем шагового двигателя (ШД), но не хочу. Чтоб когда буду менять принтеру мозги, не греть голову на счет разворота разъема двигателя.

Опять же, для мого принтера с drv8825 и микрошагом 32

#define DEFAULT_AXIS_STEPS_PER_UNIT {200, 200, 800, 310, 310, 310, 310} //drv8825

Для моего принтера с a4988 и микрошагом 16

#define DEFAULT_AXIS_STEPS_PER_UNIT {100, 100, 400, 155, 155, 155, 155} //a4988

Надо прописать только ОДНУ строчку. Для одного или для другого драйвера ШД.

Для остального правлю

#define DEFAULT_MAX_FEEDRATE {200, 200, 2, 100, 100, 100, 100}

#define DEFAULT_MAX_ACCELERATION {1500, 1500, 50, 1000, 1000, 1000, 1000}

#define DEFAULT_ACCELERATION 1500

#define DEFAULT_XJERK 30.0

#define DEFAULT_YJERK 30.0

#define DEFAULT_ZJERK 0.4

Эти значения можете так же поставить свои. На этом с вкладкой Configuration_Cartesian.h заканчиваем.

Переходим к вкладке Configuration_Feature.h

Тут мы настраиваем всяческие фичи прошивки. Расскажу что и где включаю я. Возможно кто-нибудь в комментариях расскажет чем еще пользуется. Я пользуюсь по сути минимумом всяких фич, только тем что мне надо.

В общем поехали…

Убираем // c

#define HOME_Y_BEFORE_X

Первой паркуем ось Y. У меня зеркало на зажимах, если первой парковать ось X при малой высоте Z соплом снесу зажимы.

#define FORCE_HOME_XY_BEFORE_Z

ось Z паркую последней

Теперь спускаемся до

//============================= ADDON FEATURES ==============================

Раскомментируем

#define EEPROM_SETTINGS

#define EEPROM_CHITCHAT

#define SDSUPPORT

#define SD_SETTINGS

активируя EEPROM и поддержку карты SD

Дисплей у меня символьный, 2004, reprap discount smart controller

#define ULTRA_LCD

#define ENCODER_PULSES_PER_STEP 4

#define ENCODER_STEPS_PER_MENU_ITEM 1

#define REVERSE_ENCODER_DIRECTION

#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 40

#define LCD_FEEDBACK_FREQUENCY_HZ 2000

С такими параметрами у меня хорошо работают оба китайских reprap discount smart controller-а.

#define LCD_INFO_MENU

#define REPRAP_DISCOUNT_SMART_CONTROLLER

Если у вас Arduino DUE обратите внимание сюда:

//============================= ADVANCED FEATURES ===========================

//===========================================================================

/****************************************************************************************

************************************** Buffer stuff ************************************

****************************************************************************************/

// The number of linear motions that can be in the plan at any give time.

// THE BLOCK BUFFER SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.

// For Arduino DUE setting BLOCK BUFFER SIZE to 32

#define BLOCK_BUFFER_SIZE 16

// The ASCII buffer for receiving from the serial:

#define MAX_CMD_SIZE 96

// For Arduino DUE setting to 8

#define BUFSIZE 4

В общем то это и все настройки что разнятся у Mega и DUE, других не нашел.

Переходим ко вкладке Configuration_Temperature.h

#define TEMP_SENSOR_BED 1

Стол то у нас с подогревом, а по умолчанию в прошивке терморезистор подогрева отключен

Идем в ********************** PID Settings — HOTEND **************************

#define DEFAULT_Kp {14.17, 40, 40, 40} // Kp for H0, H1, H2, H3

#define DEFAULT_Ki {01.55, 07, 07, 07} // Ki for H0, H1, H2, H3

#define DEFAULT_Kd {32.29, 60, 60, 60} // Kd for H0, H1, H2, H3

После перепрошивки я обязательно перекалибрую Kp Ki Kd по команде

M303 H0 C8 S240 U

Спускаемся к ************************ PID Settings — BED ***************************

Стол у меня так же регулируется по PID. Bang Bang проще, но не так точен. Поэтому раскомментируем

#define PIDTEMPBED

#define DEFAULT_bedKp 88.21

#define DEFAULT_bedKi 12.77

#define DEFAULT_bedKd 152.28

Это настройки когда-то полученные экспериментально для моего принтера.

После перепрошивки я обязательно перекалибрую Kp Ki Kd стола по команде

M303 H-1 C8 S100 U

В Pronterface или даже не заморачиваясь, в терминале Octoprint. Ключ U сразу же применит результат.

Если нагрев отвалится по таймеру и выдаст ошибку, повторяю команду.

После чего надо выполнить команду

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

#define THERMAL_PROTECTION_HOTENDS

#define THERMAL_PROTECTION_BED

На этом вроде и все.

У меня на плате установлен самодельный Fan Extender, на 1 канал, и живет он на 11 пине. На него я подключил вентилятор обдува термобарьера.

Во вкладке Configuration_Feature.h

Убираем // с

#define HOTEND_AUTO_FAN

#define HOTEND_AUTO_FAN_TEMPERATURE 45

Ставлю температуру срабатывания на 45 градусов

Для того чтоб фича заработала, во вкладке Configuration_Pins.h

#if ENABLED(HOTEND_AUTO_FAN)

#define H0_AUTO_FAN_PIN 11

Указываю что управление вентилятором живет на 11 порту.

Теперь расскажу про замечательную плату RAMPS 1.4 Plus . Плата поставляется в комплекте с принтером Prusa I3 Flsun3d.

Пины на плате не совпадают с оригинальным бутербродным RAMPS 1.4. !!!

Я порылся в прошивке от китайцев и нашел различия в пинах.

Кладем его в папку

MK4duo-masterMK4duosrcboards

заменяя оригинальный файл 99.h.

И теперь во вкладке Configuration_Basic.h

ставим // перед MOTHERBOARD BOARD_RAMPS_13_HFB

//#define MOTHERBOARD BOARD_RAMPS_13_HFB

#define MOTHERBOARD BOARD_99

Наша плата RAMPS 1.4 Plus теперь BOARD_99

Это зарезервированный в прошивке номер платы, думаю как раз для такого случая.

После этого на RAMPS 1.4 Plus жизнь налаживается. Начинает работать дисплей и все остальное так, как надо.

По аналогии с настройками в файле, можно сконфигурировать плату в классическом Marlin-е. У меня это тоже получилось.

Прошивка MagoKimbra/MK4duo, настройки прошивки для Prusa i3 для бутерброда RAMPS 1.4 и для платы RAMPS 1.4 Plus

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

Как я писал ранее, в качестве внутреннего ПО был выбран проект Marlin . Рассмотрим все необходимые действия для получения работоспособной прошивки для описанной выше конфигурации.

СРЕДА РАЗРАБОТКИ

Первым делом необходимо установить среду разработки для Arduino . Здесь, я думаю, трудностей возникнуть не должно… Сразу хочу заметить, что более ранние прошивки могут не компилироваться на свежих версиях Arduino. Для прошивки, представленной на этой странице, я пользовался Arduino 1.8.3. Скачать версию можно на сайте Arduino или инсталлятор для Windows по ссылке .

ИСХОДНИК ПРОШИВКИ

Текущая версия Marlin для работы над прошивкой Marlin-1.1.0-RC8. Для скачивания прошивки в первоисточнике перейдите по ссылке .

Следующим шагом распаковываем скачанную версию проекта Marlin в удобное для работы место диска. Для более ранних версий в папке проекта можно было заметить наличие папки «ArduinoAddons». В ней расположены дополнительные библиотеки для Arduino без которых наш проект не скомпилируется из-за активированного индикатора! Было достаточно скопировать содержимое папки «ArduinoAddons/Arduino_1.x.x/libraries» в папку с библиотеками установленной оболочки Arduino «Arduino/libraries». Для успешной компиляции требуются библиотеки LiquidCrystal и U8glib.

Для Arduino 1.8.3 и выше библиотеки потребуется установить через «Менеджер библиотек».

ПОДКЛЮЧЕНИЕ КОНТРОЛЛЕРА

На данном этапе можно подключить плату контроллера к USB порту ПК. Дополнительно драйверы на моем ПК устанавливать не пришлось — плата подключилась в систему автоматически. Но в некоторых случаях придется их установить. Процедура стандартная, драйвера находятся в папке «drivers» установленной оболочки Arduino. В результате успешной установки в диспетчере устройств в разделе «Порты (COM и LPT)» должна отобразиться плата контроллера «Arduino Mega 2560 (COM5)». Запоминаем номер порта контроллера в системе — в моем случае это COM5. Теперь все готово для работы с исходниками контроллера.

НАСТРОЙКА ПРОШИВКИ

Запускаем оболочку, открываем проект Marlin. Перед правкой кода указываем в настройках с какой платой и контроллером будет работать оболочка на каком порту «висит» плата. Все это требуется указать в разделе «Tools (Инструменты)» оболочки. Выбираем следующие настройки:
плата — «Arduino Mega or Mega 2560»;
процессор — «ATMega2560 (Mega2560)»;
порт — «COM5» (у Вас возможен другой номер порта!).
Для внесения индивидуальных настроек потребуется внести изменения в исходники библиотек.

ВКЛАДКА Configuration.h

Устанавливаем скорость обмена порта #define BAUDRATE 115200

Я установил достаточно большую скорость обмена. Здесь нужно осознавать, что работоспособность на выбранной скорости определяется не только платой контроллера, но и программой управления. Я использую Repetier Host. Она прекрасно справляется с такой скоростью:).

Выбираем плату контроллера #define MOTHERBOARD BOARD_RAMPS_14_EFB
Этой строкой указываем, что будем использовать силовую плату RAMPS 1.4 с одним экструдером, вентилятором и обогреваемым столом. В комментариях тип платы описан следующим образом:
// RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)

Описание плат управляющего контроллера, поддерживаемые прошивкой, находятся во вкладке Boards.h.

Определяем какой экструдер будем использовать: #define EXTRUDERS 1

В случае, если используется блок питания с программным отключением, прошивка поддерживают возможность управлять таким БП. Для этого необходимо описать тип БП. Поскольку в моем случае управление БП не поддерживается, то: #define POWER_SUPPLY 0

Для надежной работы всей системы очень важно знать тип датчиков температуры, установленных в ХОТЭНДе и на нагреваемом столе. При заказе ХОТЭНДа и датчика температуры стола я как-то не обратил внимание на этот момент… В связи с чем пришлось сильно помучаться добиваясь стабильности подачи проволоки. Сразу рекомендую получить исчерпывающую информацию по используемым датчикам до оплаты ХОТЭНДа. Поскольку позже эту информацию скорее всего получить будет сложно (по личному опыту). В итоге и в нагревателе ХОТЭНДа у меня установлен датчик 5 типа, на столе — датчик 11 типа:

// 5: 100K thermistor — ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)

// 11: 100k beta 3950 1% thermistor (4.7k pullup)
#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 11

Так как корпус принтера является открытым, то различные внешние возбудители (сквозняки и пр.) могут сильно влиять на температуру нагревателей. Для более точного поддержания температуры нагревателей я рекомендую использовать PID регулировку. В этом случае потребуется калибровка нагревателей! Она проходит в автоматическом режиме и опишу этот процесс ниже по тексту статьи. На данном этапе достаточно только включить PID регуляторы хотэнда и стола с коэффициентами регулировки по умолчанию.

#define PIDTEMP

#define PIDTEMPBED

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

#define HEATER_0_MINTEMP 5
#define BED_MINTEMP 5

#define HEATER_0_MAXTEMP 270
#define BED_MAXTEMP 140

Запрещаем холодную экструзию проволоки. При температуре ниже 170 гр. С подача осуществляться не будет:

#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170

Запрещаем непрерывную подачу пластика более 200 мм:

#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 200

Включаем температурную защиту нагревателей:

#define THERMAL_PROTECTION_HOTENDS
#define THERMAL_PROTECTION_BED

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG

Для правильной работы оптических концевиков потребуются подтягивающие резисторы:

#define ENDSTOPPULLUPS

При использовании оптических концевиков инвертируем значение логического сигнала:

#define X_MIN_ENDSTOP_INVERTING false
#define Y_MIN_ENDSTOP_INVERTING false
#define Z_MIN_ENDSTOP_INVERTING false

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

#define ENDSTOP_INTERRUPTS_FEATURE

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

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

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

#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false

Следующие строки определяют направление вращения приводов для движение в нужном направлении. Напоминаю, что значения приведены для конфигурации Mendel Prusa I3.

#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

При использовании экструдера, содержащего редуктор потребуется установить:

#define INVERT_E0_DIR false

Использованные мной драйверы немного слабоваты. По этой причине на большой скорости движения в Z направлении заметны существенные глюки. Значит сразу лучше ограничить скорость при возврате каретки в начальное положение:

#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (2*60)

Для программного контроля перемещения в рабочем пространстве установим границы перемещения после установки принтером начальной точки:

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 185
#define Y_MAX_POS 185
#define Z_MAX_POS 185

Для точного перемещения по осям прошивка должна знать на сколько шагов требуется прокрутить двигатель при перемещении на 1мм:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 2*80, 2*80, 2*4000, 988 } // ДЛЯ 8825 драйверов 1/32 ШАГА

Значение для двигателя экструдера приведено для WADE’S экструдера .

В этой строке прописаны значения осей X, Y, Z, E (экструдера). Все значения, кроме E вполне совпадают с расчетными величинами (по крайней мере у меня). К значению Е вернемся позже. Теорию можно прочесть на форуме RepRap .

#define DEFAULT_MAX_ACCELERATION { 2500, 2500, 250, 4000 } // МАКСИМАЛЬНОЕ УСКОРЕНИЕ

#define DEFAULT_ACCELERATION 500 // УСКОРЕНИЕ ПО УМОЛЧАНИЮ
#define DEFAULT_RETRACT_ACCELERATION 2500 // УСКОРЕНИЕ РЕТРАКТА
#define DEFAULT_TRAVEL_ACCELERATION 500 // УСКОРЕНИЕ ПРИ ПЕРЕМЕЩЕНИИ БЕЗ ПЕЧАТИ

И, пожалуй, последнее, что требуется прописать для запуска платы контроллера — подключение дисплея:

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Для перехода на русский язык в меню управления принтером:

#define LCD_LANGUAGE ru

#define DISPLAY_CHARSET_HD44780 CYRILLIC

и SD карты памяти:

#define SDSUPPORT

Основные параметры настроены, можно приступать к калибровке! Но, раз уж мы ковыряем прошивку, сразу доработаем все необходимое для реализации работы в меню контроллера без ПК.

Опишем температуру преднагрева для PLA и ABS пластика:

#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 80
#define PREHEAT_1_FAN_SPEED 0

#define PREHEAT_2_TEMP_HOTEND 230
#define PREHEAT_2_TEMP_BED 115
#define PREHEAT_2_FAN_SPEED 0

Если интересно знать статистику работы принтера. Для сохранения статистики в EEPROM включим:

#define PRINTCOUNTER

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

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

Информацию можно получить из принтера по команде M78.

#define THERMAL_PROTECTION_HOTENDS // ВКЛЮЧИТЬ ЗАЩИТУ ДЛЯ ВСЕХ ХОТЭНДОВ
#define THERMAL_PROTECTION_BED // ВКЛЮЧИТЬ ЗАЩИТУ ДЛЯ СТОЛА

Режимы требуется настраивать индивидуально для каждой модели принтеров. Описание параметров приведу в части статьи, описывающей вкладку Configuration_adv.h.

Если с настройками по умолчанию энкодера работать неудобно (слишком быстро перепрыгивает между разделами меню или не устраивает направление вращения), то следующие разделы помогут тонко отстроить работу энкодера:

// ЧИСЛО ИМПУЛЬСОВ ЭНКОДЕРА НА ОДИН ШАГ. ДЛЯ ЭКОДЕРОВ С ВЫСОКИМ РАЗРЕШЕНИЕМ
// ТРЕБУЕТСЯ УВЕЛИЧИТЬ ЗНАЧЕНИЕ

#define ENCODER_PULSES_PER_STEP 3

// КОЛИЧЕСТВО ШАГОВ ЭНКОДЕРА ДЛЯ ПЕРЕХОДА МЕЖДУ ПУНКТАМИ МЕНЮ
#define ENCODER_STEPS_PER_MENU_ITEM 2

// ИЗМЕНЕНИЕ НАПРАВЛЕНИЯ ВРАЩЕНИЯ

#define REVERSE_ENCODER_DIRECTION

ВКЛАДКА Configuration_adv.h

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

Настройки режимов защиты по температуре:

#define THERMAL_PROTECTION_PERIOD 90 // СЕКУНДЫ
#define THERMAL_PROTECTION_HYSTERESIS 15 // ГРАДУСЫ ЦЕЛЬСИЯ

#define WATCH_TEMP_PERIOD 16 // СЕКУНДЫ
#define WATCH_TEMP_INCREASE 4 // ГРАДУСЫ ЦЕЛЬСИЯ

После включения параметра THERMAL_PROTECTION_HOTENDS при нагреве хотэнда по командам M140 или M190 принтер будет отслеживать прирост температуры! Если за период времени WATCH_TEMP_PERIOD температура не увеличивается на WATCH_TEMP_INCREASE ГРАДУСОВ, то принтер остановится и потребуется полная перезагрузка.

Для нагревателя стола тот же алгоритм защиты и переменные при условии включения THERMAL_PROTECTION_BED:

#define THERMAL_PROTECTION_BED_PERIOD 120 // СЕКУНДЫ
#define THERMAL_PROTECTION_BED_HYSTERESIS 20 // ГРАДУСЫ ЦЕЛЬСИЯ

#define WATCH_BED_TEMP_PERIOD 240 // СЕКУНДЫ
#define WATCH_BED_TEMP_INCREASE 2 // ГРАДУСЫ ЦЕЛЬСИЯ

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

1. Определить пин контроллера, задействованный для управления вентилятором охлаждения:

#define CONTROLLERFAN_PIN 6

2. Установить время, которое будет вращаться вентилятор после остановки двигателей:
#define CONTROLLERFAN_SECS 90

3. Скорость вращения вентилятора:
#define CONTROLLERFAN_SPEED 255

Очень интересная настройка:

#define FAN_KICKSTART_TIME 50

позволяет запускать вентилятор обдува фактически на любой рабочей скорости. Для этого на установленное в настройке время в миллисекундах задается максимальная стартовая скорость. После запуска установится рабочая скорость.

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

#define E0_AUTO_FAN_PIN 11
#define EXTRUDER_AUTO_FAN_TEMPERATURE 100 // ТЕМПЕРАТУРА ВКЛЮЧЕНИЯ
#define EXTRUDER_AUTO_FAN_SPEED 255 // СКОРОСТЬ ВРАЩЕНИЯ

В предыдущих статьях я упоминал, что драйвер шагового двигателя оси Z при параллельном подключении двух двигателей, существенно перегревается. Прошивка позволяет подключить второй двигатель на драйвер неиспользуемого двигателя экструдера:

#define Z_DUAL_STEPPER_DRIVERS

Пожалуй, это все самые необходимые настройки вкладки.

ВКЛАДКА Language_RU.h

После перехода на русский язык мне не понравился перевод параметров. Я сделал перевод под себя. Для этого во вкладке Language_RU.h изменил константы:

#define WELCOME_MSG MACHINE_NAME » ГОТОВ.»
#define MSG_SD_INSERTED «КАРТА УСТАНОВЛЕНА»
#define MSG_SD_REMOVED «КАРТА ИЗВЛЕЧЕНА»
#define MSG_MAIN «МЕНЮ»
#define MSG_LCD_ENDSTOPS «КОНЦЕВИК»
#define MSG_AUTOSTART «АВТОСТАРТ»
#define MSG_DISABLE_STEPPERS «ВЫКЛ. ДВИГАТЕЛИ»
#define MSG_AUTO_HOME «ПАРКОВКА»
#define MSG_LEVEL_BED_HOMING «НУЛЕВОЕ ПОЛОЖ»
#define MSG_LEVEL_BED_WAITING «НАЖМИТЕ НАЧАТЬ»
#define MSG_LEVEL_BED_NEXT_POINT «СЛЕДУЮЩАЯ ТОЧКА»
#define MSG_LEVEL_BED_DONE «УРОВЕНЬ!»
#define MSG_LEVEL_BED_CANCEL «ОТМЕНИТЬ»
#define MSG_SET_HOME_OFFSETS «ЗАПОМНИТЬ ПАРКОВКУ»
#define MSG_HOME_OFFSETS_APPLIED «КОРРЕКЦИИ ПРИМЕН»
#define MSG_SET_ORIGIN «ЗАПОМНИТЬ НОЛЬ»
#define MSG_PREHEAT_1 «ПРЕДНАГРЕВ PLA»
#define MSG_PREHEAT_1_N «ГРЕТЬ ФОРСУНКУ «
#define MSG_PREHEAT_1_ALL «ГРЕТЬ ВСЕ»
#define MSG_PREHEAT_1_BEDONLY «ГРЕТЬ СТОЛ»
#define MSG_PREHEAT_1_SETTINGS «НАСТРОЙКИ PLA»
#define MSG_PREHEAT_2 «ПРЕДНАГРЕВ ABS»
#define MSG_PREHEAT_2_N «ГРЕТЬ ФОРСУНКУ «
#define MSG_PREHEAT_2_ALL «ГРЕТЬ ВСЕ»
#define MSG_PREHEAT_2_BEDONLY «ГРЕТЬ СТОЛ»
#define MSG_PREHEAT_2_SETTINGS «НАСТРОЙКИ ABS»
#define MSG_COOLDOWN «ОХЛАЖДЕНИЕ»
#define MSG_SWITCH_PS_ON «ВКЛЮЧИТЬ ПИТАНИЕ»
#define MSG_SWITCH_PS_OFF «ОТКЛЮЧИТЬ ПИТАНИЕ»
#define MSG_EXTRUDE «ЭКСТРУЗИЯ»
#define MSG_RETRACT «ВТЯГИВАНИЕ»
#define MSG_MOVE_AXIS «ДВИЖЕНИЕ ПО ОСЯМ»
#define MSG_LEVEL_BED «КАЛИБРОВАТЬ СТОЛ»
#define MSG_MOVE_X «ДВИЖЕНИЕ ПО X»
#define MSG_MOVE_Y «ДВИЖЕНИЕ ПО Y»
#define MSG_MOVE_Z «ДВИЖЕНИЕ ПО Z»
#define MSG_MOVE_E «ЭКСТРУДЕР»
#define MSG_MOVE_01MM «ДВИЖЕНИЕ XYZ 0.1мм»
#define MSG_MOVE_1MM «ДВИЖЕНИЕ XYZ 1мм»
#define MSG_MOVE_10MM «ДВИЖЕНИЕ XY 10мм»
#define MSG_SPEED «СКОРОСТЬ»
#define MSG_BED_Z «Z СТОЛА»
#define MSG_NOZZLE LCD_STR_THERMOMETER » СОПЛО»
#define MSG_BED LCD_STR_THERMOMETER » СТОЛ»
#define MSG_FAN_SPEED «КУЛЕР»
#define MSG_FLOW «ПОТОК»
#define MSG_CONTROL «НАСТРОЙКИ»
#define MSG_MIN LCD_STR_THERMOMETER » МИНИМУМ»
#define MSG_MAX LCD_STR_THERMOMETER » МАКСИМУМ»
#define MSG_FACTOR LCD_STR_THERMOMETER » ФАКТОР»
#define MSG_AUTOTEMP «АВТОТЕМПЕРАТУРА»
#define MSG_ON «ВКЛ. «
#define MSG_OFF «ОТКЛ. «
#define MSG_PID_P «PID-P»
#define MSG_PID_I «PID-I»
#define MSG_PID_D «PID-D»
#define MSG_PID_C «PID-C»
#define MSG_ACC «Acc»
#define MSG_VX_JERK «Vx-РЫВОК»
#define MSG_VY_JERK «Vy-РЫВОК»
#define MSG_VZ_JERK «Vz-РЫВОК»
#define MSG_VE_JERK «Ve-РЫВОК»
#define MSG_VMAX «Vmax «
#define MSG_VMIN «Vmin»
#define MSG_VTRAV_MIN «VПутеш. min»
#define MSG_AMAX «Amax»
#define MSG_A_RETRACT «A-ВТЯГИВАНИЕ»
#define MSG_A_TRAVEL «A-ПУТЕШ.»
#define MSG_XSTEPS «X шаг/мм»
#define MSG_YSTEPS «Y шаг/мм»
#define MSG_ZSTEPS «Z шаг/мм»
#define MSG_ESTEPS «E шаг/мм»
#define MSG_TEMPERATURE «ТЕМПЕРАТУРА»
#define MSG_MOTION «МЕХАНИКА»
#define MSG_VOLUMETRIC «ПРУТОК»
#define MSG_VOLUMETRIC_ENABLED «E в mm3»
#define MSG_FILAMENT_DIAM «ДИАМЕТР ПРУТКА»
#define MSG_CONTRAST «КОНТРАСТ LCD»
#define MSG_STORE_EPROM «СОХРАНИТЬ В EEPROM»
#define MSG_LOAD_EPROM «СЧИТАТЬ ИЗ EEPROM»
#define MSG_RESTORE_FAILSAFE «СБРОС EEPROM»
#define MSG_REFRESH «ОБНОВИТЬ»
#define MSG_WATCH «ОБЗОР»
#define MSG_PREPARE «ДЕЙСТВИЯ»
#define MSG_TUNE «НАСТРОЙКИ»
#define MSG_PAUSE_PRINT «ПАУЗА ПЕЧАТИ»
#define MSG_RESUME_PRINT «ПРОДОЛЖИТЬ ПЕЧАТЬ»
#define MSG_STOP_PRINT «ОСТАНОВИТЬ ПЕЧАТЬ»
#define MSG_CARD_MENU «ОБЗОР КАРТЫ»
#define MSG_NO_CARD «НЕТ КАРТЫ»
#define MSG_DWELL «СОН…»
#define MSG_USERWAIT «ОЖИДАНИЕ»
#define MSG_RESUMING «ВОЗОБНОВЛЕНИЕ…»
#define MSG_PRINT_ABORTED «ОТМЕНА ПЕЧАТИ»
#define MSG_NO_MOVE «НЕТ ДВИЖЕНИЯ.»
#define MSG_KILLED «УБИТО.»
#define MSG_STOPPED «ОСТАНОВЛЕНО.»
#define MSG_CONTROL_RETRACT «ВТЯГИВАНИЕ,мм»
#define MSG_CONTROL_RETRACT_SWAP «ВТЯГ. СМЕНЫ,мм»
#define MSG_CONTROL_RETRACTF «ВТЯГИВАНИЕ V»
#define MSG_CONTROL_RETRACT_ZLIFT «ВТЯГ. ПРЫЖКА,мм»
#define MSG_CONTROL_RETRACT_RECOVER «ВОЗВРАТ +мм»
#define MSG_CONTROL_RETRACT_RECOVER_SWAP «ВОЗВРАТ СМЕНЫ +мм»
#define MSG_CONTROL_RETRACT_RECOVERF «ВОЗВРАТ V»
#define MSG_AUTORETRACT «АВТО ВТЯГИВАНИЕ»
#define MSG_FILAMENTCHANGE «СМЕНА ПРУТКА»
#define MSG_INIT_SDCARD «ИНИЦ. КАРТУ»
#define MSG_CNG_SDCARD «СМЕНИТЬ КАРТУ»
#define MSG_ZPROBE_OUT «Z ДАТЧИК ВНЕ СТОЛА»
#define MSG_HOME «ПАРКУЙ X/Y ПЕРЕД Z»
#define MSG_FIRST «ПЕРВЫЙ»
#define MSG_ZPROBE_ZOFFSET «СМЕЩЕНИЕ Z»
#define MSG_BABYSTEP_X «МИКРОШАГ X»
#define MSG_BABYSTEP_Y «МИКРОШАГ Y»
#define MSG_BABYSTEP_Z «МИКРОШАГ Z»
#define MSG_ENDSTOP_ABORT «СРАБОТАЛ КОНЦЕВИК»
#define MSG_HEATING_FAILED_LCD «РАЗОГРЕВ НЕ УДАЛСЯ»
#define MSG_ERR_REDUNDANT_TEMP «ОШИБКА:СЛИШКОМ ГОРЯЧО»
#define MSG_THERMAL_RUNAWAY «ТЕПЛО УБЕГАНИЯ!»
#define MSG_ERR_MAXTEMP «ОШИБКА: Т макс.»
#define MSG_ERR_MINTEMP «ОШИБКА: Т мин.»
#define MSG_ERR_MAXTEMP_BED «ОШИБКА:Т макс.стол»
#define MSG_ERR_MINTEMP_BED «ОШИБКА:Т мин.стол»
#define MSG_HEATING «ГРЕЮ ФОРСУНКУ…»
#define MSG_HEATING_COMPLETE «НАГРЕВ ВЫПОЛНЕН»
#define MSG_BED_HEATING «ГРЕЮ СТОЛ…»
#define MSG_BED_DONE «СТОЛ РАЗОГРЕТ»
#define MSG_DELTA_CALIBRATE «КАЛИБРОВКА DELTA»
#define MSG_DELTA_CALIBRATE_X «КАЛИБРОВАТЬ X»
#define MSG_DELTA_CALIBRATE_Y «КАЛИБРОВАТЬ Y»
#define MSG_DELTA_CALIBRATE_Z «КАЛИБРОВАТЬ Z»
#define MSG_DELTA_CALIBRATE_CENTER «КАЛИБРОВАТЬ ЦЕНТР»

ОТЛАЖЕННАЯ ПРОШИВКА

Тем, кто собрал таки свою Прушу, выкладываю свою версию прошивки. Прошивка полностью отлажена и позволит сразу запустить принтеры и .

УПРАВЛЯЮЩАЯ ПРОГРАММА

Этап правки исходников можно считать завершенным. Если плата контроллера еще не подключена к порту, подключаем и жмем «Файл/Вгрузить»! После загрузки прошивки принтер готов к работе… Через меню интерфейсной платы доступно управление движением каретки по всем осям с разными шагами, включение/выключение нагревателей ХОТЭНДа и стола, печать с карты памяти и многие другие удобные фишки без использования ПК. Но для завершения калибровки принтера не достаточно функциональности меню и нам потребуется программная оболочка. Из тех, что я попробовал, мне больше подошла программа Repetier Host. Она обладает удобным интерфейсом, хорошим функционалом и что не менее важно вместе с ней мы получаем слайсеры в комплекте. Скачивание доступно на официальном сайте Repetier Host .
Приступаем к работе в программной оболочке. Вид окна программы представлен на рисунке ниже.

После запуска программы необходимо настроить параметры соединения с принтером. Выполняем задачу через меню «Конфигурация/Настройки принтера» или жмем соответствующую иконку.


На вкладке «Соединение» прописываем тип соединения — Serial Connection, номер порта — COM5 (как пример для моей системы), и скорость обмена, выбранную на этапе компиляции прошивки — 256000 (как пример для моей системы).


На вкладке «Принтер» настройки скоростей можно оставить по умолчанию. «Контроль температур панели и экструдера» и «Printer has SD card» включаем обязательно! На этой вкладке доступно поменять направление вращения осей принтера (на случай если в прошивке этот параметр указан неверно).


На вкладке «ЭКСТРУДЕР» потребуется установить диметр сопла, номер экструдера и ограничение температуры стола и ХОТЭНДа.


Вкладка «Размеры» содержит настройки размеров печатного поля и тип подключенного принтера — в нашем случае «Classic Printer». У меня установлены размеры стола 180мм х 180мм по причине того, что я использую дополнительный вентилятор для обдува места печати и приспособление для регулировки уровня стола «на лету». В углах эти приспособления мешают друг другу при работе на весь стол.
Если настройки принтера указаны верно, то после нажатия иконки «Подсоединить», контроллер перезагрузится, изображение на кнопке изменит цвет на зеленый. Принтер полностью готов к работе!
Продолжение следует…

Любое периферическое устройство, чтобы обеспечивать возложенную функциональность, должно работать с программным обеспечением уровня firmware. 3D принтеры в этом отношении не являются исключением. Благодаря придуманному в 1964 году принципу универсальных интерфейсов, основная часть программного обеспечения и электронных компонентов является совместимой. Это подразумевает использование одного программного кода для целого ряда устройств, относящихся к определенному типу.

Все 3D принтеры работают на одном программном коде

Принципы обновления firmware для устройств

Согласно новой парадигме программный софт и аппаратная часть выполняется в рамках проектов с открытым исходным кодом. Именно в рамках такого проекта разрабатываются полупрофессиональные 3D принтеры. Для них существует универсальная прошивка Marlin, рассчитанная на работу с микроконтроллерными платами ArduinoMega и RAMPS Shield v.1.4. Соответственно, прошивка для 3d принтера Marlin совместима со всеми моделями, в которых они использованы. Перед выполнением работ потребуется установить плату RAMPS shield в ArduinoMega и сделать действия, описанные ниже.

Для перепрошивки устройства понадобится плата RAMPS Shield

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

Новые версии нужно устанавливать самостоятельно, используя файлы, доступные на сайте Marlin.

После установки выполняется настройка прошивки 3d принтера.

На сайте Marlin необходимо скачать последнюю версию Arduino

Общий процесс соответствует следующей последовательности:

  • файлы скачиваются с сайта Marlin;
  • затем компилируются в среде Arduino IDE;
  • после этого записываются на управляющую плату RAMPS shield.

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

Все действия нужно производить на вкладке Configuration.h

Инструкция по установке и настройке Марлин для 3д-принтеров

Подготовка прошивки для платы состоит в подготовке конфигурационных настроек Марлин в компиляторе. Что это значит? Arduino IDE имитирует наличие принтера и делает компиляцию программного кода для RAMPS shield с помощью ArduinoMega 2560, чтобы готовый файл можно было записать на контроллер. Если общий принцип, что нужно делать, понятен, то настройка параметров может вызвать определенные сложности. В этом случае вы всегда можете обратиться к специалисту, который работает с моделями PRUSA I3, Anet A2, TevaTarantula.

Для начала прошивки нужно выбрать контролер (motherboard)

Определим основные этапы компилирования файла, которые включает настройка прошивки Marlin для 3d принтера:

  • Потребуется установить среду Arduino IDE, иметь при себе плату ArduinoMega, в нее нужно вставить программируемую принтерную RAMPS Shield v.1.4;
  • Также нужно скачать новую версию прошивки Марлин, распакуйте архив и откройте файл Configuration.h в Arduino IDE;
  • Далее настраивается среда компиляции, в меню «Инструменты» найдите Arduino/GenuinoMegaorMega 2560, отмечаем эту же плату в выпавшем списке ArduinoMega 2560;
  • Требуется настройка кода в Ардуино, именно эта часть вызывает определенные сложности у новичков. Так что если вы не уверены в своих силах, как минимум, не спешите записывать свой файл на контроллер. Дело в том, что проводится настройка технических параметров, в том числе, отвечающих за остановку работы, чтобы исключить повреждения компонентов (основные моменты смотрите ниже);
  • После внесения изменений в конфигурацию нажмите в окне кода «Проверить», при наличии ошибок, проверьте код повторно;
  • После прохождения проверки нажмите кнопку «Сохранить»;
  • Затем нажмите «Загрузка», очевидно, что для этого требуется подключение к разъемам платы.

Настройка файла Configuration.h в Ардуино

Описание этого процесса требует отдельного довольно объемного обзора, поэтому поясним определенные моменты:

  • Устанавливается скорость передачи данных. Обычно 250000 бод/с или другая, поддерживаемая компьютером;
  • Тип платы: rampsshield v.1.4, указав в конце строки efb (extruder, fan, bed – экструдер, вентилятор, стол) даже при отсутствии каких-то функций (подогрева стола и вентилятора);
  • Настройки датчика температуры – установите в «1» на используемые датчики;
  • Минимальная температура работы – устанавливается 5, это имеется в виду 5 градусов цельсия;
  • Максимальная температура – установите 230 с для экструдера, 120 с устанавливается для стола;
  • Проверка соответствия температуры материала и начала работы, можно отключить командой м302, также отключается пролонгированное выдавливание, имеющее лаг запаздывания, но обеспечивающее плавную работу;
  • Требуется настроить механику: концевые выключатели, подтягивающие резисторы и другие. В процессе обычно делается проверка правильной работоспособности;
  • Необходимо также настроить шаговое движение по осям.

Описание самого процесса в Ардуино можно почитать по ссылке , конечно, процесс требует понимания своих действий. Если вы не уверены в своих силах, обратитесь к специалисту. После записи корректного файла обновление для PRUSA I3, Anet A2, TevaTarantula будет готово. Прошивка для 3d принтера I3 PRUSA требует учитывать параметры именно данного устройства, воспользуйтесь оригинальными рекомендациями по обновлению конфигурации.

Здравствуйте, новички и профессионалы!

Я совсем недавно пришёл в мир 3D печати и имею совсем не много опыта в этом деле. Но кое что хотелось бы поведать. А именно идею калибровки стола принтера.

Способ занимает не много времени, не требует редкого измерительного инструмента, достаточно точен и прост.

Идея такой калибровки возникла после такой картины:

Как видно из картинок, верхняя часть каймы напечатана хорошо, склеена между собой (толщина 0,2мм), а нижняя часть не склеена (толщина 0,3мм).

Для калибровки стола Вам потребуются:

Набор ключей/отвёрток для регулировки стола, кто чем регулирует;

Штангенциркуль (в идеале с нониусом (шкалой) 0,05);

Модель для теста - http://сайт/3d-models/detali-dlya-3d-printerov/raznoe/test_gorizont/

В моём случае стол регулируется тремя винтами, поэтому модель выглядит так. Каждый круг около своего винта. Л - Левый, П - Правый, З - Задний, Ц - центр (для определения кривизны поверхности). Толщина слоя 0,2 мм с каймой. В вашем случае можете сделать по своему.

Элемент модели (Центр):

Итак, приступим.

Предварительная калибровка:

Берём лист А4 и настраиваем стол так, как рассказано во многих статьях и видео в интернете.

Данным методом можно достаточно точно настроить стол, но! На ощупь не получится определить достаточную/недостаточную силу зажима бумаги. Лёгкое скольжение может быть у каждого своё.

В общем - примерно настроили.

Завершающая калибровка:

Печатаем модель. Как видно из скриншота - печатается она 2 минуты, с учётом отклонений и разогрева - минут 5.

Ждём пока модель остынет чтобы отклеить. Я не ждал а просто поддел канцелярским ножом, ABS даёт такую возможность.

Отклеили кружочки, берём штангенциркуль и замеряем толщину. В моём случает должно быть 0,2 мм.

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

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

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

Удачи и откалиброванного всем стола!

Критика и пожелания приветствуются.

Поддержите проект — поделитесь ссылкой, спасибо!
Читайте также
Как надо использовать Fusion Drive на Mac, чтобы не психануть  Как надо использовать Fusion Drive на Mac, чтобы не психануть  Skype Click to Call что это за программа и нужна ли она? Skype Click to Call что это за программа и нужна ли она? Как подключить и настроить Wi-Fi роутер? Как подключить и настроить Wi-Fi роутер?