ВСТУПЛЕНИЕ

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

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

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

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

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

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

Следующим шагом распаковываем скачанную версию проекта Marlin в удобное для работы место диска. Для более ранних версий в папке проекта можно было заметить наличие папки “Arduino Addons”. В ней расположены дополнительные библиотеки для Arduino без которых наш проект не скомпилируется из-за активированного индикатора! Было достаточно скопировать содержимое папки “ArduinoAddons/Arduino_1.x.x/libraries” в папку с библиотеками установленной оболочки Arduino “Arduino/libraries”. Для успешной компиляции требуются библиотеки Liquid Crystal и 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 “КАЛИБРОВАТЬ ЦЕНТР”

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

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

ZDV PRUSA I3 Marlin v1.1.0-RC8 2017-10-21

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

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

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

НАСТРОЙКИ ПРИНТЕРА - ПОРТ
На вкладке “Соединение” прописываем тип соединения – Serial Connection, номер порта – COM5 (как пример для моей системы), и скорость обмена, выбранную на этапе компиляции прошивки – 256000 (как пример для моей системы).

НАСТРОЙКИ ПРИНТЕРА - ПРИНТЕР
На вкладке “Принтер” настройки скоростей можно оставить по умолчанию. “Контроль температур панели и экструдера” и “Printer has SD card” включаем обязательно! На этой вкладке доступно поменять направление вращения осей принтера (на случай если в прошивке этот параметр указан неверно).

НАСТРОЙКИ ПРИНТЕРА - ЭКСТРУДЕР
На вкладке “ЭКСТРУДЕР” потребуется установить диметр сопла, номер экструдера и ограничение температуры стола и ХОТЭНДа.

НАСТРОЙКИ ПРИНТЕРА - РАЗМЕРЫ
Вкладка “Размеры” содержит настройки размеров печатного поля и тип подключенного принтера – в нашем случае “Classic Printer”. У меня установлены размеры стола 180мм х 180мм по причине того, что я использую дополнительный вентилятор для обдува места печати и приспособление для регулировки уровня стола “на лету”. В углах эти приспособления мешают друг другу при работе на весь стол.
Если настройки принтера указаны верно, то после нажатия иконки “Подсоединить”, контроллер перезагрузится, изображение на кнопке изменит цвет на зеленый. Принтер полностью готов к работе!

ВАША ПОДДЕРЖКА ПОМОЖЕТ АКТИВНЕЙ РАБОТАТЬ НАД БЛОГОМ, ПУБЛИКОВАТЬ БОЛЬШЕ СТАТЕЙ, КОТОРЫЕ, В СВОЮ ОЧЕРЕДЬ, ПОМОГУТ ВАМ РЕАЛИЗОВЫВАТЬ ИНТЕРЕСНЫЕ ПРОЕКТЫ.

СПАСИБО ЗА УЧАСТИЕ В ЖИЗНИ БЛОГА!

ЯНДЕКСWEBMONEYQIWIPAYPAL

16 thoughts on “3D ПРИНТЕР СВОИМИ РУКАМИ — КАЛИБРОВКА

  1. Доброго времени суток!
    Скачал прошивку, библиотеки установлены, проверка компиляции – ошибка. Что делать? Спасибо за ответ.
    Arduino: 1.8.12 (Windows 8.1), Плата:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”
    In file included from sketch\Marlin_main.cpp:279:0:
    sketch\endstop_interrupts.h: In function ‘void setup_endstop_interrupts()’:
    endstop_interrupts.h:148:7: error: non-constant condition for static assertion
    static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, “Y_MIN_PIN is not interrupt-capable”);
    ^~~~~~~~~~~~~
    In file included from sketch\Marlin_main.cpp:279:0:
    endstop_interrupts.h:52:67: error: reinterpret_cast from integer to pointer
    (((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) )
    ~^~~~~~~
    sketch\endstop_interrupts.h:148:21: note: in expansion of macro 'digitalPinToPCICR'
    static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
    ^~~~~~~~~~~~~~~~~
    exit status 1
    non-constant condition for static assertion

    1. Добрый вечер! Если Вы про мою прошивку, то нужен более старый компилятор (оболочка Arduino).

  2. Дмитрий, добрый день!

    Подскажите пожалуйста, как настроить прошивку правильно?
    Концевик Х расположен справа (ближе к блоку питания).
    До инверсии хоуминг Х также справа.
    Инвертировал движение по оси Х, и хоуминг изменился на левую сторону.
    Получается при калибровке каретка двигается верно, но в хоуминг уходит в противоположную от концевика сторону. Как быть, что бы не переносить концевик влево?

    1. Не сразу заметил Ваш вопрос – с таким моментом не сталкивался. В ближайшее время проработаю ответ и сброшу на почту.

  3. Здравствуйте Дмитрий!
    Заинтересовался 3D принтерами, всё что сделанно самодельщиками, это столы 300х300. Возможно ли сделать стол 300х400?
    Спасибо. С уважением Валентин.

  4. Здравствуйте!
    Относительно концевиков.
    Когда их надо ставить в true, а когда в false.
    У меня перемещение по осям не нормальное. Коретка или стол не доходя до концевика останавливаются.
    Спасибо.

    1. Пришлите исходники прошивки, я гляну.

  5. Доброго времени суток Дмитрий. Я решил собрать себе принтер с подручных материалов. Корпус собрал сделал привода заказал электронику. Как только пришла Ardubna и Ramps 1.4 с дисплеем занялся прошивкой и столкнулся с проблемой которую не могу решить уже неделю а то и две. Почитав вашу статью скачал прошивку Merlin v1 и попытался ее установить вроде бы все встало но на дисплее не чего не высвечивается. Горит только синим фоном. Помогите решить эту головоломку пожалуйста я уже мозг сломал.

    Ответ жду по вот этому адресу:( grigoriy_d28@mail.ru)

    C уважением и заранее спасибо. ГРИГОРИЙ.

    1. Григорий, здравствуйте!

      Вам необходимо скопировать дополнительные библиотеки “ArduinoAddons/Arduino_1.x.x/libraries” в папку библиотек Arduino и включить “#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER” в конфигурации прошивки. Об этом написано выше в статье… И, если индикатор исправен, Вы увидите на нем информацию.

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

    1. Всегда пожалуйста! Рад, что одним “печатником” в нашей стране стало больше ;). Следите за сайтом и интернет-магазином. Будет много интересного….

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