Марлин 2.0 для Anycubic Kossel Pulley (младшая модель) с рабочим автоуровнем. Стандартный датчик от мышки, микрик, на сопло.
http://3dtoday.ru/blogs/xolodny/preparation-and-marlin-firmware-for-delta-printer/
немного дополнена моими пониманиями.
Купил Anycubic Koessel Pulley, это младшая модель Anycubic Koessel Plus, отличается меньшим размером стола 180см и вместо линейных направляющих на подшипниках, используются ролики. Купил, собрал, откалибровал, печатал. Со временем стал замечать, что при переноске принтера с одного места в другой, даже после калибровки, детали выходили кривые.
Калибровал как AutoLevelinBed, так и по листочку, по познавательному видео от Anycubic, c настройкой концевиков на башнях. Также калибровал по калькулятору Эшера, и в Репитр Хосте менял данные в EEPROM, сохранял, проверял что бы сохранение прошло нормально, успокоился, а на следующий день заметил что все настройки EEPROM которые я внёс, скинуты на стандартные, т.е. принтер не запоминает их.
Решил, что всё с меня хватит! Надо прошивать другую прошивку! Сначала выбрал Марлин 1.1.8, потом 1.1.9.
Настраивал по теме xolodny надо почитать он лучше пишит.
http://3dtoday.ru/blogs/xolodny/preparation-and-marlin-firmware-for-delta-printer/
огромное ему спасибо за статью.
Но понял что Автонатстройка уровня стола на них не работает.
Мне подсказали попробовать Марлин 2.0 , говорят нормально работает!
И сного настроив Марлин 2.0. увидел что автоуровень не работает.
После долгих поисков и логики, все таки настроил работу автоуровня, но пришлось урезать его функционал.
В Марлине по умолчанию стоят автокалибровки Auto Calibration, Set Delta Height (измеряет максимальную высоту печати), Z_PROBE_ALLEN_KEY, Probe Z-Offset(измеряет высоту концевого датчика на сопла). В марлине после Auto Calibration по NxN количеству точек, от 1 до 7, стоит Set Delta Height, а потом автоуровень Z_PROBE_ALLEN_KEY, и как я понял, для работы Z_PROBE_ALLEN_KEY необходим серво датчик, а у меня только обычный кнопочный(микрик).
Если полностью отключить Z_PROBE_ALLEN_KEY, то принтер вообще перестаёт реагировать на концевой датчик сопла. Пришлось отключать часть функций в Z_PROBE_ALLEN_KEY, т.е. закоментировал ту часть в которой указывались координаты для взятия проб серводатчиком.
Но и потом не обошлось без приключений. Концевик сопла не работал на Set Delta Height и Probe Z-Offset.
Пришлось отключить Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN и вместо него использовать Z_MIN_PROBE_ENDSTOP.
В кратце Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN использует разьём Z-min на плате Pin 18, у меня датчик подключен к нему, и с Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN не хочет работать автоуровень. А Z_MIN_PROBE_ENDSTOP подключен к Pin 32, я не стал искать где этот пин на плате и подключать к нему, а просто в файле pins_RAMPS.h(Marlinsrcpins) поменял пины местами, т.е. вот так
файл pins_RAMPS.h
--------------
#define Z_MIN_PIN 32
//#define Z_MIN_PIN 18 //по умолчанию
#define Z_MAX_PIN 19
//
// Z Probe (when not Z_MIN_PIN)
//
#ifndef Z_MIN_PROBE_PIN
#define Z_MIN_PROBE_PIN 18
//#define Z_MIN_PROBE_PIN 32 //по умолчанию
#endif
---------------------------
Судя по видео из инета, раньше калибровка должны была быть такой, после автокалибровки Auto Calibration по N*N точкам, автокалибровка начинает измерять высоту по оси Z(Set Delta Height), а после включается Z_PROBE_ALLEN_KEY.
После такого варварского(закоментирования) отключения половины Z_PROBE_ALLEN_KEY, автокалибровка выглядит так.
Сначала Auto Calibration по N*N точкам, потом Хоум, и потом принтер пишет ошибку, но ничего страшного, надо вручную сохранить то что он насканировал, это можно сделать вменю принтера, потом можно самостоятельно включить Set Delta Height, а потом Probe Z-Offset.
Probe Z-Offset -это полуавтоматическая колибровка высоты датчика стола, работа выглыдит так.
После запуска Probe Z-Offset, голова принтера едет в Хоум, после опускается до стола, до сработки датчика сопла, потом немного поднимается и опускатеся на небольшое расстояние от стола, и останавливается, надо снять датчик сопла не сдвинув голову принтера, положить на стол под сопло лист бумаги и вручную энкодером переместить сопло вниз до небольшого зажима бумаги соплом, и нажать на энкодер, потом голова принтера поедет до Хоум.
Таким образом, принтер вычислит на какой высоте сработал датчик и вы ему скажите на какой высоте находится сопло, и он точно вычислит срабатываемую высоту датчика.
После каждой операции Auto Calibration, Set Delta Height, Probe Z-Offset, надо сохранить настройки в
Prepare->Delta Calibration->Store Settings
или
Control->Store Settings.
Далее напишу то что изменил, и постараюсь описать для чего это надо.
Взял готовый прессет настроек из папки
MarlinsrcconfigexamplesdeltaFLSUNauto_calibrate
и переделал для своего принтера
файл Configuration.h
------------------------------------------------------------------------
//===========================================================================
//============================= SCARA Printer ===============================
//===========================================================================
#define BAUDRATE 115200 //скорость обмена данными между принтером и компьютером ,эти числа
//стандартные можно изменить
#ifndef MOTHERBOARD //название материнской платы принтера, у меня тригорилла,
//она отличается от настроек
#define MOTHERBOARD BOARD_TRIGORILLA_14 //рампса1.4 включением двух функций на 44 pin
#endif
#define CUSTOM_MACHINE_NAME 'Delta Anycubic' //название принтера ,будет надпись на дисплее принтера
#define EXTRUDERS 1 //количество эктсрудеров
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //диаметр используемого филамента
#define POWER_SUPPLY 0 //тип блока питания, 0 - стандартный китайский блок питания, 1-блок питания АТХ, 2-блок питания от ХВОХ 360
//===========================================================================
//============================= Thermal Settings ============================
//===========================================================================
#define TEMP_SENSOR_0 5 //тип термистора, 5-100Ком стандартный у китайских, в файле можно прочитать их разновидности.
#define TEMP_SENSOR_BED 5 //тоже самое, но для стола
#define HEATER_0_MINTEMP 5 //минимальная температура сопла
#define BED_MINTEMP 5 //минимальная температура стола
#define HEATER_0_MAXTEMP 275 //максимальная температура сопла
#define BED_MAXTEMP 150 //максимальная температура стола
//===========================================================================
//============================= PID Settings ================================
//===========================================================================
// Ultimaker //пресет этих настроек для Ultimaker, такой же как у настроек
//стандартной прошивки Anycubic Kossel Pulley
#define DEFAULT_Kp 22.2 //их можно посмотреть в EEPROM, через репитр хост
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114
//===========================================================================
//======================== Thermal Runaway Protection =======================
//===========================================================================
#define THERMAL_PROTECTION_HOTENDS //защита от перегрева, короткого замыкания, обрыва,
//термисторов сопла
#define THERMAL_PROTECTION_BED //защита от перегрева, короткого замыкания, обрыва,
//термисторов стола
//===========================================================================
//============================== Delta Settings =============================
//===========================================================================
#define DELTA_SEGMENTS_PER_SECOND 160 //скорость работы мозгов принтера, из информации по другой
//статье для маломощных лучше ставить 120,
//я поставил 160, пробовал 200, тоже работает,
//но может не работать при быстрой печати.
#define DELTA_CALIBRATION_MENU //включения пункта калибровки в меню
#define DELTA_AUTO_CALIBRATION //включение автокалибровки
#if ENABLED(DELTA_AUTO_CALIBRATION)
// set the default number of probe points : n*n (1 -> 7)
#define DELTA_CALIBRATION_DEFAULT_POINTS 4 //можно ставить от 1 до 7, итоговое значение
//количества точек
//считается по формуле NxN
#endif
#define DELTA_CALIBRATION_RADIUS 78.0 //радиус в котром будет идти скинирование точек, при автокалибровке
#define DELTA_PRINTABLE_RADIUS 90.0 //радиус рабочеу поверхности стола, можно посмотреть
//на сайте продавца
#define DELTA_DIAGONAL_ROD 218.0 //диагональный радиус, длинна тяги, смотри картинку для понимания
#define DELTA_HEIGHT 320.00 //высота рабочего пространства по оси Z
#define DELTA_RADIUS 98.40 //дельта радиус, брал из EEPROM старой прошивки,
//смотри картинку для понимания
//===========================================================================
//============================== Endstop Settings ===========================
//===========================================================================
//включение необходимых концевиков
#define USE_ZMIN_PLUG // a Z probe //датчика стола или сопла
#define USE_XMAX_PLUG //датчик башни Х
#define USE_YMAX_PLUG //датчик башни Y
#define USE_ZMAX_PLUG //датчик башни Z
#define ENDSTOPPULLUPS
//=============================================================================
//============================== Movement Settings ============================
//=============================================================================
//эти данные можно взять в EEPROM своего принтера
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 80, 96 } //количество шагов для двигателей
#define DEFAULT_MAX_FEEDRATE { 200, 200, 200, 200 } //максимальна скорость работы двигателей принтера
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 3000, 3000 } //максимальное ускорение при работе
#define DEFAULT_ACCELERATION 3000 //максимальная скорость работы по умолчанию
#define DEFAULT_RETRACT_ACCELERATION 3000
#define DEFAULT_TRAVEL_ACCELERATION 3000
#define DEFAULT_XJERK 5.0 //скорость рывка при ускорении, для башни Х
#define DEFAULT_YJERK DEFAULT_XJERK //для башни Y
#define DEFAULT_ZJERK DEFAULT_XJERK //для башни Z
#define DEFAULT_EJERK 5.0 //для эктрудера
//===========================================================================
//============================= Z Probe Options =============================
//===========================================================================
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN //выключил Z-Min edstop, т.к. с ним не хотела
//работать автокалибровка
// пришлось использовать
//Z_MIN_PROBE_ENDSTOP
#define Z_MIN_PROBE_ENDSTOP //включение датчика Z_MIN_PROBE_ENDSTOP, он испльзуется если нет разьёма Z-Min edstop
//этот датчик судя по файлу pins_RAMPS.h по умочанию работает на 32 пине
//а Z-min ednstop на 18
//пришлось изменить и поменял их пины местами в файле pins_RAMPS.h
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 //расстояние от концевика сопла до самого сопла по оси X
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 //расстояние от концевика сопла до самого сопла по оси Y
#define Z_PROBE_OFFSET_FROM_EXTRUDER -16.40 //расстояние от концевика сопла до самого сопла по оси Z, пишется со знаком МИНУС
//здесь показанно как на половину оключил работу автокалибровки Z_PROBE_ALLEN_KEY,
//которая требует специального датчика, обычный концевик НЕ ПОДОЙДЁТ.
#define Z_PROBE_ALLEN_KEY
#if ENABLED(Z_PROBE_ALLEN_KEY)
// 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
// if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
// Kossel Mini
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10)
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
// #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20
// #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
// #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
// #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
// #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
// Move the nozzle down further to push the probe into retracted position.
// #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X
// #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y
// #define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH)
// #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10)
// Raise things back up slightly so we don't bump into anything
// #define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X
// #define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y
// #define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH)
// #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2)
// #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
// #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
// #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
// #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
#endif // Z_PROBE_ALLEN_KEY
----------------------------------------------------
#define Z_CLEARANCE_DEPLOY_PROBE 50 // Z Clearance for Deploy/Stow. судя по переводу, это промежуток
//на котором можно производить ручную калибровкупо оси Z,
//для Z-OffSet и других ручных калибровок.
#define Z_CLEARANCE_BETWEEN_PROBES 16 //растояние на котором остановится голова принтера при
//автокалибровке, т.е. если
//Z_PROBE_OFFSET_FROM_EXTRUDER -16 и Z_CLEARANCE_BETWEEN_PROBES 16 то датчик остановится
//примерно на высоте 2мм от стола
#define Z_CLEARANCE_MULTI_PROBE 16 //что то для мульти пробы
#define Z_PROBE_LOW_POINT 0 //высота на котром будет чувствоваться приконовение датчика к столу
//т.е. при Z-OffSet голова принтера опускается на Z=Z_PROBE_OFFSET_FROM_EXTRUDER
//и ещё + Z_PROBE_LOW_POINT опускатеся вниз для чувтсвание сработки датчика.
//я так понимаю, что вся эта хрень в этом блоке нужна для того, что бы точно получить сигнал
//сработки датчика ,без задержек на какиенибудь внутренние левые вычисления,
//т.е. в этот момент мозги только стараются принять сигнал от
//датчика сопла.
//все эти значения тесно связання друг с другом , и работают вместе, т.е. могут складываться.
----------------------------------------------------
#define X_ENABLE_ON 0 //судя по другим статьям, эти праметры задают разрешение на вращение двигателя
//по башням X, Y, Z и экструдера
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0
#define DISABLE_X false //судя по другим статьям, это разрешает отключение двигателей сразу же,
//как только нужда в них пропадает, не наш вариант, короче. Должно быть false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false
#define INVERT_X_DIR true // DELTA does not invert, изменение вращения двигателей, по умолчанию стоит false, но мне пришлось ставить true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
#define X_HOME_DIR 1 // deltas always home to max, показываает что концевики башен X, Y и Z на ходятся на верху
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1
//===========================================================================
//=============================== Bed Leveling ==============================
//===========================================================================
Ничего не трогал, нужны серводатчики или ёмкостные, вообщем нужны датчики с адаптивным измерением высоты над столом.
---------------------------------------------
// @section homing
// The center of the bed is at (X=0, Y=0)
#define BED_CENTER_AT_0_0 //показывает в каких координатах находится центр стола
// Delta only homes to Z
#define HOMING_FEEDRATE_Z (60*60) //скорость премещения при движении головы в Хоум,
//измеряется в мм/м, для наглядности поставил мм/с (60скорость*60секунд)
//=============================================================================
//============================= Additional Features ===========================
//=============================================================================
#define EEPROM_SETTINGS //даёт возможность записи изменений в EEPROM.
#define EEPROM_CHITCHAT //тоже чтото оттуда
//прессеты для предподогрева, для PLA
#define PREHEAT_1_TEMP_HOTEND 180 //температура предподогрева хотэнда
#define PREHEAT_1_TEMP_BED 70 //температура предподогрева стола
#define PREHEAT_1_FAN_SPEED 255 //скорость вентилятора охлаждения пластика после сопла
//по умолчанию стоит 255 но визжит
//прессеты для ABS
#define PREHEAT_2_TEMP_HOTEND 220
#define PREHEAT_2_TEMP_BED 100
#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255
//=============================================================================
//============================= LCD and SD support ============================
//=============================================================================
#define LCD_LANGUAGE en //настройки языка меню
#define DISPLAY_CHARSET_HD44780 WESTERN //настройки символов для меню
#define SDSUPPORT //включает возможность использование SDкарты
#define ENCODER_PULSES_PER_STEP 1 //скорость перемещия по меню при кручении энкодера
#define ENCODER_STEPS_PER_MENU_ITEM 5
#define SPEAKER //включил спикер, я заметил чтоон работает когда нажимаешь сохрание настроек в меню
//=============================================================================
//======================== LCD / Controller Selection =========================
//======================== (Character-based LCDs) =========================
//=============================================================================
#define REPRAP_DISCOUNT_SMART_CONTROLLER //включение дисплея 2004
//#define PANEL_ONE //выключение какогото дисплея, включен по умолчанию, но надо выключить.
немного возникла проблема с включением вентилятора на хотэнде настройки в файле Configuration_adv.h
Configuration_adv.h
-------------------------------------------------------
#define E0_AUTO_FAN_PIN 44 //44 пин к которому подключен вентилятор для охлаждения радиатора хотэнда,
//если стоит -1 значит автоматическое включение отключено
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 //температура срабатывания вентилятора радиатора хотэнда
#define EXTRUDER_AUTO_FAN_SPEED 255 //скорость вращения вентилятора по умолчанию максимальна 255
//вентиль начинает визжать(всё таки Китай), я поставил 150
если у вас 1 хот энд и вы это указали в прошивке, то в этом блоке включайте для него вентилятор, остальные не трогайте иначе будет ошибка при компилировании.
в файле pins_TRIGORILLA_14.h ничего менять не надо, но для понимания, как работает включение вентилятора радиатора хотэнда, могу сказать,
что на 44 pin подключенны две функции,
это FAN2_PIN это возможность включать и управлять скоростью вентилятора из меню принтера,
и ORIG_E0_AUTO_FAN_PIN которая потом переходит в E0_AUTO_FAN_PIN и включает вентилятор автоматически при превышении температуры EXTRUDER_AUTO_FAN_TEMPERATURE.
картинка для наглядности
Еще больше интересных статей
Изменения в следующей версии 3D-принтер PonyBot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
•Порт...
Скорость, температура и перевод RAMPS 1.5 на 24В
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Собери свой Re-D-Bot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
В представленной вашему вниманию статье, изложена по...
Комментарии и вопросы
Спасибо, лучший просто
а вообще, я не раз говорил и н...
я мав час та натхнення :)
Всем привет!Обновил недавно св...
Есть у меня такая вот деталь,Н...
Ищу человека, который поможет...
Всем привет. вначале кратко пр...