Marlin: различия между версиями

Материал из wolfram
Перейти к навигации Перейти к поиску
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
Ну описалочка для настройки прошивки Marlin для 32 плат, и не дельта принтеров. В данном случае SKR 1.3.
Ну описалочка для настройки прошивки Marlin для 32 плат, и не дельта принтеров. В данном случае SKR 1.3.


====platformio.ini====
==platformio.ini==
Указываем тип процессора LPC1768
Указываем тип процессора LPC1768
  [platformio]
  [platformio]
  default_envs = LPC1768
  default_envs = LPC1768


====Configuration.h====
==Configuration.h==
Выберите последовательный порт на плате, который будет использоваться для связи с хостом.
Выберите последовательный порт на плате, который будет использоваться для связи с хостом.


Строка 13: Строка 13:


  #define SERIAL_PORT_2 0
  #define SERIAL_PORT_2 0
Этот параметр определяет скорость передачи данных принтера.
Этот параметр определяет скорость передачи данных принтера.
  #define BAUDRATE 250000
  #define BAUDRATE '''250000'''
 
 
Выберите имя из boards.h, которое соответствует вашей настройке
Выберите имя из boards.h, которое соответствует вашей настройке
  #ifndef MOTHERBOARD
  #ifndef MOTHERBOARD
   #define MOTHERBOARD BOARD_BTT_SKR_V1_3
   #define MOTHERBOARD '''BOARD_BTT_SKR_V1_3'''
  #endif
  #endif
Имя отображается на ЖК-дисплее в сообщении «Готово» и в информационном меню.
Имя отображается на ЖК-дисплее в сообщении «Готово» и в информационном меню.
  #define CUSTOM_MACHINE_NAME "Wolfram_2.1"
  #define CUSTOM_MACHINE_NAME "Wolfram_2.1"
Это определяет количество экструдеров.
Это определяет количество экструдеров.
  #define EXTRUDERS 1
  #define EXTRUDERS 1
Обычно ожидаемый диаметр нити (1,75, 2,85, 3,0, ...). Используется для измерения объема, датчика ширины нити и т. Д.
Обычно ожидаемый диаметр нити (1,75, 2,85, 3,0, ...). Используется для измерения объема, датчика ширины нити и т. Д.
  #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
  #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Температурные настройки
Температурные настройки


Строка 31: Строка 43:


  #define TEMP_SENSOR_BED 1
  #define TEMP_SENSOR_BED 1
Максимальная температура хотэнда и стола
Максимальная температура хотэнда и стола
  #define HEATER_0_MAXTEMP 300
  #define HEATER_0_MAXTEMP 320


  #define BED_MAXTEMP      150
  #define BED_MAXTEMP      150
Настройки PID регуляции
Настройки PID регуляции


Строка 41: Строка 57:
Команда:
Команда:
  M303 E0 S250 C8
  M303 E0 S250 C8
Получаем данные и вписываем
Получаем данные и вписываем, но лучше выполнить пид, потому вставляю данные по умолчанию, делать калибровку через настройки в меню с сохранением в памяти.
  #define DEFAULT_Kp 19.05
  #define DEFAULT_Kp 22.20
  #define DEFAULT_Ki 1.79
  #define DEFAULT_Ki 1.08
  #define DEFAULT_Kd 50.61
  #define DEFAULT_Kd 114.00
 
 
PID регуляция для стола
PID регуляция для стола


Включаем для стола если скорость нагрева до 110 меньше 8 минут.  
Включаем для стола если скорость нагрева до 110 меньше 8 минут.
  #define PIDTEMPBED
  #define PIDTEMPBED
Выполняем калибровку
Выполняем калибровку
  M303 E-1 S110 C8
  M303 E-1 S110 C8
Вписываем результат
Вписываем результат, так же получать через экран настрок с сохранением настроек.
  #define DEFAULT_bedKp 26.65
  #define DEFAULT_bedKp 10.00
  #define DEFAULT_bedKi 5.33
  #define DEFAULT_bedKi .023
  #define DEFAULT_bedKd 88.93
  #define DEFAULT_bedKd 305.4
 
 
Предотвратите выдавливание, если температура ниже EXTRUDE_MINTEMP.
Предотвратите выдавливание, если температура ниже EXTRUDE_MINTEMP.
  #define PREVENT_COLD_EXTRUSION
  #define PREVENT_COLD_EXTRUSION
  #define EXTRUDE_MINTEMP 170
  #define EXTRUDE_MINTEMP 170


Раскомментируйте одну из этих опций, чтобы включить кинематику CoreXY, CoreXZ или CoreYZ в обычном порядке или в обратном порядке.
Раскомментируйте одну из этих опций, чтобы включить кинематику CoreXY, CoreXZ или CoreYZ в обычном порядке или в обратном порядке.
  #define COREXY
  #define COREXY
Настройка концевиков.
Настройка концевиков.


Строка 67: Строка 90:
  //#define USE_YMIN_PLUG
  //#define USE_YMIN_PLUG
  #define USE_ZMIN_PLUG
  #define USE_ZMIN_PLUG
...
  #define USE_XMAX_PLUG
  #define USE_XMAX_PLUG
  #define USE_YMAX_PLUG
  #define USE_YMAX_PLUG
  //#define USE_ZMAX_PLUG
  //#define USE_ZMAX_PLUG
...
Настройка типа концевика, нормально замкнутый (true) или нормально разомкнутый (false)
Настройка типа концевика, нормально замкнутый (true) или нормально разомкнутый (false)
...
#define Y_MIN_ENDSTOP_INVERTING true
  #define Z_MIN_ENDSTOP_INVERTING true
  #define Z_MIN_ENDSTOP_INVERTING true
...
  #define X_MAX_ENDSTOP_INVERTING true
  #define X_MAX_ENDSTOP_INVERTING true
  #define Y_MAX_ENDSTOP_INVERTING true
  #define Y_MAX_ENDSTOP_INVERTING true
Выбор драйверов шаговых двигателей
...


<br />
===Выбор драйверов шаговых двигателей===
Раскоментровав сроки с нужными осями и вписав драйвер который устанавливаем, мы определением прошивкой работу с типом подключения. SPI, UARD, так же у разных драйверов может отличится распиловка. Настройка драйвера осуществляется как прошивкой, так и аппаратно, перемычками и регулятором тока.
Раскоментровав сроки с нужными осями и вписав драйвер который устанавливаем, мы определением прошивкой работу с типом подключения. SPI, UARD, так же у разных драйверов может отличится распиловка. Настройка драйвера осуществляется как прошивкой, так и аппаратно, перемычками и регулятором тока.


====== TMC2208 ======
'''Я перепробовал множество драйверов, [[Драйверы для 3D принтеров|описание и характеристики по каждому тут]].'''
драйвер UARD типа, может работать и в режиме STANDALONE, без программной надстройки.
#define X_DRIVER_TYPE  TMC5160
#define Y_DRIVER_TYPE  TMC5160
#define Z_DRIVER_TYPE  TMC2130
 
#define E0_DRIVER_TYPE TMC2130
Шаги по оси на единицу по умолчанию (шаги / мм)
 
По всем осям стоят шаговые двигатели '''200''' шагов на оборот, '''16''' микро-шагов на шаг (это устанавливается перемычками на плате). Двигатель 1.8 градуса.
 
 
По осям X и Y стоит приводной ремень GT2 с шагом 2 мм и шкивы с 20 зубьями.
 
Получается:
 
'''(200 * 16) / (2.0 * 20) = 80'''
 
Для шкива 16 зубьев
 
'''(200 * 16) / (2.0 * 16 ) = 100'''
 
 
Расчет оси Z (ходовой винт)


В его особенностях:
'''Шпилька М8 с шагом резьбы 1,25 мм, тогда формула: 200 * 16 / 1.25 = 2560'''


- Сверх тихая работа на любых скоростях.
'''Трапецеидальный винт диаметром 8 мм с шагом 2 мм  и заходностью 4, тогда формула: 200 * 16 / 2 * 4 = 400'''


- В программном режиме позволяет работать с 256 субшагами
У меня шаговый винт 1204, при 16 микрошаге 800 шагов на 1мм


- В режиме STANDALONE перемычками можно установить до 16 субшагов.
[[Файл:Marlin MS0.png|центр|мини|Указывает местоположения для установки перемычек для режима STANDALONE]]
[[Файл:Marlin режимы перемычкой.png|центр|мини|Таблица показывающая в какое положение установить перемычки для получения нужного количества микро шагов. ]]
Так же видно что, у данного драйвера есть постоянно включена интерполяция, на точности это не скажется.


- В программном режиме позволяет управлять током драйвера
В зависимости от выставленного микрошага , меняется число шагов на миллиметр
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 200, 200, 800, 415 }


- В STANDALONE позволяет регулировать ток резистором.


Максимальная скорость подачи по умолчанию (мм / с)
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 20, 50 }




<br />
Максимальные скорости воспринимаемые принтером
#define MAX_FEEDRATE_EDIT_VALUES    { 600, 600, 20, 50 }
 
 
Изменение максимального ускорения (изменение / с) по умолчанию = мм / с
#define DEFAULT_MAX_ACCELERATION      { 3400, 3400, 100, 3400}
 
#define MAX_ACCEL_EDIT_VALUES       { 6000, 6000, 200, 6800 }
 
 
По умолчанию изменение ускорения (изменение / с) = мм / с
 
X, Y, Z и E ускорение для печати движений
#define DEFAULT_ACCELERATION          3500
 
#define DEFAULT_RETRACT_ACCELERATION  3500
 
#define DEFAULT_TRAVEL_ACCELERATION   3500
 
 
Предел рывка по умолчанию (мм / с)
 
«Рывок» определяет минимальное изменение скорости, при котором требуется ускорение.
//#define CLASSIC_JERK
 
 
Рывки по умолчанию, для прочных принтеров 15 -20, для обычных до 10
#define DEFAULT_EJERK    15.0
 
 
Коэффициент отклонения соединения
 
Высчитывается по формуле :
 
d = 0.4 15 * 15 / 2200 = 0,0409
#define JUNCTION_DEVIATION_MM 0,025
 
S-Curve Acceleration - Эта опция устраняет вибрацию во время печати, адаптируя кривую Безье для ускорения перемещения, обеспечивая более плавное изменение направления.
#define S_CURVE_ACCELERATION
 
 
Измените направление шага. Замените (или поменяйте местами разъем двигателя), если ось идет в неправильном направлении.
 
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
 
 
Направление упоров при наведении; 1 = МАКС, -1 = МИН
 
Нужно указать положительное число если у нас концевики в максимумах
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1
 
 
Размер печатной платформы
 
Тут очень много путаницы, самый простой способ определить максимальные координаты это указать с запасом, затем отправить принтер домой, и ручной подачей передвинуть сопло до самого края стола по XY. Координаты на экране и будут максимальными размерами области движения. Это удобно тем что, при указании области печати, ничего никуда не съедет. Так как область печати опирается на максимальные точки.
#define X_BED_SIZE 237
#define Y_BED_SIZE 232
Но в реальности стол 220*220
 
<br />Пределы хода (мм) после возврата в исходное положение, соответствующие конечным положениям.
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
Указываем ход ля оси Z
#define Z_MAX_POS 200
 
 
Скорость похода домой в миллиметрах в минуту, поэтому умножение на 60.
#define HOMING_FEEDRATE_XY (80*60)
#define HOMING_FEEDRATE_Z  (17*60)
 
 
Пресеты печати, можно настроить свой температурный режим
#define PREHEAT_1_LABEL       "PLA"
#define PREHEAT_1_TEMP_HOTEND 220
#define PREHEAT_1_TEMP_BED    70
#define PREHEAT_1_FAN_SPEED    0 // указывать от 0 до 255
 
#define PREHEAT_2_LABEL       "ABS"
#define PREHEAT_2_TEMP_HOTEND 250
#define PREHEAT_2_TEMP_BED    110
#define PREHEAT_2_FAN_SPEED    0 // указывать от 0 до 255
 
 
SD карта
 
По умолчанию поддержка SD-карты отключена. Если на вашем контроллере есть слот для SD, вы должны раскомментировать следующий параметр, иначе он не будет работать.
#define SDSUPPORT
 
 
Спикер
 
Если у вас есть динамик, который может воспроизводить звуки, включите его здесь.
#define SPEAKER
 
 
Экран
 
Я пользовался только RepRapDiscount FULL GRAPHIC Smart Controller, точнее устройствами его эмулирующими.
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Текущая версия от 19:01, 16 июня 2023

Ну описалочка для настройки прошивки Marlin для 32 плат, и не дельта принтеров. В данном случае SKR 1.3.

platformio.ini

Указываем тип процессора LPC1768

[platformio]
default_envs = LPC1768

Configuration.h

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

Последовательный порт -1 - это последовательный порт, эмулируемый USB, если он доступен.

#define SERIAL_PORT -1
#define SERIAL_PORT_2 0


Этот параметр определяет скорость передачи данных принтера.

#define BAUDRATE 250000


Выберите имя из boards.h, которое соответствует вашей настройке

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_BTT_SKR_V1_3
#endif


Имя отображается на ЖК-дисплее в сообщении «Готово» и в информационном меню.

#define CUSTOM_MACHINE_NAME "Wolfram_2.1"


Это определяет количество экструдеров.

#define EXTRUDERS 1


Обычно ожидаемый диаметр нити (1,75, 2,85, 3,0, ...). Используется для измерения объема, датчика ширины нити и т. Д.

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75


Температурные настройки

Тип сенсора, если это обычный 100 киломник то ставим 1

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_BED 1


Максимальная температура хотэнда и стола

#define HEATER_0_MAXTEMP 320
#define BED_MAXTEMP      150


Настройки PID регуляции

Рекомендуется провести тестирование и получить данные для экструдера

Команда:

M303 E0 S250 C8

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

#define DEFAULT_Kp 22.20
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114.00


PID регуляция для стола

Включаем для стола если скорость нагрева до 110 меньше 8 минут.

#define PIDTEMPBED

Выполняем калибровку

M303 E-1 S110 C8

Вписываем результат, так же получать через экран настрок с сохранением настроек.

#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4


Предотвратите выдавливание, если температура ниже EXTRUDE_MINTEMP.

#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170


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

#define COREXY


Настройка концевиков.

Нужно указать где расположены концевые выключатели. В моём случае у меня X и Y находятся в максимумах.

//#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
...
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
...


Настройка типа концевика, нормально замкнутый (true) или нормально разомкнутый (false)

...
#define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING true
...
#define X_MAX_ENDSTOP_INVERTING true
#define Y_MAX_ENDSTOP_INVERTING true
...


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

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

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

#define X_DRIVER_TYPE  TMC5160
#define Y_DRIVER_TYPE  TMC5160
#define Z_DRIVER_TYPE  TMC2130
#define E0_DRIVER_TYPE TMC2130

Шаги по оси на единицу по умолчанию (шаги / мм)

По всем осям стоят шаговые двигатели 200 шагов на оборот, 16 микро-шагов на шаг (это устанавливается перемычками на плате). Двигатель 1.8 градуса.


По осям X и Y стоит приводной ремень GT2 с шагом 2 мм и шкивы с 20 зубьями.

Получается:

(200 * 16) / (2.0 * 20) = 80

Для шкива 16 зубьев

(200 * 16) / (2.0 * 16 ) = 100


Расчет оси Z (ходовой винт)

Шпилька М8 с шагом резьбы 1,25 мм, тогда формула: 200 * 16 / 1.25 = 2560

Трапецеидальный винт диаметром 8 мм с шагом 2 мм  и заходностью 4, тогда формула: 200 * 16 / 2 * 4 = 400

У меня шаговый винт 1204, при 16 микрошаге 800 шагов на 1мм


В зависимости от выставленного микрошага , меняется число шагов на миллиметр

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 200, 200, 800, 415 }


Максимальная скорость подачи по умолчанию (мм / с)

#define DEFAULT_MAX_FEEDRATE          { 300, 300, 20, 50 }


Максимальные скорости воспринимаемые принтером

#define MAX_FEEDRATE_EDIT_VALUES    { 600, 600, 20, 50 }


Изменение максимального ускорения (изменение / с) по умолчанию = мм / с

#define DEFAULT_MAX_ACCELERATION      { 3400, 3400, 100, 3400}
#define MAX_ACCEL_EDIT_VALUES       { 6000, 6000, 200, 6800 }


По умолчанию изменение ускорения (изменение / с) = мм / с

X, Y, Z и E ускорение для печати движений

#define DEFAULT_ACCELERATION          3500
#define DEFAULT_RETRACT_ACCELERATION  3500
#define DEFAULT_TRAVEL_ACCELERATION   3500


Предел рывка по умолчанию (мм / с)

«Рывок» определяет минимальное изменение скорости, при котором требуется ускорение.

//#define CLASSIC_JERK


Рывки по умолчанию, для прочных принтеров 15 -20, для обычных до 10

#define DEFAULT_EJERK    15.0


Коэффициент отклонения соединения

Высчитывается по формуле :

d = 0.4 15 * 15 / 2200 = 0,0409

#define JUNCTION_DEVIATION_MM 0,025

S-Curve Acceleration - Эта опция устраняет вибрацию во время печати, адаптируя кривую Безье для ускорения перемещения, обеспечивая более плавное изменение направления.

#define S_CURVE_ACCELERATION


Измените направление шага. Замените (или поменяйте местами разъем двигателя), если ось идет в неправильном направлении.
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false


Направление упоров при наведении; 1 = МАКС, -1 = МИН

Нужно указать положительное число если у нас концевики в максимумах

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


Размер печатной платформы

Тут очень много путаницы, самый простой способ определить максимальные координаты это указать с запасом, затем отправить принтер домой, и ручной подачей передвинуть сопло до самого края стола по XY. Координаты на экране и будут максимальными размерами области движения. Это удобно тем что, при указании области печати, ничего никуда не съедет. Так как область печати опирается на максимальные точки.

#define X_BED_SIZE 237
#define Y_BED_SIZE 232

Но в реальности стол 220*220


Пределы хода (мм) после возврата в исходное положение, соответствующие конечным положениям.

#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE

Указываем ход ля оси Z

#define Z_MAX_POS 200


Скорость похода домой в миллиметрах в минуту, поэтому умножение на 60.

#define HOMING_FEEDRATE_XY (80*60)
#define HOMING_FEEDRATE_Z  (17*60)


Пресеты печати, можно настроить свой температурный режим

#define PREHEAT_1_LABEL       "PLA"
#define PREHEAT_1_TEMP_HOTEND 220
#define PREHEAT_1_TEMP_BED     70
#define PREHEAT_1_FAN_SPEED     0 // указывать от 0 до 255
#define PREHEAT_2_LABEL       "ABS"
#define PREHEAT_2_TEMP_HOTEND 250
#define PREHEAT_2_TEMP_BED    110
#define PREHEAT_2_FAN_SPEED     0 // указывать от 0 до 255


SD карта

По умолчанию поддержка SD-карты отключена. Если на вашем контроллере есть слот для SD, вы должны раскомментировать следующий параметр, иначе он не будет работать.

#define SDSUPPORT


Спикер

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

#define SPEAKER


Экран

Я пользовался только RepRapDiscount FULL GRAPHIC Smart Controller, точнее устройствами его эмулирующими.

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER