Кремень H1 Реклама
KREMEN H1M Реклама

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Bronco125
Идет загрузка
Загрузка
04.03.2023
4060
8
Техничка

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

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

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

18
Статья относится к принтерам:
Ender 3 Pro

Доброго времени. Спустя 4 года использования 3D принтера Ender 3 Pro, решил его модернизировать.

Забегая вперёд - всё получилось реализовать (Marlin2, TMC2208, UART, Direct Extruder) за минимальные деньги.

Собственно, в принтере меня всё устраивало. Он практически без доработок, но время идёт и захотелось перейти на Direct.

Начал погружаться в тему. Директ потянул за собой необходимость замены прошивки на стандартной 8битной плате на современный Marlin 2. Замену микросхем управления двигателями (драйверов), соответственно,  их изучение, выбор, анализ, изменение схемотехники. Изучение темы Vref. Подключение UART.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Начал с прошивки. За 4 года программное обеспечение слегка изменилось. Как шил Marlin 1 в начале 2019 года, чтобы включить настройки калибровки стола забыл напрочь. Информацию как реализовать в старую 8битную плату свежий Marlin я не нашёл.

MARLIN 2

Пришлось изучать вопрос самостоятельно. Установил VScode, скачал Marlin 2, изучил конфигурационные настройки https://marlinfw.org/docs/configuration/configuration.html#sources-of-documentation

Добавились интересные пункты. Но есть и нюансы - на все хотелки не хватает памяти и ног скромной Atmega 1284P.

Пришлось добавить интересующие пункты, такие как калибровка стола по углам, сетке, Linear Advance и др., но пожертвовать загрузочной картинкой, а также некоторыми пунктами/функциями в меню.  К слову, прошивка заняла 98% памяти. Не с первого раза, но получилось вписаться в жёсткие рамки.

Заливается прошивка в старую плату через USB-кабель, подключенный к компьютеру, нажав UPLOAD.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE                                                                                 Картинка №2

К тому времени, когда знакомство с конфигурированием, сборкой, заливкой Marlin 2 закончилось и получен определенный опыт, пришла посылка с драйверами TMC2208, распаянными на собственных платах.

Почему выбор пал на TMC2208, а не на более современные TMC2209? Изначально планировал, что драйверы будут работать в режиме Legacy (Standalone). Изучив даташиты, я не увидел смысла переплачивать за одну, пусть и полезную ногу в этом режиме, немногим больший ампераж на шаговик и совершенно ненужную мне возможность парковки осей без концевиков. В остальном, функции все абсолютно те же, что и TMC2208. То есть, та же тишина шаговиков, но за сумму в 2раза выше. Собственно, в итоге драйверы были подключены по UART и все функции стали доступны.

Физически реализация схемотехники оказалась совсем простой.

Старые и новые драйверы снял со своих плат. TMC2208 распаял на плату Ender 3. Обвязка и разводка согласно даташитам и схеме от платы Creality v.4.2.2 (фактически: заменены емкости С10, C14, C18, C22 - 22нФ, C34, C36, C38, C40 - 4,7мкФ, которые были взяты с родных плат TMC2208 с аналогичных ног. Взамен перемычек R28, R31, R34, R37 установлены сопротивления 100K (маркировка 104 или 01D). Перерезаны дорожки, ведущие от R15, R38, R21, R24 выше переходных отверстий, что впоследствии облегчило реализацию UART. Ноги драйверов №11, 12 спаял вместе.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectEEnder 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Приклеил родные радиаторы

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Далее в Marlin 2 заменил в строках осей A4988 на TMC2208_STANDALONE (см Картинку №2 выше) и всё поехало без каких-либо танцев с бубнами по своим направлениям в полной тишине.

Vref

Этот абзац, думаю, будет интересен многим, кто хочет отрегулировать нагрузку на обмотки своих двигателей, но точно не знает какое напряжения необходимо выставить на регулировочных винтах. Судя по постам в интернете, таких людей много :)

Как вычислить Vref? Очень просто - конечно же по формулам.

Я скачал полезную табличку в формате EXEL у немцев, по которой можно легко подобрать необходимый Vref как для A4988, так и для TMC220x. Вот ссылка https://www.theorie-musik.de/sonstiges/der-autor/a4988-auf-tmc2208/

Перейдя по ссылке, увидите 3Д-дрюкер ауфидерзейн майн диер либэ, пролистаете немного вниз и найдете где скачать таблицу.

Необходимо ввести в жёлтые колонки номинал токоизмерительного резистора (это два крупных резюка, расположенных выше драйверов, у меня они R100, т.е. 0.1 Ом) и старое опорное напряжение, чтобы получить такое же напряжение как было, но для TMC220x.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Если хотим что-то изменить, то вводим номинал своих резюков (ЭТО ВАЖНО!), узнаём максимальный ток шаговика по даташиту, отнимаем примерно 15-20%, подставляя в графу для A4988 напряжение, смотрим во второй графе Imax ток для шаговика, если он подходит, то вот оно наше Vref. Если драйвер подключен по UART, то вводим в Marlin 2 свои резюки и Irms из третьей колонки.

В моём случае максимальный ток шаговиков осей 0.84A, экструдера 1A. Я выставил 0,7в на осях и 0.9в на экструдере.

Если будете подключаться по UART,  этим абзацем можно особо не грузиться, в том случае всё легко настраивается программно.

UART

Этот абзац для людей, которые в состоянии чем-либо жертвовать. Как в шахматах - отдать, чтобы выиграть.

Проделав всё ранее описанное, я подумал: И это всё? Или проглотить красную таблетку?

С одной стороны я поставил TMC2208, которые дали тишину (но она меня раньше как-то не особо беспокоила), но могут дать больше, чем уже есть. С другой стороны у процессора не осталось ног, т.е. придётся их освобождать от чего-то очень нужного. Я решил, что реализация UART важнее и технологичнее для меня, чем поддержка SD карты. Т.к. принтер у меня всегда подключен к ноутбуку, то я ничего не потерял.

Отпечатав калибровочный кубик XYZ, недолго думая всё опять разобрал.

Теория предельно проста: Для того, чтобы включить обмен данными драйвера с атмегой, необходимо отрезать наш SD (перерезать 4 дорожки). Далее, на освободившиеся ноги вешаем соответствующие ноги драйверов. Отключаем в Marlin поддержку SD, прописываем пины для управления драйверами. Всё! Никаких больше бубнов и танцев!

Тыльная сторона платы (на большой, старый красный провод не обращаем внимания :) )

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

С лицевой стороны режем еще 2 дорожки. Всё! Прощай SD слот.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Таким варварским способом я освободил 4 ноги PB5, PB6, PB7, PA0

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Далее выпаял сопротивления R15, R38, R21, R24 и развел проводами непосредственно с ног Атмеги на верхние контактные площадки убранных сопротивлений.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Для тех, кто будет пытаться повторить этот фокус и при этом не дружит с паяльником, рекомендую подпаиваться не к ногам Атмеги, а зачистить дорожку для PA0 на драйвер экструдера, которая проходит чуть ниже R24, а для остальных драйверов припаяться к пинам разъема ISP.  (То же самое касается объединения 11,12 ног драйверов). Не забываем все соединения тщательно проверять мультиметром.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

На этом с физической частью электроники можно поставить точку.

Далее мы открываем наш VSCode, в котором компилировали прошивку

В файле Configuration.h

находим X_DRIVER_TYPE  и прописываем вместо A4988 или TMC2208_STANDALONE (если вы делали шаг за шагом по этой статье) TMC2208 и так для каждой оси и экструдера. 

//#define SDSUPPORT - находим эту строку и ставим перед ней // (высвобождается куча памяти и мы можем  теперь включить всё, что хотим и даже кастомную картинку)

#define EEPROM_INIT_NOW

и я оставил #define SLIM_LCD_MENUS  - ничего лишнего в меню

В файле Configuration_adv.h

#define LIN_ADVANCE  - включаем Linear Advance

#define ALLOW_LOW_EJERK  - вкл, если директ

далее находим #define INTERPOLATE true  и ниже выставляем RMS, Rsense для наших движков. У меня это X_CURRENT  507

X_RSENSE 0.10   и так для каждой оси, экструдер(E0) штатный 638 и 0.10 соответственно

И самое главное напоследок. Кто не дочитал до этого места, у того работать не будет!

Открываем файл pins_SANGUINOLOLU_11.h   

расположение Marlin>src>pins>sanguino

и прописываем в него пины для наших драйверов:

// TMC DRIVERS

#if HAS_TMC_UART

  #define X_SERIAL_TX_PIN 7 //PB7

  #define X_SERIAL_RX_PIN 7//PB7

  #define Y_SERIAL_TX_PIN 6 //PB6

  #define Y_SERIAL_RX_PIN 6 //PB6

  #define Z_SERIAL_TX_PIN 5 //PB5

  #define Z_SERIAL_RX_PIN 5 //PB5

  #define E0_SERIAL_TX_PIN 31 //PA0

  #define E0_SERIAL_RX_PIN 31 //PA0

#endif

Наконец, подключаем кабелем наш Ender3 (должен быть выключен из сети 220V) к компьютеру, нажимаем UPLOAD в VSCode, смотрим как компилируется прошивка, подтягиваются файлы для TMC, наслаждаемся проделанной работой.

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectEДальше всё по стандарту: проверяем работу шаговиков, запускаем автотюн пидов, корректируем шаги экструдера и т.д.

Direct EXTRUDER

Ender 3 V1 Retro - Marlin2, TMC2208, Vref, UART, DirectE

Об экструдере говорить особо нечего. Собрал я его по инструкции Дмитрия Соркина с сайта K3D.

Но я поторопился, буквально через неделю после того как я закупился, Дмитрий в своём видео дал положительный обзор на Creality SPRITE и чуть позже сделал модели для крепления к штатной каретке Ender3, что позволяет не тратить лишние деньги на SPRITE PRO, приобрести в минимальной комплектации как на Ender S1, а также нормальный обдув на улитках 5015.

Спасибо за внимание.

P/S Забыл сказать, что если вы выпилите SD, то режим возобновления печати после потери питания работать не будет!

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

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

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

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