Металл2024 Реклама
Метобр2024 Реклама

Спартанская простота. Настройки прошивки Sprinter

Ghozt
Идет загрузка
Загрузка
30.05.2016
5495
0
Техничка

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Статья относится к принтерам:
RepRap
Когда-то в недалеком прошлом не было никакой прошивки Marlin, а были прошивки Sprinter и grbl. Впоследствии Marlin вобрал лучшее из этих двух и попутно оброс кучей надстроек и дополнений, сделавшись настолько сложным, что несведущему человеку с первого раза в ней разобраться стало очень непросто.

Собственно, захотелось вспомнить это недалекое прошлое и описать прошивку Sprinter, которая достаточно проста и занимает мало места в ПЗУ микроконтроллера. Несмотря на то, что прошивка уже давно не обновлялась, она все еще в некотором роде популярна в западном RepRap-комьюнити из-за своей простоты. Возможно, она придется по вкусу новичкам в RepRap-строе и тем, кто строит простой принтер, которому автономная печать не очень нужна.

Итак, отличительные особенности и недостатки:

- поддержка печати с карт памяти

- из актуальных плат поддерживается RAMPS (полный список ниже)

- поддерживает практически все G-code, что и Marlin

- поддерживается только один экструдер

- нет поддержки дисплея

Все настройки собраны в одном файле configuration.h. Сама по себе структура прошивки похожа на Marlin (сказывается наследственность), но есть и некоторые отличительные особенности. Тем не менее, пройдусь по почти всем настройкам.

Первым делом выбирается плата. По умолчанию выбрана RAMPS. Список довольно маленький:

// MEGA/RAMPS up to 1.2 = 3,

// RAMPS 1.3/1.4 = 33

// Gen6 = 5,

// Gen6 deluxe = 51

// Sanguinololu up to 1.1 = 6

// Sanguinololu 1.2 and above = 62

// Gen 7 @ 16MHZ only= 7

// Gen 7 @ 20MHZ only= 71

// Teensylu (at90usb) = 8

// Printrboard Rev. B (ATMEGA90USB1286) = 9

// Gen 3 Plus = 21

// gen 3 Monolithic Electronics = 22

// Gen3 PLUS for TechZone Gen3 Remix Motherboard = 23

#define MOTHERBOARD 33

Выбираются типы термодатчиков на экструдере и столе. Список поддерживаемых датчиков, опять же, довольно небольшой:

// 1 100k термистор

// 2 200k термистор

// 3 mendel-parts термистор

// 4 10k термистор - разрешение у него довольно низкое, используйте только разве что для стола

// 5 ParCan supplied 104GT-2 100K

// 6 EPCOS 100k

// 7 100k Honeywell термистор 135-104LAG-J01

#define THERMISTORHEATER 1 - датчик экструдера

#define THERMISTORBED 1 - датчик стола

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

#define _AXIS_STEP_PER_UNIT {80, 80, 3200/1.25,700} - соответственно для X, Y, Z, E осей.

Настройки концевых выключателей. Разбиты на 2 мини-раздела по ходу прошивки. Первый:

#define ENDSTOPPULLUPS - внутренний подтягивающий резистор нужен только для механических концевых выключателей, закомментируйте строку, если используете оптические/индукционные/etc

Если оси двигаются только при нажатых концевых выключателях, нужно инвертировать их состояние (поменяв false н true):

const bool X_ENDSTOP_INVERT = false;

const bool Y_ENDSTOP_INVERT = false;

const bool Z_ENDSTOP_INVERT = false;

Выбор скорости связи при подключении через USB. Раскомментировать либо одно, либо другое

#define BAUDRATE 115200

//#define BAUDRATE 250000



Поддержка печати с карт памяти. Не вижу смысла ее отключать в силу отсутствия дисплея

#define SDSUPPORT

Раскомментируйте для выполнения файла init.g при включении принтера

//#define SDINITFILE

Как и Marlin, эта прошивка поддерживает EEPROM и все связанные с ней G-code (M500/501/etc). Поддержка включается раскомментированием следующей строчки:

//#define USE_EEPROM_SETTINGS

Для отключения передачи информации из EEPROM через USB при включении принтера заскомментируйте строку ниже (экономит примерно 1000 байт кода). Но лучше оставить ее включенной.

#define PRINT_EEPROM_SETTING

Поддержка дуг и окружностей (G2/G3). Не все слайсеры умеют использовать эти команды, но в случае использования прошивки для лазерного резака точно пригодится

#define USE_ARC_FUNCTION

Для инвертирования логического сигнала активации драйверов ШД (низкий уровень) используйте 0, для высокого уровня (не инвертированного) используйте 1. Требуется для некоторых экзотических драйверов ШД

#define X_ENABLE_ON 0

#define Y_ENABLE_ON 0

#define Z_ENABLE_ON 0

#define E_ENABLE_ON 0

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

//#define DELAY_ENABLE 15

Отключает ШД осей, если те не используются

const bool DISABLE_X = false;

const bool DISABLE_Y = false;

const bool DISABLE_Z = true;

const bool DISABLE_E = false;


Меняет направление вращения ШД на осях:

const bool INVERT_X_DIR = false;

const bool INVERT_Y_DIR = false;

const bool INVERT_Z_DIR = true;

const bool INVERT_E_DIR = false;


Вторая часть настроек концевых выключателей.

Выбирается направление для парковки: 1=MAX, -1=MIN

#define X_HOME_DIR -1

#define Y_HOME_DIR -1

#define Z_HOME_DIR -1



#define ENDSTOPS_ONLY_FOR_HOMING - при раскомментировании выключатели используются только для парковики

const bool min_software_endstops = false; - при смене на true оси не будут двигаться на значения, меньшие нуля

const bool max_software_endstops = true; - при смене на true оси не будут двигаться на значения, бОльшие, чем указаны в X/Y/Z_MAX_LENGTH

Устанавливает максимальные измерения по осям (в мм):

const int X_MAX_LENGTH = 200;

const int Y_MAX_LENGTH = 200;

const int Z_MAX_LENGTH = 100;

Настройки перемещения

#define _MAX_FEEDRATE {400, 400, 2, 45} - максимальная подача соответственно для X, Y, Z, E (мм/сек)

#define _HOMING_FEEDRATE {1500,1500,120} - подачи осей для парковки (мм/мин)

#define _AXIS_RELATIVE_MODES {false, false, false, false} -
режимы относительных величин для осей

Максимальная частота шагов драйвера:

#define MAX_STEP_FREQUENCY 30000 (в Гц)

Настройка ретракта экструдера

#define MAX_RETRACT_FEEDRATE 100 (мм/сек)

Настройки ускорения:

#define _ACCELERATION 1000 - Ускорение по умолчанию в мм/с^2

#define _RETRACT_ACCELERATION 2000 - Ускорение по умолчанию в мм/с^2 для ретрактов

#define _MAX_XY_JERK 20.0 - величина движений, не требующих ускорений (они могут быть выполнены мгновенно)

#define _MAX_Z_JERK 0.4 - то же для Z

#define _MAX_E_JERK 5.0 - то же для экструдера. Все в мм/сек

#define _MAX_START_SPEED_UNITS_PER_SECOND {25.0,25.0,0.2,10.0} - максимальная начальная скорость для движений с ускорениями (мм/с) (постоянное ускорение)

#define _MAX_ACCELERATION_UNITS_PER_SQ_SECOND {5000,5000,50,5000} - максимальное ускорение в мм/с^2 для X, Y, Z, E для движений печати или ретрактов (экспоненциальное ускорение)

На этом основные настройки, на мой взгляд, заканчиваются. Дальше идут всякие экзотичные-специфичные.

Эта команда может быть полезна, если к одному компьютеру подключено несколько принтеров, и вам нужно идентифицировать какой-либо из них. Для этого задается свой ID ниже, и по команде M115 принтер пришлет этот ID в консоль:

#define _DEF_CHAR_UUID '00000000-0000-0000-0000-000000000000'



С помощью этой настройки возможно управлять вентилятором обдува с помощью софтварного PWM (500Гц) и использовать для этого любой цифровой выход на плате. Предназначена в основном для Sanguinololu

#define FAN_SOFT_PWM

Минимальная скорость старта вентилятора, когда последней командой было его отключение. Установите в 0 для отключения этой функции. Если будет задано значение от 1 до 255, то вентилятор будет вращаться с заданной скоростью столько, сколько задано в параметре MINIMUM_FAN_START_TIME

#define MINIMUM_FAN_START_SPEED 140



Время, в течение которого вентилятор будет вращаться со скоростью, указанной выше:

#define MINIMUM_FAN_START_TIME 6000 - 6 секунд

Опущу некоторые настройки, связанные с температурой. Прошивка поддерживает автонастройку PID (как ее сделать читайте здесь), но сам PID есть только у экструдера. После калибровки значения вводятся здесь:

#define PID_PGAIN 2560

#define PID_IGAIN 64

#define PID_DGAIN 4096


Обратите внимание: каждое значение, получившееся после калибровки, нужно умножить на 256 перед вводом.

Ограничение тока через нагреватель экструдера (30-255)

#define HEATER_CURRENT 255

Частота проверок температуры в миллисекундах:

#define HEATER_CHECK_INTERVAL 500 - для экструдера

#define BED_CHECK_INTERVAL 5000 - для стола

Закомментируйте строку ниже для включения управления нагревателями во время ускорения

#define DISABLE_CHECK_DURING_ACC

Раскомментируйте строку ниже для отключения управления нагревателями во время движений

#define DISABLE_CHECK_DURING_MOVE

Функция 'наблюдателя'. Программа ждет в течение указанного периода времени всякий раз, когда команда M104/M109 увеличивает целевую температуру. Если температура не увеличилась в конце периода, то целевая температура устанавливается в 0. Может быть сброшена еще одной командой M104/M109

//#define WATCHPERIOD 5000 - 5 секунд

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

//#define TEMP_RESIDENCY_TIME 20 - секунд

//#define TEMP_HYSTERESIS 5 - (C°) диапазон +/- температур. которые считаются близкими к целевой температуре

Этой настройкой устанавливается минимальная температура, ниже которой нагреватель не включится

#define MINTEMP 5

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

#define MAXTEMP 275

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

//#define CONTROLLERFAN_PIN 23 - пин управления вентилятором, закомментируйте для отключения

#define CONTROLLERFAN_SEC 60 - сколько секунд будет вращаться вентилятор после отключения последнего драйвера

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

//#define EXTRUDERFAN_PIN 66 - пин управления вентилятором, закомментируйте для отключения

#define EXTRUDERFAN_DEC 50 //температура, после которой включится вентилятор

При раскомментировании принтер сначала заканчивает движения в буфере, прежде чем выполнять M42, изменять скорость вентилятора/температуру нагревателей и т.д.

//#define CHAIN_OF_COMMAND 1

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

Adios

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама