Кремень КД Реклама
Кремень КМ Реклама

Марлин 2.0 для Anycubic Kossel Pulley (младшая модель) с рабочим автоуровнем. Стандартный датчик от мышки, микрик, на сопло.

onvoid
Идет загрузка
Загрузка
30.08.2018
21234
93
RepRap

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

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

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

7
Статья с такими же анстройками и понимание как у xolodny

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.

картинка для наглядности
Марлин 2.0 для Anycubic Kossel Pulley (младшая модель) с рабочим автоуровнем. Стандартный датчик от мышки, микрик, на сопло.

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

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

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

7
Комментарии к статье