Спартанская простота. Настройки прошивки Sprinter
Собственно, захотелось вспомнить это недалекое прошлое и описать прошивку 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
Еще больше интересных статей
duet web control не регулируются обороты вентилятора обдува детали на BTT SKR V1.4
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
принтер у меня самодельно переделанный из ки...
Klipper для Neptune 3 Pro под управлением BIGTREETECH BTT PI V1.2. Самый простой гайд.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Как я и написал "Вам шашечки и...
Куплен в Германии, поверьте, т...
Да я просто не могу понять зач...
Всем привет, кто-либо ставил 2...
Всем привет. Печатал коробку д...
Всем привет. Мой опыт в 3д печ...
Доброго времени суток, подскаж...