Jump to content

Linear Advance на Creality 4.2.2/4.2.7, або LA для бідних


Recommended Posts

Одного прекрасного моменту мене дістали круглі випуклі кутики принтів, а тратитись на "круту" плату керування не хотілось, та і не було можливості. Тому я почав ритись на всяких форумах в пошуках вирішення проблеми, суть якої заключається в тому, що драйвери степерів на моїй платі 4.2.2 розпаяні, і працюють в режимі Standalone. Вирішення проблеми було знайдено - фізична модифікація плати. Суть вирішення полягала в тому, що потрібно припаяти провідник до "ноги" STM32 провідник до піна драйвера екструдера який відповідає за використання режиму UART. Ну і, очевидно, модифікація прошивки для утилізації змін, ну і щоб магічний димок залишався на своїх місцях.

 

Знайшов в інтернеті інструкцію від пана Wong Sy Ming, в якій він описав метод даної модифікації. Лейаут плати 4.2.2, звичайно з того часу не змінився, але прошивка Marlin не стояла на місці, і зміна файлів для коректної роботи даної модифікації (відповідно інструкції) створювали помилки і прошивка відмовлялась компілюватись. Після трьох днів невдалих спроб компіляції, я був готовий купити нову плату, але ЗП ще не близько, а їсти хочеться, тому я ще трошки порився на просторах і знайшов модифіковану інструкцію для новішої версії прошивки. Там, правда описувався інший метод фізичної модифікації, але суть залишалась та сама. Нажаль, і та інструкція була описана не досить детально, і прошивка все одно не генерилась. Але, на щастя, у коментах під постом людина з цим всім розібралась і виставила свої результати у відкритий доступ (за що йому дуже дякуємо).

 

Нижче, для вашої зручності, я описав хід модифікації яку виконав я і розписав кожен крок щоб у вас не було труднощів, якщо, ви, звичайно, наважитесь на це. 🙂

 

!!!Ви робите всі фізичні і логічні модифікації на свій страх і ризик. Я не несу ніякої відповідальності за пошкоджені Вами деталі принтера!!!

 

З юридичною частиною закінчили, перейдемо до самого процесу.

 

Для початку, вам потрібно буде: тонкий провідник (я маю на увазі ТОНКИЙ, свій я дістав з юсб подовжувача data провідник), паяльник з тонким жалом, тонкий припой (для контролю скільки ви його використовуєте) і всякі розхідні матеріали які вам потрібні для пайки (у мене це припой, кислота для пайки, мідна стружка), хороше освітлення робочої зони, лупа, або інший пристрій що дозволить вам краще бачити те що ви паяєте, "третя рука", ну і інше що на вашу думку вам допоможе.

 

Витягаємо плату з принетра, бажано запам'ятовувати що куди підключене, щоб нічого не перепутати, і не випустити магічний димок.

 

Фіксуємо у зручне положення для пайки та індентифікуємо місця де потрібно припаяти. Лудимо провідник, припаюємо на місце. Важливо припаяти до резистора R19 на контакт ближче до драйвера, це на платі 4.2.2, на 4.2.7 там трошки по іншому, там 2 резистора,паятись потрібно до R52 (не провірено мною).  Готово. Перевірте правильність виконання, чи кінці не торкаються інших відкритих контактів, чи не замостували ноги контролера, це дуже важливо для зберігання диму!

 

фото моєї модифікації на платі 4.2.2: 

image.thumb.png.1ab873a1c4e0c856632b9cfcc3f48bbe.png

 

фото з інструкції для плати 4.2.7:

image.thumb.png.825ac7b2237a0084a5571b67970bd76a.png

 

Збираємо все на місце, підключаємо все туди, звідки воно було витягнуте.

 

Тепер, модифікації прошивки. Надіюсь ви вмієте генерити прошивку з вихідного коду, якщо ні, то самий час навчитись! Є невеликий ньюанс, з Marlin 2.0.9.х. Компіляція проходить без помилок, але при прошивці просто чорний екран. Пояснення тут. Використовуємо Marlin 2.0.8.х або Jyers 1.3.4 (особисто я користуюсь цим). Пишуть, що якщо хочете використовувати версію вищу потрібно при компіляції прошивки вибирати STM32F103RET6_creality_maple а не як зазвичай STM32F103RET6_creality. Нижче наведені модифікації до файлів які виконав я (без урахування особистих)

 

platformio.ini

на початку файлу, після #targets

[env:my_build_env]
platform = infineonxmc
framework = arduino
lib_deps =
fysetc/SoftwareSerialM @ ^1.0.0

скролимо вниз, шукаємо build_flags, і там пілся = пишемо -DHAVE_SW_SERIAL.

Зберігаєм, закриваєм.

 

Configuration.h

#define TMC_UART_PIN_E PA3 - вставляємо це на початку файлу, після #programa once. Це для прошивки від Jyers, для Marlin можливо треба буде написати Е0, так як у файлі з пінами (Marlin/src/pins/stm32f1/pins_CREALITY_V4.h) може бути прописано #define E0_SERIAL_(TX|RX)_PIN TMC_UART_PIN_E0. Звичайно при компіляції воно вас запитає чи може ви мали на увазі Е0 чи Е. Достатньо просто дописати чи видалити 0 у файлі Configuration.h.

#define E0_DRIVER_TYPE TMC2208_STANDALONE - потрібно видалити STANDALONE так як ми хочемо що він працював у режимі SpreadCycle (читаємо опис вище у файлі).

+ зміни які потрібні особисто вам

Зберігаєм, закриваєм.

 

Configuration_adv.h

#define STEALTHCHOP_E - шукаємо цей рядок і закоментовуєм його 
#define LIN_ADVANCE - розкоментовуєм (заради цього все це і влаштовувалось)
#define CHOPPER_TIMING CHOPPER_DEFAULT_12V - тут 12в заміняємо на 24
#define TMC_DEBUG - це розкоментовуєм для ввімкнення команди м122 яка нам потрібна буде пізніше

 

Тепер витсавляємо струми для кожної в вісей (я поставив для всіх, ви можете поставити лише для Е, так як ми не модифікували всі драйвери а лише Е, тому для для інших вісей це не потрібно)

 

#define STEALTHCHOP_E - шукаємо цей рядок і закоментовуєм його 
#define LIN_ADVANCE - розкоментовуєм (заради цього все це і влаштовувалось)
#define CHOPPER_TIMING CHOPPER_DEFAULT_12V - тут 12в заміняємо на 24
#define TMC_DEBUG - це розкоментовуєм для ввімкнення команди м122 яка нам потрібна буде пізніше
#if AXIS_IS_TMC(X)
#define X_CURRENT 850
#if AXIS_IS_TMC(Y)
#define Y_CURRENT 780
#if AXIS_IS_TMC(Z)
#define Z_CURRENT 850
#if AXIS_IS_TMC(E0)
#define E0_CURRENT 990

+ зміни які потрібні особисто вам

Зберігаєм, закриваєм.

 

Прошиваємо плату. Підключаємся до принтера за допомогою софта з терміналом (у мому випадку окто). пишемо команду M122 і дивимося що напише:

Recv: 		E
Recv: Enabled		false
Recv: Set current	990
Recv: RMS current	939
Recv: MAX current	1324
Recv: Run current	16/31
Recv: Hold current	8/31
Recv: CS actual	8/31
Recv: PWM scale
Recv: vsense		0=.325
Recv: stealthChop	false ⟸  ЗВЕРНІТЬ УВАГУ
Recv: msteps		16
Recv: interp		true
Recv: tstep		max
Recv: PWM thresh.
Recv: [mm/s]
Recv: OT prewarn	false
Recv: pwm scale sum	10
Recv: pwm scale auto	0
Recv: pwm offset auto	36
Recv: pwm grad auto	14
Recv: off time	4
Recv: blank time	24
Recv: hysteresis
Recv:  -end		2
Recv:  -start		1
Recv: Stallguard thrs
Recv: uStep count	40
Recv: DRVSTATUS	E
Recv: sg_result
Recv: stst
Recv: olb		*
Recv: ola		*
Recv: s2gb
Recv: s2ga
Recv: otpw
Recv: ot
Recv: 157C
Recv: 150C
Recv: 143C
Recv: 120C
Recv: s2vsa
Recv: s2vsb
Recv: Driver registers:
Recv: 		E	0x80:08:00:C0
Recv: 
Recv: 
Recv: Testing E connection... OK ⟸ ЗВЕРНІТЬ УВАГУ
Recv: ok

 

Звертаємо увагу на те що позначено стрілками, якщо все так як у мене, то все гуд, модифікація успішна. Залишилось тестовий принт на визначення К. Але для початку не забудьте настроїти принтер, Z Offset, E-Steps, PID. Тепер можна і згенерувати і друканути тестовий принт. У мене тест виглядав так:

Велике фото

photo_2021-10-27_23-24-59222.thumb.jpg.c3193dd542195080ec549dd3487d42b5.jpg 

 

 

Після визначення К, друканув кубик:

З ЛА. Велике фото

photo_2021-10-28_01-10-35.thumb.jpg.5beef61c271e8d97fd717a6df7c88ba7.jpg

 

 

Credit & Sourse:

Перше що було знайдено - пост у соц мережі Фейсбук

- Пост на порталі Reddit від користувача LookAtDaShinyShiny та комент користувача greenbue_2020 під тим жеж постом

Файли з інструкціями від їх авторів (англійською):

 

Linear Advance Modification for Creality 4.2.2 boards v2.pdf

Creality4.2.2_4.2.7_TMC_UART_Mod.pdf

 

 

  • Like 1
  • Thanks 3
Link to post
Share on other sites
  • KomAndr featured this topic
  • KomAndr pinned and unfeatured this topic
  • 5 months later...
  • 4 weeks later...

Дуже порадували ви мене хлопці. Я Соркіна наслухався на ютубі і подумав що Ender 3 v2 шматок брухту, бо на ньому Linear Advance не світить без заміни плати, а якщо вас послухати то потрібно один проводок підпаяти й прошивку оновити, бо у мого Ender 3 v2 така сама плата v4.2.2...

 

Доречі проводок вже підпаяв й прошивку підкрутив під LA на Marlin 2.1.1

Під час компіляції прошивки зіткнувся з помилкою:

Marlin/src/HAL/STM32/../../inc/SanityCheck.h:1336:33: error: static assertion failed: It is strongly recommended to set DEFAULT_EJERK >= 10 when using LIN_ADVANCE. Enable ALLOW_LOW_EJERK to bypass this alert (e.g., for direct drive).

 

Трохи погуглив як то вирішити, ніби радять підняти конфігураційний параметр до 15, спробував підняти, скомпілювалось за допомогою плагіна Auto Build Marlin, який мені автоматично запропонував встановити Visual Studio Code v1.70.0 коли я відкрив Marlin через PlatformIO.

 

Прошивку залив на пристрій, команду M122 пропустив так як від неї я так зрозумів нічого не залежить, лише інформаційна дія, подумав що або побачу друкує принтер чи ні, якщо друкує то або побачу зміни у якості друку, або не побачу.

 

Увімкнув принтер, перевірив чи слухаються двигуни, все було як зазвичай включно екструдер. Далі пропустив "Але для початку не забудьте настроїти принтер, Z Offset, E-Steps, PID." бо тут для мене поки що знайоме лише одне слово "Z Offset", далі погуглив що до K-factor Calibration Pattern, ніби все легко, ось посилання https://marlinfw.org/tools/lin_advance/k-factor.html

підкинув свої параметри, скачав, закинув на флешку й почав друкувати. Надрукувався патерн хоч і без цифр але хоч якось десь з третьої спроби, після того як підігнав температури під свій пластик й вручну підкрутив калібровку стола. Чого так погано другується не зрозумів, можливо якось пов'язано в оновленнями, а можливо просто поки крутив принтер щоб підпаяти проводок замацав стіл мазутою з осі Z.

 

Цифри уявно домалював з фото в попередньму пості і здозумів що мій К-фактор десь 0.06. Підкинув цю цифру у Cura після встановлення плагіна Linear Advance - ютуб допоміг освоїти цю послідовність. Також з ютубу взяв код для налаштувань принтера Стартовий G-код

M900 K{material_linear_advance_factor}
M900 W{line_width} H{layer_height} D{material_diameter}

 

далі курі нарізав свою маленьку тестову модель на 7 хвилин друку й отримав по класиці дві новини: одна хороша і друга "така собі".

Хороша новина про те що принтер ще друкує після всього того що я з ним робив сьогодні й попередні дні. Й "така собі" новина про те що я не помітив різниці, що я друкував на прошивці від виробника, що я друкував на останному найкрутішому Marlin 2.1.1 до LA апгрейду, що я друкував після LA апгрейду - все однаково, геть ніякої різниці не побачив. Лише останній друк погано за стола тримався, але то може через замацаний стіл чи то просто вже мазоль на столі через то що в одному й тому самому місці другий день тестову модель ганяю.

 

Корочше настав час відпочивати, якось наступним разом подумаю що я зробив не те чи де затупив. Якщо раптом хтось це прочитає й підкаже де я припустився помилки - буду вдячний.

А якщо з часом сам розберусь то намагатимусь доповнити цей пост.

 

PS: хто на Ender 3 v2 буде вперше встановлювати останній Марлін маючи стокову прошивку, будьте готові що вам доведеться окремо перепрошивати графічний монітор принтера. Його потрібно буде розкрутити й знайти куди вставити там sd-карту, яка обов'язково має бути відформатована кластером 4к, інакше не ш'ється - перевірено. Шити дуже легко, для тих хто не знайшов інструкцию, копіюємо папку DWIN_SET на свіжовідформатовану флешку, сама папка у мене була за адресою "Configurations-release-2.1.1/config/examples/Creality/Ender-3 V2/LCD Files" і десь поруч був файл README.md в якому описана оригінальна інструкція яку я вам щойно переказав.

 

  • Like 1
Link to post
Share on other sites
1 година тому, pa-pe сказав:

мій К-фактор десь 0.06

Щось для ендеоа з боуденом це явно замалі значення. Треба робити тест саме для боудена, там інші значення. 😁 

Результат роботи LA добре помітно на рівних кутах 90°, на відсутності грядок при 100% заповнені біля періметрів, саме у місцях де сопло міняє напрям руху на протилежний. 

К-фактор 0.06 більше підходить для діректу, тому на боцюудені і не помітив різницю. 😁 

  • Like 1
Link to post
Share on other sites
16 часов назад, KomAndr сказал:

Щось для ендеоа з боуденом це явно замалі значення. Треба робити тест саме для боудена, там інші значення. 😁 

Результат роботи LA добре помітно на рівних кутах 90°, на відсутності грядок при 100% заповнені біля періметрів, саме у місцях де сопло міняє напрям руху на протилежний. 

К-фактор 0.06 більше підходить для діректу, тому на боцюудені і не помітив різницю. 😁 

дійсно, ще трохи понапрягався щоб вийшов більш меньш якісний друк K-factor Calibration Pattern, сама рівна полоска була четверта знизу, що відповідає сітці 0.6 я так розумію, бо полоска нижче 0.4 й полоска вище 0.8

встановив в Cura параметр Linear Advance Factor на 0.6 і знову друк такий що різніці не бачу 😆, буду шукати далі...

IMG_20220810_132647.jpg

Link to post
Share on other sites
1 година тому, pa-pe сказав:

сама рівна полоска була четверта знизу,

Щось тут не те! 

1. Перший шар зовсім нікуди не годний, воно просто викладає ковбаску, а повинен бути нормальний шар 0.2, тоді і буде добре видно різницю у друку. 

2. Швидкості друку країв і середини повинні кардинально відрізнятися, як що стіл дозволяє - треба збільшити відстань друку у налаштуваннях г-коду.

 

Link to post
Share on other sites
1 годину тому, KomAndr сказав:

Щось тут не те! 

 

Я поки думаю що з прошивкою не все рівно. Я спробував підключитись терміналом і у мене нічого не вийшло. Далі почав передивлятись перший пост від Skivaks щоб знайти що я міг загубити, і зрозумів що я геть не додав блок:

[env:my_build_env]
platform = infineonxmc
framework = arduino
lib_deps =
fysetc/SoftwareSerialM @ ^1.0.0

а не додав я його тому що в інструкції немає слова що його потрібно додати, ось за другим разом додав цей блок, залив прошивку і принтер почав відгукатись на команди, але M122 не хоче сприймати просто ніяк, хоча "#define TMC_DEBUG" розкоментовано - тричі перевірив. Наприклад команду парковки G28 принтер сприймає і виконує, а M122 ніяк не хоче ..

 

Снимок экрана от 2022-08-10 18-22-36_.png

 

1 година тому, pa-pe сказав:

 



[env:my_build_env]
platform = infineonxmc
framework = arduino
lib_deps =
fysetc/SoftwareSerialM @ ^1.0.0

 

доречі коли вставив цей блок, код не хотів компілюватись, писав якусь помилку, я придивився на інші рядки конфігурації і додав дві табуляції перед "fysetc/SoftwareSerialM @ ^1.0.0" як було у іншому блоку конфігурації цього ж файлу, й копіляція пішла.

 

потім спробував підмінити default_envs = STM32F103RE_creality -> default_envs = STM32F103RE_creality_maple бо про це теж щось було у першому пості, змінився розмір прошивки з 139Кб на 163Кб, але принтер все ще не впізнає команду M122

 

PS: хто помітить що у мене замість "RET6" використано "RE" - це не помилка, марлін 2.1.1 коли бачить саме "RET6" ругається:

Error: Build environment 'STM32F103RET6_creality_maple' is incompatible with BOARD_CREALITY_V4. Use one of these: STM32F103RE_creality, STM32F103RE_creality_xfer, STM32F103RC_creality, STM32F103RC_creality_xfer, STM32F103RE_creality_maple

 

Link to post
Share on other sites

Якось замудрено виходить... Треба викликати @Skivaks автора на допомогу. 🙂

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...