Marlin: различия между версиями
Владимир (обсуждение | вклад) |
Владимир (обсуждение | вклад) |
||
| (не показано 10 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
Ну описалочка для настройки прошивки Marlin для 32 плат, и не дельта принтеров. В данном случае SKR 1.3. | Ну описалочка для настройки прошивки Marlin для 32 плат, и не дельта принтеров. В данном случае SKR 1.3. | ||
==platformio.ini== | |||
Указываем тип процессора LPC1768 | Указываем тип процессора LPC1768 | ||
[platformio] | [platformio] | ||
default_envs = LPC1768 | default_envs = LPC1768 | ||
==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 | #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 | #define DEFAULT_Kp 22.20 | ||
#define DEFAULT_Ki 1. | #define DEFAULT_Ki 1.08 | ||
#define DEFAULT_Kd | #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 | #define DEFAULT_bedKp 10.00 | ||
#define DEFAULT_bedKi | #define DEFAULT_bedKi .023 | ||
#define DEFAULT_bedKd | #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, так же у разных драйверов может отличится распиловка. Настройка драйвера осуществляется как прошивкой, так и аппаратно, перемычками и регулятором тока. | |||
'''Я перепробовал множество драйверов, [[Драйверы для 3D принтеров|описание и характеристики по каждому тут]].''' | |||
#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''' | |||
<br /> | '''Трапецеидальный винт диаметром 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 | |||
<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