Настройка Marlin для принтера Creality3D CR-10S

Небольшой мануал по конфигурированию прошивки 3D принтера Creality3D CR-10S. Писал его для себя, как шпаргалку. Буду рад, если мои инструкции пригодятся кому-то еще.

Для тех, кто не хочет разбираться в тонкостях настройки прошивки, можно воспользоваться уже готовыми пакетами обновления. Инструкция, как это сделать находится здесь – Как просто прошить 3D принтер Creality CR-10S

В принтере Creality 3D CR10S используется прошивка Marlin. Ее отличительная особенность – открытый исходный код. Это позволяет пользователю производить тонкую настройку параметров принтера. Я несколько дней изучал этот вопрос и теперь попытаюсь собрать и систематизировать информацию в этой статье.

План действий:

  • Скачиваем необходимое программное обеспечение и прошивку.
  • Редактируем прошивку под наш принтер.
  • Компилируем hex файл.
  • Подсоединяем принтер к компьютеру и загружаем прошивку.

ПО и прошивка для 3D принтера

Скачиваем Arduino IDE. Это среда разработки, в которой будем править код прошивки (Ссылка: https://www.arduino.cc/en/Main/Software).

Скачиваем последнюю прошивку Marlin (Ссылка: http://marlinfw.org/meta/download/)

Подготовительные работы:

1. Устанавливаем Arduino IDE. Стандартная процедура, описывать не буду.

2.  Устанавливаем библиотеку U8glib в Arduino IDE.

ПО и прошивка для 3D принтера

Прошивка для 3D принтера

3. Заходим в папку прошивки: …\Marlin-1.1.x\Marlin\

Готовые файлы конфигурации для принтера CR-10S находятся здесь: …\Marlin-1.1.x\Marlin\example_configurations\Creality\CR-10S\

Для адаптации прошивки под наш принтер необходимо скопировать файлы из папки …\Marlin-1.1.x\Marlin\example_configurations\Creality\CR-10S\ в папку …\Marlin-1.1.x\Marlin\ с заменой.

4. Открываем файлы прошивки в Arduino IDE.

Файл > Открыть > Marlin-1.1.x\Marlin\Marlin.ino

CR10S_nastr_03.png

5. Переходим на вкладку Configuration.h и начинаем редактирование конфигурации под себя.

Для удобства включите показ номеров строк в редакторе кода: Файл > Настройки > Показать номера строк.

Файл Configuration.h

Строка 136: #define CUSTOM_MACHINE_NAME "XXX"

В кавычках можно написать что угодно. Эта информация будет отображена на мониторе принтера в главном меню.

Строка 350: #define HEATER_0_MAXTEMP 260

Максимальная температура на хотэнде. На стоковой прошивке можно было ставить 260 градусов, а может и больше. Здесь эта цифра ограничена 250 градусами.

Стал разбираться с этой информацией. На официальном сайте ничего не нашел. В других источниках максимальная температура для принтера CR10S указывается в пределах 250-270 градусов.

Нашел интересную информацию. Оказывается, трубка PTFE, по которой направляется пруток, при температуре 260 градусов начинает плавиться, выделяя токсичные газы. Именно по этой причине устанавливают предел в 250 градусов. Эта информация не проверена, если вам есть что добавить напишите об этом в комментариях.

Я выставил 260 градусов, но стараюсь не выходить за пределы 250-и градусов.

Строка 355: #define BED_MAXTEMP 110

Параметр указывает максимальную температуру стола. На официальном сайте такой информации нет. Из других источников можно найти цифру – 90 градусов.

Я установил 80 градусов, т.к. для всех моих пластиков этой температуры вполне достаточно.

Строка 480: #define THERMAL_PROTECTION_HOTENDS

Строка 481: #define THERMAL_PROTECTION_BED

Эти строки включают защиту от перегрева на экструдер и стол. Они не закомментированы, а это значит, что защита включена.

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

Строка 608: #define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 400, 89 }

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

Первые три цифры параметра относятся к осям X, Y, Z соответственно. Третий параметр отвечает за подачу пластика.

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

Я изменил только последнюю цифру (подача прутка). Точность перемещения по осям X, Y, Z меня вполне устраивает.

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

Мои значения:

  • #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 94.74 } – значения после калибровки для стоковой версии принтера.
  • #define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 400, 406.03 } – для Dual Drive Extruder.

Строка 615: #define DEFAULT_MAX_FEEDRATE {250, 250, 5, 25 }

Указывает максимальную скорость перемещения по осям. На официальном сайте указанна скорость в 100 мм/с. Из других источников нашел цифру в 200 мм/с.

В прошивке стоит 300 мм/сек. Я взял среднее значение – 250 м/сек.

Строка 633:  #define DEFAULT_ACCELERATION          500

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

Я сменил колесики на линейные направляющие, чем заметно утяжелил стол. Мне пришлось снизить это значение до 500, чтобы избежать эффект смещения слоев.

Line 634: #define DEFAULT_RETRACT_ACCELERATION  500

Ускорения при ретракте. По умолчанию стоит 1000. Я нашел информацию, что на значении 500 заметно убирается паутина.

Строка 635: #define DEFAULT_TRAVEL_ACCELERATION   500

Ускорение движения на холостые перемещения, т.е. когда принтер не печатает. По умолчанию стоит 1000. Говорят, что на значении 500 заметно снижается шум. Я поставил это значение, но какого-то эффекта не заметил. 

Строка 848: #define INVERT_X_DIR true //(по умолчанию false)

Строка 849: #define INVERT_Y_DIR true //(по умолчанию false)

Строка 850: #define INVERT_Z_DIR true //(по умолчанию true)

Строка 855: #define INVERT_E0_DIR false //(по умолчанию false)

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

//Строка 976: #define AUTO_BED_LEVELING_BILINEAR

Комментируем эту строку. Можно выбрать только один способ калибровки.

Строка 978: #define MESH_BED_LEVELING

Убираю «//» из строки. Это включает параметр #define MESH_BED_LEVELING, который определяет способ калибровки стола 3D принтера.

Функция полезна для тех, кто не пользуется датчиками для калибровки уровня стола. Теперь калибровка будет проходить по 9-и точкам. Для каждой точки, с помощью энкодера («крутилки» возле экрана), можно выставить свой уровень нуля. Это позволит печатать на кривом столе.

Число точек можно увеличить параметрами #define GRID_MAX_POINTS_X и #define GRID_MAX_POINTS_Y.

Строка 1461: #define ENCODER_PULSES_PER_STEP 4

Убираю «//» из строки. Параметр отвечает за чувствительность регулятора (энкодера) управления. Настраивается индивидуально.

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

Строка 1467: #define ENCODER_STEPS_PER_MENU_ITEM 3

Убираю «//» из строки. Используйте эту опцию, чтобы переопределить чувствительность «крутилки» управления при переходе между меню. Цифра указывает число импульсов на переход к следующему пункту меню. Настраивается индивидуально. Я остановился на тройке, не помню, что было по умолчанию.

На этом настройки в файле Configuration.h завершаю.

Настройка Configuration_adv.h

Строка 798:  //#define ARC_SUPPORT

Эту строку комментирую.

Как понял, этот параметр активирует алгоритм перемещения рабочего инструмента по окружности. В обычном случае идет аппроксимация, т.е. разбиение окружности на отрезки. Полистал форумы и понял, что эта функция в 3D печати пока не поддерживается. Ее рекомендуют отключить для экономии памяти.

Настройка PINS_RAMPS.H

Здесь настраиваем контакты на плате.

Строка 74: #define X_MAX_PIN        -1

Строка 282: #define FIL_RUNOUT_PIN    2

Переназначаем правильный контакт на датчик прутка.

Строка 427: #define SD_DETECT_PIN     -1

Строка 439: #define SD_DETECT_PIN     -1

Эти пины не используются на нашей плате.

Компиляция файла прошивки

Вообще прошивку можно загружать сразу из Arduino IDE. Но я компилирую HEX файл и только затем загружаю его в принтер.

  • В Arduini IDE выбираю плату для прошивки: Инструменты > Плата > Arduino/Genuino Mega or Mega 2560
  • В Arduini IDE выбираю процессор: Инструменты > Процессор > ATMega2560
  • В Arduini IDE нажимаю на Скетч > Экспорт бинарного файла

Компиляция файла прошивки

Если все пройдет удачно, то в папке с прошивкой появится новый файл – Marlin.ino.mega.hex

Как загрузить этот файл в принтер я описывал здесь, повторяться не буду.

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

Перед прошивкой рекомендуют очистить EEPROM (Энергонезависимую память).

На этом пока все. По возможности буду редактировать статью.