Технологии / Прошивка и автолевелинг Anycubic Kossel Linear Plus
Пользуюсь Anycubic Kossel Linear Plus уже почти год, хоть и печатаю довольно редко, но никаких нареканий в работе нет.

Вопреки множественным обзорам на ютубе о сложности сборки и настройке дельта-принтеров, мой экземпляр собрался буквально за час и после единстевнной процедуры автолевелинга печатал без нареканий, с отменным качеством. Использую в основном PLA пластик, t = 200-210, обдув 100%, экструзия 93%, остальное в слайсере :)
И вот, на днях, решил его проапгрейдить! Начал с драйверов для шаговых двигателей TMC2208.Купил с али 5шт за ~1500 руб: https://s.click.aliexpress.com/e/bvfG2zuA


Табличка установки Vref на драйвере, в зависимости от тока мотора и сопротивления Rsense.

Ладно, для начала, сделал бэкап стоковой прошивки через avrdude.exe, спасибо товарищу CraVeg с 3dtoday.ru.
Файл появится в папке с avrdude.exe. Для загрузки прошивки в принтер юзаем ту же команду, добавив аргумент -D и меняем r на w:
На следующий день в процессе гугления вопроса наткнулся на исходники прошивки от Anycubic на github!!
- Быстренько поставил обратно TMC2208, открыл Configuration.h, поменял INVERT_X_DIR на false

Взял конфиги из папки Anycubic, что исправлил:
- В самом начале Configuration.h
- Acceleration выставил как в стоковой прошивке от кубика

Идём в Prepare - Delta Calibration - Auto Calibration, оооченьь дооолго ждёёёмм.. Видимо, несколько проходов калибровки и неоднократный замер одной точки даёт мегаточность при печати, не разбирался :) После калибровки, Store Memory. Проверяем, перезагружаем.
Запускаю печать и всё работает! На расстоянии пары шагов, шума двигателей вообще не слышно, основной шум от охлаждения экструдера. Теперь буду думать как уменьшить от него шум, оставив эффективное охлаждение! :)
UPD:
Прошивки от ANYCUBIC на Github'е: https://github.com/ANYCUBIC-3D/ANYCUBIC_Kossel_Source_Code
Очень полезна при настройке и проверке программа Printrun или Pronterface https://www.pronterface.com/

И вот, на днях, решил его проапгрейдить! Начал с драйверов для шаговых двигателей TMC2208.Купил с али 5шт за ~1500 руб: https://s.click.aliexpress.com/e/bvfG2zuA
Основные характеристики TMC2208 согласно 3дшник wiki:
- Логика совместима с драйвером A4988. Напряжение от 3,3В до 5В
- Ток до 2А. Зависит он установленных Rsense
- Конфигурации микрошага 1/2, 1/4, 1/8, 1/16. Все они с интерполяцией до 1/256
- 1/256 без интерполяции только с управлением по UART
- Напряжение для двигателя от 4,75 до 36В
Режим stealthChop2 - автоматически оптимизирует настройки для снижения шума. Работает по умолчанию и не требует конфигурации.
Режим spreadCycle. Уменьшает резонанс и повышает плавность. Может быть включен только через UART и OPT.
Чип расположен на нижней части драйвера. Это сделано потому что низ чипа лучше рассеивает тепло. Радиатор нужно устанавливать на печатную плату. Vref регулируется через отверстие в печатной плате.
Радует, что данные драйвера полностью взаимозаменяемы со стандартными A4988, которые стояли в моём кубике по-умолчанию, поэтому можно одни вытащить, другие поставить, НО ХРЕН ТАМ! :(
Во-первых, надо настроить ток Vref на драйвере - чем выше ток, тем больше крутящий момент, но и больше нагрев двигателя. В большинстве случаев (по интернету) хватает тока 0,79В - тем более для дельты, где не нужен огромный крутящий момент.
Отключаем шлейфы двигателей, включаем питание принтера. Берём мультиметр, один щуп в любое место на плате с землёй, второй в дырочку на драйвере. Берём керамическую отвёртку и крутим потенциометр, сверяясь с показаниями мультиметра.
В большинстве случаев хватит тока 0,79В, что соответствует движку на 800mA.
На моих шаговых двигателях маркировки не было, поэтому выставил Vref 1.1В, прочитав в отзыве на алишке. Спустя два часа непрерывной печати, движки нагрелись так, что прикоснуться нельзя было... Решил почитать, разобраться и в итоге снизил ток до 0,79В.

Во-вторых, как оказалось, TMC2208 крутит шаговые двигатели в противоположную сторону (от A4988).
Внимание, спойлер! Как выяснилось, это A4988 крутят движки в "другую" сторону, в прошивке Marlin под A4988 стоит инверт для осей. Для TMC2208 инверт надо убрать, работают по дефолту в "нужную" сторону.
Принтером пользовался со стоковой прошивкой и проблем не знал, автолевелинг раз в полгода, всё прекрасно работало. Однако, поменять направление движения двигателей в стоковой невозможно, а Anycubic на своём сайте прошивку даёт скачать только в hex, уже скомпилированную.. Капец, короче.
Ладно, для начала, сделал бэкап стоковой прошивки через avrdude.exe, спасибо товарищу CraVeg с 3dtoday.ru.
avrdude.exe -C "../etc/avrdude.conf" -p atmega2560 -c wiring -PCOMпорт -b115200 -Uflash:r:"имя_файла_прошивки".hex:iФайл появится в папке с avrdude.exe. Для загрузки прошивки в принтер юзаем ту же команду, добавив аргумент -D и меняем r на w:
avrdude.exe -C "../etc/avrdude.conf" -p atmega2560 -c wiring -PCOMпорт -b115200 -D -Uflash:w:"имя_файла_прошивки".hex:i- Скачал и поставил Марлин 1.1.8 от умельцев с настройками под Kossel Linear Plus - поставил пробную печать - движки тише не стали, более того, начали стучать, а сама деталь развалилась по слоям, вырубил принтер.
- Запулил прошивку Репитер с конфигом от умельцев - не устроил внешний вид, неудобная менюшка, печать даже не запускал, т.к. не смог провести автокалибровку, а разбираться с доп. ПО было лень.
- Вернул стоковую прошивку и стоковые драйвера, запустил автолевелинг, распечатал модель, убедился, что всё работает, отложил замену драйверов на будущее, пока не найду стоковую прошивку в которой просто смогу поменять движение моторов.
На следующий день в процессе гугления вопроса наткнулся на исходники прошивки от Anycubic на github!!
- Быстренько поставил обратно TMC2208, открыл Configuration.h, поменял INVERT_X_DIR на false
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false- Залил в принтер, провёл автолевел, запустил печать - всё заработало! :)
Перезагружаю принтер иииииииии.. настройки левелинга не сохранились в EEPROM. Провёл ещё раз автолевел, сохранил, скачал Pronterface (ссылка, FAQ по командам). Напрямую, командами M500, M501, M502 убедился, что принтер записывает данные, НО! после ребута New Z Offset по нулям и через M501 bilinear leveling mesh по нулям.
Залил стоковую прошивку с бэкапа, поставил старые драйвера, провел автолевел - store memory - после ребута всё по нулям. Пару дней колупался в чем проблема, EEPROM включен, всё делаю верно, принтер, сволочь такая, пишет, что всё сохранил и после ребута опять пусто.
Перед каждой печатью проводить автолевелинг - не вариант, датчик-то кнопочный, одевать-снимать его, заказывать бесконтактный долго, да и ждать каждый раз пока пройдётся по всему столу не хочется в любом случае.
Не смог победить недуг на прошивках от Anycubic. Пока выянял, как это сложно настраивать прошивку и где искать конфиги для моей дельты, узнал, что марлин гамно, репитер отстой и самый ништяк для дельты с tmc2208 и автолевелом - это смузивэар и вообще надо менять плату управления.
Пофигам, поскольку прошивка от кубика в основе своей это Marlin, да и она самая распространённая, решил скачать оригинал и затестить. Зашёл на github Marlin, скачал последнюю версию 1.1.9 (по крайней мере её обновляют), в readme черным по белому написано: Если у вас дельта принтер, возьмите файлы конфига из папки «example_configurations» - «delta» и настройте их под свой принтер.
- В самом начале Configuration.h
/**
* Choose your version:
*/
// normal size or plus?
#define ANCYUBIC_KOSSEL_PLUS
// Anycubic Probe version 1 or 2 see README.md; 0 for no probe
#define ANYCUBIC_PROBE_VERSION 2
// Heated Bed:
// 0 ... no heated bed
// 1 ... aluminium heated bed with "BuildTak-like" sticker
// 2 ... ultrabase heated bed
#define ANYCUBIC_KOSSEL_ENABLE_BED 1
- Был включен инверт концевиков ENDSTOP_INVERTING (после пары смачных таранов стола и попыток экструдера улететь через верх принтера, выяснил в чем проблема - выключил инверт на всех датчиках)// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.- Был приятно удивлён имеющимися настройками под TMC2208, расскоментировал/**
* Stepper Drivers
*
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
*
* A4988 is assumed for unspecified drivers.
*
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC5130, TMC5130_STANDALONE
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
*/
#define X_DRIVER_TYPE TMC2208
#define Y_DRIVER_TYPE TMC2208
#define Z_DRIVER_TYPE TMC2208
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2208
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988- Сразу скачал библиотеку для TMC2208 (ссылка), закинул в папку с Marlin.ino- Acceleration выставил как в стоковой прошивке от кубика
/**
* Default Acceleration (change/s) change = mm/s
* Override with M204
*
* M204 P Acceleration
* M204 R Retract Acceleration
* M204 T Travel Acceleration
*/
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 1500 // X, Y, Z acceleration for travel (non printing) moves- Выставил Z_PROBE_OFFSET_FROM_EXTRUDER как у кубика -15.9/**
* Z Probe to nozzle (X,Y) offset, relative to (0, 0).
* X and Y offsets must be integers.
*
* In the following example the X and Y offsets are both positive:
* #define X_PROBE_OFFSET_FROM_EXTRUDER 10
* #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
* +-- BACK ---+
* | |
* L | (+) P | R <-- probe (20,20)
* E | | I
* F | (-) N (+) | G <-- nozzle (10,10)
* T | | H
* | (-) | T
* | |
* O-- FRONT --+
* (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
#if ANYCUBIC_PROBE_VERSION == 0
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
#elif ANYCUBIC_PROBE_VERSION == 1
#define Z_PROBE_OFFSET_FROM_EXTRUDER -19.0 // Z offset: -below +above [the nozzle]
#else
#define Z_PROBE_OFFSET_FROM_EXTRUDER -15.9 // Z offset: -below +above [the nozzle]
#endif- Исправил направление энкодера в меню//
// This option reverses the encoder direction for navigating LCD menus.
//
// If CLOCKWISE normally moves DOWN this makes it go UP.
// If CLOCKWISE normally moves UP this makes it go DOWN.
//
#define REVERSE_MENU_DIRECTIONЗалил на принтер, включил, там же, в readme прописаны инструкции при первом запуске.
Начальная настройка принтера на Marlin 1.1.9:
Делаем Control - Initialize EEPROM, подцепляем датчик автолевелинга, затем идём в Prepare - Delta Calibration делаем Set Delta Height, затем Z Probe Offset, после на экране появляется Move Z, отцепляем датчик, с помощью энкодера опускаем экструдер, подкладываем листочек бумаги и настраиваем нужную высоту. Тыкаем Store Memory. На всякий случае перезагрузил и проверил через Pronterface M501 - ура, всё сохранилось!
Идём в Prepare - Delta Calibration - Auto Calibration, оооченьь дооолго ждёёёмм.. Видимо, несколько проходов калибровки и неоднократный замер одной точки даёт мегаточность при печати, не разбирался :) После калибровки, Store Memory. Проверяем, перезагружаем.
Запускаю печать и всё работает! На расстоянии пары шагов, шума двигателей вообще не слышно, основной шум от охлаждения экструдера. Теперь буду думать как уменьшить от него шум, оставив эффективное охлаждение! :)
Прошивка от Marlin оказалась вполне удобной, мало чем отличается от той, что предлагает кубик. Есть несколько дополнительных пунктов, по больше части информативных, можно посмотреть сколько отпечатал принтер в метрах и минутах)) В сети полно марлинов с конфигами от умельцев, но сколько не скачивал под Anycubic Kossel Linear Plus, встают криво.. А стандартная от Marlin с мелкими корректировками идеально подошла. Два дня - полёт нормальный!
UPD:
Прошивки от ANYCUBIC на Github'е: https://github.com/ANYCUBIC-3D/ANYCUBIC_Kossel_Source_Code
Очень полезна при настройке и проверке программа Printrun или Pronterface https://www.pronterface.com/
Marlin 1.1.9 для Anycubic Kossel Linear Plus:
Configuration.h с вышеописанными изменениями
Стоковая прошивка с моего Kossel Linear Plus
