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

Материал из wolfram
Перейти к навигации Перейти к поиску
Строка 77: Строка 77:
===Выбор драйверов шаговых двигателей===
===Выбор драйверов шаговых двигателей===
Раскоментровав сроки с нужными осями и вписав драйвер который устанавливаем, мы определением прошивкой работу с типом подключения. SPI, UARD, так же у разных драйверов может отличится распиловка. Настройка драйвера осуществляется как прошивкой, так и аппаратно, перемычками и регулятором тока.
Раскоментровав сроки с нужными осями и вписав драйвер который устанавливаем, мы определением прошивкой работу с типом подключения. SPI, UARD, так же у разных драйверов может отличится распиловка. Настройка драйвера осуществляется как прошивкой, так и аппаратно, перемычками и регулятором тока.
'''Я перепробовал множество драйверов, [[Драйверы для 3D принтеров|описание и характеристики по каждому тут]].'''
  #define X_DRIVER_TYPE  TMC5160
  #define X_DRIVER_TYPE  TMC5160
  #define Y_DRIVER_TYPE  TMC5160
  #define Y_DRIVER_TYPE  TMC5160
Строка 82: Строка 84:


  #define E0_DRIVER_TYPE TMC2130
  #define E0_DRIVER_TYPE TMC2130
<br />
Шаги по оси на единицу по умолчанию (шаги / мм)
====TMC2208====
Драйвер UARD типа, может работать и в режиме STANDALONE, без программной надстройки.
 
В его особенностях:
 
- Сверх тихая работа на любых скоростях.
 
- В программном режиме позволяет работать с 256 субшагами
 
- В режиме STANDALONE перемычками можно установить до 16 субшагов.
[[Файл:Marlin MS0.png|центр|Указывает местоположения для установки перемычек для режима STANDALONE|альт=|безрамки]]
[[Файл:Marlin режимы перемычкой.png|центр|Таблица показывающая в какое положение установить перемычки для получения нужного количества микро шагов. |альт=|безрамки|679x679px]]
Так же видно что, у данного драйвера есть постоянно включена интерполяция, на точности это не скажется.
 
- В программном режиме позволяет управлять током драйвера
 
- В STANDALONE позволяет регулировать ток резистором.
[[Файл:Marlin измерения драйвера 2208.png|мини|Указание мест для измерений и настройки tmc2208]]
 
 
Подстройка тока (Спасибо [https://3dtoday.ru/blogs/defekt/the-current-setting-of-the-stepping-motors-on-the-drivers-tmc2100tmc21/ этой статье])
 
 
Например нам нужен ток 1A на драйвере
 
Вращаем резистр (3) измеряя напряжение между (1) и (2 - землёй) Расчет идет по следующей формуле:
 
'''Изм. напряжение = (1A * 2.5) / 1.77 = 1.41V'''
 
То есть между (1) и (2 - землёй) должно быть 1.41V
 
<br />Или мы хотим узнать какой ток подаётся в данный момент:
 
Измеряем напряжение между (1) и (2 - землёй), например это 1.65V
 
'''Ток двигателя = (1.65 * 1.77) / 2.5 = 1,1682A'''
 
Подаваемый ток 1,1682A
 
 
TMC меняют ток в зависимости от нагрузки, хотим задать своего рода максимум.
 
К примеру максимальный ток для двигателя 1.4A


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


Теперь получим напряжение которое нужно выставить


(0,99A * 2,5) 1.77 = 1,4V
По осям X и Y стоит приводной ремень GT2 с шагом 2 мм и шкивы с 20 зубьями.


Итого получили нужное нам напряжение
Получается:


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


Не забываем что постоянный ток выдаваемый драйвером не должен превышать '''1.2A.'''
Для шкива 16 зубьев


==== TMC2130 ====
'''(200 * 16) / (2.0 * 16 ) = 100'''
Драйвер SPI, особенностью драйвера является свойство определения перегрузки и пропуска шагов. Что позволяет использовать его как концевой выключатель, для поиска домашнего положения.


Но так же имеет широкий функционал, мощность, является также сверх тихим.


В его особенностях:
Расчет оси Z (ходовой винт)


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


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


- В режиме STANDALONE перемычками можно установить до 16 субшагов.
У меня шаговый винт 1204, при 16 микрошаге 800 шагов на 1мм
[[Файл:Marlin таблица перемычек для 2130.png|центр|безрамки|250x250пкс|Таблица настройки перемычек для 2130]]
Как видно можно установить 2 режима Spreadcyle и Stealthchop1. Первый за тихость, второй за скорость.


- В программном режиме позволяет управлять током драйвера


- В STANDALONE позволяет регулировать ток резистором, так же как и для 2208
В зависимости от выставленного микрошага , меняется число шагов на миллиметр
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 400, 400, 800, 415 }
Максимальная скорость подачи по умолчанию (мм / с)
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 15, 50 }
Максимальные скорости воспринимаемые принтером
#define MAX_FEEDRATE_EDIT_VALUES    { 600, 600, 10, 50 }
Изменение максимального ускорения (изменение / с) по умолчанию = мм / с
#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 3000 }
По умолчанию изменение ускорения (изменение / с) = мм / с


Максимальный ток 1.2A
X, Y, Z и E ускорение для печати движений
#define DEFAULT_ACCELERATION          2200
E ускорение при втягивании
#define DEFAULT_RETRACT_ACCELERATION  3000
Ускорение по осям X, Y, Z при перемещении (без печати)
#define DEFAULT_TRAVEL_ACCELERATION   2000


Не маловажный факт, данные '''2208, 2130''' драйверы не способны в тихом режиме работать на скоростях печати более 110 мм/с. Отключение тихого режима решает данную проблему, но возникают проблемы на низких скоростях связанные с появлением резонансов в конструкции принтера. Казалось бы для решения проблемы был придуман гибридный режим. Но это решает проблему очень кустарно. Так как ускорения не линейны, максимальные при разгоне, происходит множественное переключение режимов, при разгоне и торможении, что вызывает стук при печати в лучшем случае. В большинстве случаев срывы шагов.


==== TMC5160 ====
Предел рывка по умолчанию (мм / с)
Драйвер SPI, призван решит все проблемы предыдущих 2208 и 2130, ток до 3A все режимы, полный контроль пропусков щагов.


На практике - это лучшие драйверы. Пропуск шагов настолько за пределами рабочих нагрузок, что даже иногда не вперится, что двигатель способен удерживать такие нагрузки.
«Рывок» определяет минимальное изменение скорости, при котором требуется ускорение.
//#define CLASSIC_JERK
Рывки по умолчанию, для прочных принтеров 15 -20, для обычных до 10
#define DEFAULT_EJERK    15.0
Коэффициент отклонения соединения


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


Я выбрал для себя полное отключение любых снижений шума, так как драйверы и без этого остаются очень тихими.
d = 0.4 15 * 15 / 2200 = 0,0409
#define JUNCTION_DEVIATION_MM 0,0409


Самый большой минус - Цена. Еще один минус, совместим с ними только marlin.


- Субшаги выставляются только программно до 256
Измените направление шага. Замените (или поменяйте местами разъем двигателя), если ось идет в неправильном направлении.
#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
Тут очень много путаницы, самый простой способ определить максимальные координаты это указать с запасом, затем отправить принтер домой, и ручной подачей передвинуть сопло до самого края стола по XY. Координаты на экране и будут максимальными размерами области движения. Это удобно тем что, при указании области печати, ничего никуда не съедет. Так как область печати опирается на максимальные точки.
#define X_BED_SIZE 237
#define Y_BED_SIZE 232
Но в реальности стол 220*220

Версия от 18:06, 14 августа 2020

Ну описалочка для настройки прошивки 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 300
#define BED_MAXTEMP      150

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

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

Команда:

M303 E0 S250 C8

Получаем данные и вписываем

#define DEFAULT_Kp 19.05
#define DEFAULT_Ki 1.79
#define DEFAULT_Kd 50.61

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

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

#define PIDTEMPBED

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

M303 E-1 S110 C8

Вписываем результат

#define DEFAULT_bedKp 26.65
#define DEFAULT_bedKi 5.33
#define DEFAULT_bedKd 88.93

Предотвратите выдавливание, если температура ниже 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 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  TMC2208_STANDALONE
#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   { 400, 400, 800, 415 }

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

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

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

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

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

#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 3000 }

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

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

#define DEFAULT_ACCELERATION          2200

E ускорение при втягивании

#define DEFAULT_RETRACT_ACCELERATION  3000

Ускорение по осям X, Y, Z при перемещении (без печати)

#define DEFAULT_TRAVEL_ACCELERATION   2000


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

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

//#define CLASSIC_JERK

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

#define DEFAULT_EJERK    15.0

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

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

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

#define JUNCTION_DEVIATION_MM 0,0409


Измените направление шага. Замените (или поменяйте местами разъем двигателя), если ось идет в неправильном направлении.

#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