<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://ender3.club/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndreyOvodov</id>
	<title>Ender 3 Wiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://ender3.club/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndreyOvodov"/>
	<link rel="alternate" type="text/html" href="https://ender3.club/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/AndreyOvodov"/>
	<updated>2026-04-28T21:21:30Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://ender3.club/index.php?title=SKR_1.3&amp;diff=245</id>
		<title>SKR 1.3</title>
		<link rel="alternate" type="text/html" href="https://ender3.club/index.php?title=SKR_1.3&amp;diff=245"/>
		<updated>2019-12-02T11:22:37Z</updated>

		<summary type="html">&lt;p&gt;AndreyOvodov: /* Модификация разъемов концевиков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:SKR_TMC_iwanttoplayagame.png|300px|thumb|right|I want to play a game...]]&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
Данная статья описывает опыт установки на принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039; и &#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; материнской платы &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; с драйверами &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; в режиме управления по &#039;&#039;&#039;UART&#039;&#039;&#039; с последующей настройкой и прошивкой &#039;&#039;&#039;Marlin 2.x bugfix&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Для чего это нужно?==&lt;br /&gt;
Плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; оснащена 32-битным микропроцессором &#039;&#039;&#039;LPC1768&#039;&#039;&#039; на ядре &#039;&#039;&#039;ARM&#039;&#039;&#039; &#039;&#039;&#039;Cortex-M3&#039;&#039;&#039;. Данный микропроцессор обладает на порядок более внушительными вычислительными возможностями, чем &#039;&#039;&#039;ATmega1284P&#039;&#039;&#039;, установленный на штатной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039;, которой оснащаются принтеры серии &#039;&#039;&#039;Ender&#039;&#039;&#039;. &lt;br /&gt;
Это дает возможность одновременно задействовать нагружающие микропроцессор и занимающие много памяти функции, такие как использование &#039;&#039;&#039;Linear Advance&#039;&#039;&#039;, автоуровня типа &#039;&#039;&#039;BLTouch/3DTouch&#039;&#039;&#039;, плавных ускорений &#039;&#039;&#039;S Curve Acceleration&#039;&#039;&#039; и др. Кроме того, в целом повышается быстродействие системы и максимально достижимая скорость печати.&lt;br /&gt;
&lt;br /&gt;
Помимо этого, плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; имеет еще несколько важных преимуществ:&lt;br /&gt;
# Колодки для драйверов в форм-факторе &#039;&#039;&#039;Polulu&#039;&#039;&#039; (&#039;&#039;&#039;SilentStepStick&#039;&#039;&#039;) - возможность установить любые поддерживаемые прошивкой драйвера без необходимости перепайки и колхозинка штатной платы&lt;br /&gt;
# Возможность установки до 5 драйверов и 2 нагревателей хотенда - можно установить дополнительный экструдер, &#039;&#039;&#039;toolchange&#039;&#039;&#039;-систему, &#039;&#039;&#039;MMU&#039;&#039;&#039;-ситему, использовать выход на второй нагреватель как дополнительный управляемый &#039;&#039;&#039;PWM&#039;&#039;&#039;-выход (подсветка/охлаждение)&lt;br /&gt;
# Наличие предохранителей на плате - меньше вероятность спалить мосфет стола или хотенда при случайном замыкании&lt;br /&gt;
# Возможность подключить цветной (сенсорный) дисплей, наличие дополнительных &#039;&#039;&#039;AUX&#039;&#039;&#039; портов&lt;br /&gt;
# Разводка под управление драйверами по [https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%B8%D1%91%D0%BC%D0%BE%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA &#039;&#039;&#039;UART&#039;&#039;&#039;] и &#039;&#039;&#039;[https://ru.wikipedia.org/wiki/Serial_Peripheral_Interface SPI&#039;&#039;&#039;] «из коробки»&lt;br /&gt;
&lt;br /&gt;
Для управления шаговыми двигателями (ШД) было решено использовать драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039;. Это относительно новые драйвера, пришедшие на смену хорошо зарекомендовавшему себя поколению &#039;&#039;&#039;TMC21XX&#039;&#039;&#039;. К их преимуществам можно отнести:&lt;br /&gt;
# Технология &#039;&#039;&#039;StealthChop2&#039;&#039;&#039; – тишина работы моторов&lt;br /&gt;
# Технология &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; – оригинальный алгоритм &#039;&#039;&#039;direct current&#039;&#039;&#039; управления от &#039;&#039;&#039;Trinamic&#039;&#039;&#039;, позволяет точно управлять током в обмотках &#039;&#039;&#039;ШД&#039;&#039;&#039; для увеличения точности позиционирования и момента на высоких скоростях&lt;br /&gt;
# Возможность работы в режиме нативного дробления до 1/256 шага или с меньшим дроблением, но с интерполяцией до 1/256.&lt;br /&gt;
# Возможность управления по &#039;&#039;&#039;UART&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
На последнем пункте остановимся подробнее. В данной статье рассматривается именно способ установки драйверов c управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;. Это позволяет из прошивки конфигурировать ток, дробление шага, интерполяцию, режим чоппера и другие параметры работы драйвера. Кроме того, в прошивке Marlin (и, возможно, в других) реализован так называемый гибридный режим, суть которого в автоматическом переключении драйвера из тихого режима StealthChop2 в более «мощный» &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; при достижении определенной скорости (&#039;&#039;&#039;hybrid mode threshold&#039;&#039;&#039;). Это позволяет «поддать жару», когда это нужно, наслаждаясь тишиной в остальное время. Помимо этого, используя управление по &#039;&#039;&#039;UART&#039;&#039;&#039;, можно настроить фазы чоппера &#039;&#039;&#039;SpeadCycle&#039;&#039;&#039; для достижения меньшего уровня шума в этом режиме (я пока этого не делал и это тема для отдельной статьи).&lt;br /&gt;
&lt;br /&gt;
==Что нам понадобится==&lt;br /&gt;
# Принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039;/&#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; (Ваш К.О.)&lt;br /&gt;
# Плата &#039;&#039;&#039;BIG TREE TECH&#039;&#039;&#039; (&#039;&#039;&#039;BIQU&#039;&#039;&#039;) &#039;&#039;&#039;SKR v1.3&#039;&#039;&#039;&lt;br /&gt;
# Драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; &#039;&#039;&#039;v2.1&#039;&#039;&#039; или &#039;&#039;&#039;v3.0&#039;&#039;&#039;&lt;br /&gt;
# Паяльник&lt;br /&gt;
# Набор шестигранных ключей&lt;br /&gt;
# Надстройка &#039;&#039;&#039;PlatformIO&#039;&#039;&#039; для &#039;&#039;&#039;IDE VS Code&#039;&#039;&#039;&lt;br /&gt;
# Прошивка &#039;&#039;&#039; Marlin&#039;&#039;&#039; версии &#039;&#039;&#039;bugfix-2.0.x&#039;&#039;&#039; (самая свежая)&lt;br /&gt;
# Вольтметр&lt;br /&gt;
# Мелкая отвертка под плоский шлиц (лучше диэлектрическая)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ПАААААЕХАЛИ!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Электроника==&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_default_turnpots.png|300px|thumb|right|Расположение потенциометров &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; на стандартной плате]]&lt;br /&gt;
&lt;br /&gt;
===Важно: считаем ток ШД!===&lt;br /&gt;
Насколько я успел заметить, на принтеры &#039;&#039;&#039;Creality3D&#039;&#039;&#039; устанавливается широкий спектр ШД, отличающихся своими характеристиками, в первую очередь – &amp;lt;u&amp;gt;&#039;&#039;максимальным током обмоток&#039;&#039;&amp;lt;/u&amp;gt;. Некоторые моторы практически невозможно «нагуглить» по маркировке и узнать требуемый им ток. Поэтому для того, чтобы действовать наверняка, я советую &amp;lt;u&amp;gt;перед&amp;lt;/u&amp;gt; заменой платы выяснить, какой ток установлен для &#039;&#039;&#039;Ваших конкретных&#039;&#039;&#039; &#039;&#039;&#039;ШД&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
На дефолтной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039; установлено четыре драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039;, распаянных непосредственно на плате. Рядом с каждым драйвером установлен &#039;&#039;потенциометр&#039;&#039; (&#039;&#039;&#039;turnpot&#039;&#039;&#039;), который задает опорное напряжение &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Внимание!&#039;&#039;&#039; Настройка (и измерение) V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt; должна производиться с &#039;&#039;&#039;отключенными&#039;&#039;&#039; проводами ШД, но &#039;&#039;&#039;подключенным&#039;&#039;&#039; основным питанием платы.&lt;br /&gt;
&lt;br /&gt;
* Отключите от платы провода &#039;&#039;&#039;ШД&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Включите питание. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Аккуратно измерьте напряжение между центром «крутилки» потенциометра и землей (за землю можно взять черный провод, приходящий в винтовую колодку на плате с блока питания) для каждого из драйверов, запишите. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь посчитаем ток, который нужно установить для наших конкретных &#039;&#039;&#039;ШД&#039;&#039;&#039; на новых драйверах. &amp;lt;br /&amp;gt;&lt;br /&gt;
Дело в том, что &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039; задает максимальный ток &#039;&#039;&#039;I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, в то время как для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; мы задаем среднеквадратичное значение тока &#039;&#039;&#039;I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt;&#039;&#039;&#039; ~ I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;/1.414&lt;br /&gt;
&lt;br /&gt;
Приступим к расчетам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt; = I&amp;lt;sub&amp;gt;max(A4988)&amp;lt;/sub&amp;gt;/1.414 = V&amp;lt;sub&amp;gt;ref(A4988)&amp;lt;/sub&amp;gt;/1.1312&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это и есть нужное нам значение тока новых драйверов. При управлении по &#039;&#039;&#039;UART&#039;&#039;&#039; данного расчета достаточно. Тем, кто не хочет управлять по &#039;&#039;&#039;UART&#039;&#039;&#039;, то есть устанавливает драйвера в &#039;&#039;&#039;standalone-режиме&#039;&#039;&#039;, необходимо посчитать &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; по следующей формуле:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;V&amp;lt;sub&amp;gt;ref(TMC2208)&amp;lt;/sub&amp;gt; = (I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt;*2.5) / 1.77&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Указанная выше формула справедлива только для наиболее распространенных вариантов исполнения драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с референсным резистором &#039;&#039;&#039;R&amp;lt;sub&amp;gt;sense&amp;lt;/sub&amp;gt; = 0.11 Ом&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подготовка драйверов===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_driver_soldering.jpg|300px|thumb|right|Перымычка &#039;&#039;&#039;J2&#039;&#039;&#039;, которую нужно запаять на драйвере для управления по &#039;&#039;&#039;UART&#039;&#039;&#039;. Также не лишним будет проверить номинал резисторов &#039;&#039;&#039;R6&#039;&#039;&#039; и &#039;&#039;&#039;R7&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать &#039;&#039;&#039;UART&#039;&#039;&#039;-режим для управления драйверами, необходимо &#039;&#039;&#039;&amp;lt;u&amp;gt;АККУРАТНО&amp;lt;/u&amp;gt;&#039;&#039;&#039; запаять на них перемычку &#039;&#039;&#039;J2&#039;&#039;&#039; (см. фото). &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь и далее показаны драйвера от &#039;&#039;&#039;BIGTREETECH&#039;&#039;&#039; версии &#039;&#039;&#039;2.1&#039;&#039;&#039;, но для драйверов от других производителей, например &#039;&#039;&#039;Fysetc&#039;&#039;&#039;, действия будут аналогичными. &amp;lt;/br&amp;gt;&lt;br /&gt;
Для драйверов версии &#039;&#039;&#039;3.0&#039;&#039;&#039; инструкции аналогичны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация разъемов концевиков===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_endstops_2to3.jpg|300px|thumb|right|Переделка дефолтных двухконтактных разъемов концевиков в трехконтактные под &#039;&#039;&#039;SKR&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для подключения родных &#039;&#039;двухконтактных&#039;&#039; разъемов концевиков в &#039;&#039;трехконтактные&#039;&#039; разъемы на плате &#039;&#039;&#039;SKR&#039;&#039;&#039; нужно модифицировать провода одним из способов (чтобы провода подключались к двум &#039;&#039;нижним&#039;&#039; пинам разъема, см. рисунок):&lt;br /&gt;
&lt;br /&gt;
# «Переобуваем» провод в &#039;&#039;трехпиновый&#039;&#039; корпус – самый лучший вариант, если есть такие корпуса&lt;br /&gt;
# Подрезаем один из двух ключевых выступов корпуса разъема на проводе так, чтобы он правильно вошел в разъем на плате (в два нижних пина на соответствующем разъеме)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Извлечение штатной платы===&lt;br /&gt;
&lt;br /&gt;
Перед отсоединением разъемов от платы, не забудьте пометить удобным способом провода, на которых нет заводских меток. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Отключаем питание принтера &lt;br /&gt;
* Снимаем крышку с корпуса электроники&lt;br /&gt;
* Отключаем вентилятор охлаждения от платы&lt;br /&gt;
* Аккуратно удаляем термоклей со всех разъемов&lt;br /&gt;
* Отключаем все провода от платы&lt;br /&gt;
* Откручиваем плату от корпуса электроники&lt;br /&gt;
* Откручиваем корпус электроники от рамы принтера (один из винтов находится снизу, под принтером).&lt;br /&gt;
&lt;br /&gt;
===Установка Джамперов в режим UART===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Electronica-skr-1 3.jpg|300px|thumb|right|Ставим джамперы согласно целеуказателям]]&lt;br /&gt;
&lt;br /&gt;
* Убираем с платы все джамперы&lt;br /&gt;
* Устанавливаем пять джамперов возле площадок драйверов (включает управление по &#039;&#039;&#039;UART&#039;&#039;&#039;)&lt;br /&gt;
* Устанавливаем один джампер в центре платы на два левых контакта (&#039;&#039;&#039;INT +5V&#039;&#039;&#039; отвечает за режим питания контроллера – от внешнего &#039;&#039;&#039;БП&#039;&#039;&#039;). Правая пара контактов отвечает за питание по &#039;&#039;&#039;USB&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение SKR 1.3===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_wiring_huyayring.png|300px|thumb|right|Схема подключения проводов и установки джамперов на плате &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039;. В дефолтной конфигурации &#039;&#039;&#039;Ender-3&#039;&#039;&#039; с одним экструдером. Щелкните, чтобы посмотреть в полном размере.]]&lt;br /&gt;
&lt;br /&gt;
* Устанавливаем драйвера: черные ножки в черные разъемы, цветные ножки (они могут быть синими или красными) в красные разъемы. Если дрова поставить вверх ногами  – дровам &#039;&#039;&#039;&amp;lt;u&amp;gt;кирдык&amp;lt;/u&amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
* Хотя сама плата запускается от &#039;&#039;&#039;5 V&#039;&#039;&#039; по &#039;&#039;&#039;USB&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;драйвера не будут работать&amp;lt;/u&amp;gt;&#039;&#039; без подключенного основного питания &#039;&#039;&#039;24 V&#039;&#039;&#039;, и на дисплее будет отображаться &#039;&#039;&#039;&amp;lt;u&amp;gt;TMC connection error&amp;lt;/u&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
* Теперь подключаем все провода в соответствующие разъемы платы (&#039;&#039;&#039;внимание на полярность!&#039;&#039;&#039;), для этого может потребоваться немного распотрошить жгут проводов. &lt;br /&gt;
* Вентилятор обдува детали подключаем в разъем &#039;&#039;&#039;FAN&#039;&#039;&#039;, &lt;br /&gt;
* Вентилятор охлаждения электроники – в разъем &#039;&#039;&#039;12/24 V&#039;&#039;&#039; (в самом углу платы, возле разъема &#039;&#039;&#039;ШД&#039;&#039;&#039; оси &#039;&#039;&#039;X&#039;&#039;&#039;) &lt;br /&gt;
* Вентилятор охлаждения радиатора печатной головы – в разъем  нагревателя второго хотенда &#039;&#039;&#039;HT1&#039;&#039;&#039; (винтовая колодка) если у нас только 1 хотенд, иначе параллельно вентилятору охлаждения электроники. &lt;br /&gt;
* Экран подключаем в разъем &#039;&#039;&#039;EXP1&#039;&#039;&#039;, &lt;br /&gt;
* Провода концевиков – в трехпиновые разъемы &#039;&#039;&#039;Xmin, Ymin, Zmin&#039;&#039;&#039; на плате, &lt;br /&gt;
* Остальное подключается очевидным образом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Прошивка==&lt;br /&gt;
&lt;br /&gt;
===Дисклеймер===&lt;br /&gt;
&lt;br /&gt;
Данный раздел предполагает, что Вы &amp;lt;u&amp;gt;знаете&amp;lt;/u&amp;gt;, как конфигурировать прошивку &#039;&#039;&#039;Marlin&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь будут описаны &amp;lt;u&amp;gt;только специфические настройки&amp;lt;/u&amp;gt; для платы &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039; и драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;, а также &#039;&#039;&#039;несколько других полезных твиков&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Если Вы &#039;&#039;&#039;не знаете&#039;&#039;&#039; как конфигурируется прошивка, как устанавливаются размеры области печати, шаги по осям, ускорения и прочие основные параметры принтера – для начала &#039;&#039;&#039;обязательно изучите эту информацию&#039;&#039;&#039;, например по [https://www.youtube.com/watch?v=pSBb9GLrM1s видео Дмитрия Соркина], и &#039;&#039;&#039;только после этого&#039;&#039;&#039; продолжайте. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве отправной точки &amp;lt;u&amp;gt;крайне советую&amp;lt;/u&amp;gt; использовать конфигурационные файлы для &#039;&#039;&#039;Ender-3&#039;&#039;&#039; &amp;lt;u&amp;gt;из папки с примерами&amp;lt;/u&amp;gt;, это избавит от необходимости конфигурирования концевиков, направлений моторов, зоны печати и прочих важных вещей – там это уже сделано. &amp;lt;u&amp;gt;Здесь эти настройки рассматриваться не будут&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Установка PlatformIO IDE===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_PlatfIO_1.png|300px|thumb|right|Установка PlatformIO в VS Code]]&lt;br /&gt;
[[Файл:SKR_TMC_platformio open.png|300px|thumb|right|Открыть проект Marlin в PlatformIO]]&lt;br /&gt;
&lt;br /&gt;
* Качаем последнюю версию [https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip Marlin bugfix-2.0.x]. &lt;br /&gt;
* Качаем [https://code.visualstudio.com/Download VS Code]. &lt;br /&gt;
* Запускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
** Заходим в &#039;&#039;&#039;Extensions&#039;&#039;&#039; &lt;br /&gt;
** Вводим в строку поиска &#039;&#039;platformio&#039;&#039; &lt;br /&gt;
** Жмем зеленую кнопку &#039;&#039;&#039;Install&#039;&#039;&#039; возле расширения &#039;&#039;&#039;PlatformIO IDE&#039;&#039;&#039;&lt;br /&gt;
** Ждем завершения установки расширения&lt;br /&gt;
* Перезапускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
* На появившейся странице &#039;&#039;&#039;PIO&#039;&#039;&#039; Home жмем кнопку &#039;&#039;&#039;Open Project&#039;&#039;&#039; &lt;br /&gt;
* Заходим в папку с прошивкой (в ней должен быть файл &#039;&#039;platformio.ini&#039;&#039;)&lt;br /&gt;
* Жмем &#039;&#039;&#039;Open&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Конфигурация===&lt;br /&gt;
Нам нужно будет внести изменения в 3 файла: &#039;&#039;platformio.ini, configuration.h и configuration_adv.h&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Начнем по порядку. Настоятельно советую пользоваться поиском &#039;&#039;&#039;Ctrl+F&#039;&#039;&#039; для быстрого перехода к нужным настройкам.&lt;br /&gt;
&lt;br /&gt;
====platformio.ini====&lt;br /&gt;
Указываем в разделе [platformio] микроконтроллер, для которого будем компилировать прошивку.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;default_envs = LPC1768&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====configuration.h====&lt;br /&gt;
Настраиваем последовательные порты:&lt;br /&gt;
&lt;br /&gt;
 #define SERIAL_PORT -1&lt;br /&gt;
 #define SERIAL_PORT_2 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ускоряем немного обмен данными через последовательный порт&lt;br /&gt;
&lt;br /&gt;
 #define BAUDRATE 250000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какая у нас материнская плата&lt;br /&gt;
&lt;br /&gt;
 #ifndef MOTHERBOARD&lt;br /&gt;
   #define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убеждаемся, что включена защита от перегрева&lt;br /&gt;
&lt;br /&gt;
 #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders&lt;br /&gt;
 #define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed&lt;br /&gt;
 #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какие у нас установлены драйвера ШД&lt;br /&gt;
&lt;br /&gt;
 #define X_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Y_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Z_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define E0_DRIVER_TYPE TMC2208&lt;br /&gt;
&lt;br /&gt;
Если устанавливаем драйвера без управления по UART, то вместо TMC2208 пишем TMC2208_STANDALONE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем включить более плавные ускорения, при желании&lt;br /&gt;
&lt;br /&gt;
 #define S_CURVE_ACCELERATION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем направление мотора экструдера. Если редукторный фидер, пишем &#039;&#039;false&#039;&#039;, если безредукторный, то &#039;&#039;true&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define INVERT_E0_DIR true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем настроить пункт меню для калибровки стола – Level corners, печатная коловка будет поочередно перемещаться в каждый из 4 углов (в положение над регулировочным винтом) и в центр стола (здесь параметры для калибровки по эталону 0.1 мм, толщину эталона можно задать параметром LEVEL_CORNERS_HEIGHT)&lt;br /&gt;
&lt;br /&gt;
 #define LEVEL_BED_CORNERS&lt;br /&gt;
 #if ENABLED(LEVEL_BED_CORNERS)&lt;br /&gt;
   #define LEVEL_CORNERS_INSET 35    // (mm) An inset for corner leveling&lt;br /&gt;
   #define LEVEL_CORNERS_Z_HOP  5  // (mm) Move nozzle up before moving between corners&lt;br /&gt;
   #define LEVEL_CORNERS_HEIGHT 0.1  // (mm) Z height of nozzle at leveling points&lt;br /&gt;
   #define LEVEL_CENTER_TOO        // Move to the center after the last corner&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настраиваем более адекватные скорости хоуминга&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_FEEDRATE_XY (30*60)&lt;br /&gt;
 #define HOMING_FEEDRATE_Z  (4*60) // Если используется датчик автоуровня типа BLTouch/3DTouch, можно увеличить значение до (10*60) для ускорения автокалибровки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выбираем язык меню&lt;br /&gt;
&lt;br /&gt;
 #define LCD_LANGUAGE en&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем поддержку карты памяти&lt;br /&gt;
&lt;br /&gt;
 #define SDSUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Включаем&#039;&#039;&#039; «пищалку», чтобы она могла нас уведомлять о важных вещах типа перегрева, но &#039;&#039;&#039;выключаем&#039;&#039;&#039; звук в меню&lt;br /&gt;
&lt;br /&gt;
 #define SPEAKER&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 0&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_HZ 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем дефолтный дисплей Ender-3&lt;br /&gt;
&lt;br /&gt;
 #define CR10_STOCKDISPLAY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убираем «свист» вентиляторов от ШИМ&lt;br /&gt;
&lt;br /&gt;
 #define FAN_SOFT_PWM&lt;br /&gt;
 #define SOFT_PWM_SCALE 0&lt;br /&gt;
&lt;br /&gt;
====configuration_adv.h====&lt;br /&gt;
Включаем отображение значений АЦП вместе со значениями температуры по команде M105 (если потом хотим калибровать термистор, о чем позже будет статья)&lt;br /&gt;
&lt;br /&gt;
 #define SHOW_TEMP_ADC_VALUES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вентилятор обдува модели плохо стартует на низких оборотах, помогаем ему «пинком»&lt;br /&gt;
&lt;br /&gt;
 #define FAN_KICKSTART_TIME 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если подключили вентилятор обдува радиатора печатной головы вместо нагревателя второго хотенда, настраиваем тут пин и температуру включения&lt;br /&gt;
&lt;br /&gt;
 #define E0_AUTO_FAN_PIN FAN1_PIN // Cold-end fan to E1 heater&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более «нежные» делители скоростей для хоуминга, чтоб меньше разбивались концевики&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_BUMP_DIVISOR { 4, 4, 4 }  // Re-Bump Speed Divisor (Divides the Homing Feedrate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем время после последнего движения (в секундах), через которое отключается удержание ШД&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_STEPPER_DEACTIVE_TIME 300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более адекватные скорости для движения осей из меню принтера&lt;br /&gt;
&lt;br /&gt;
 #define MANUAL_FEEDRATE {100*60, 100*60, 10*60, 50*60}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Улучшаем печать по USB&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_MINSEGMENTTIME        50000&lt;br /&gt;
 &lt;br /&gt;
 #if ENABLED(SDSUPPORT)&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 32 // SD,LCD,Buttons take more memory, block buffer needs to be smaller&lt;br /&gt;
 #else&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_CMD_SIZE 96&lt;br /&gt;
 #define BUFSIZE 32&lt;br /&gt;
 &lt;br /&gt;
 #define TX_BUFFER_SIZE 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем звуковое оповещение при изменении Feedrate на главном экране энкодером (помогает избежать случайного изменения)&lt;br /&gt;
&lt;br /&gt;
 #define BEEP_ON_FEEDRATE_CHANGE&lt;br /&gt;
 #if ENABLED(BEEP_ON_FEEDRATE_CHANGE)&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_DURATION   10&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных статусных сообщений на экране&lt;br /&gt;
&lt;br /&gt;
 #define STATUS_MESSAGE_SCROLLING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Увеличиваем задержку (в миллисекундах) перед автоматическим выходом из меню на главный экран (&#039;&#039;беситбеситбеситбесит&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 #define LCD_TIMEOUT_TO_STATUS 60000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
«Чиним» прогресс-бар при печати через USB&lt;br /&gt;
&lt;br /&gt;
 #define LCD_SET_PROGRESS_MANUALLY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем подтверждение при выборе файла с флешки для печати&lt;br /&gt;
&lt;br /&gt;
 #define SD_MENU_CONFIRM_START&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем поддержку отправки длинных имен файлов с флешки на хост по USB&lt;br /&gt;
&lt;br /&gt;
 #define LONG_FILENAME_HOST_SUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных имен файлов на флешке в меню&lt;br /&gt;
&lt;br /&gt;
 #define SCROLL_LONG_FILENAMES&lt;br /&gt;
&lt;br /&gt;
Настраиваем SD карту&lt;br /&gt;
&lt;br /&gt;
 #ifdef TARGET_LPC1768&lt;br /&gt;
   //#define LPC_SD_LCD          // Use the SD drive in the external LCD controller.&lt;br /&gt;
   #define LPC_SD_ONBOARD      // Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)&lt;br /&gt;
   //#define LPC_SD_CUSTOM_CABLE // Use a custom cable to access the SD (as defined in a pins file).&lt;br /&gt;
   //#define USB_SD_DISABLED     // Disable SD Card access over USB (for security).&lt;br /&gt;
   #if ENABLED(LPC_SD_ONBOARD)&lt;br /&gt;
     //#define USB_SD_ONBOARD    // Данную опцию можно включить, чтоб видеть флешку с хоста, как через кард-ридер, но я не проверял&lt;br /&gt;
   #endif&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем babystepping - возможность вручную задавать точно оффсет оси Z во время печати из меню принтера, например, если мы видим, что с первым слоем что-то не так&lt;br /&gt;
&lt;br /&gt;
 #define BABYSTEPPING&lt;br /&gt;
 #if ENABLED(BABYSTEPPING)&lt;br /&gt;
   //#define BABYSTEP_WITHOUT_HOMING&lt;br /&gt;
   //#define BABYSTEP_XY                     // Also enable X/Y Babystepping. Not supported on DELTA!&lt;br /&gt;
   #define BABYSTEP_INVERT_Z false           // Change if Z babysteps should go the other way&lt;br /&gt;
   #define BABYSTEP_MULTIPLICATOR  2         // Babysteps are very small. Increase for faster motion. &lt;br /&gt;
 &lt;br /&gt;
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING    // Double-click on the Status Screen for Z Babystepping.&lt;br /&gt;
   #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)&lt;br /&gt;
     #define DOUBLECLICK_MAX_INTERVAL 1250   // Maximum interval between clicks, in milliseconds.&lt;br /&gt;
                                             // Note: Extra time may be added to mitigate controller latency.&lt;br /&gt;
     //#define BABYSTEP_ALWAYS_AVAILABLE     // Allow babystepping at all times (not just during movement).&lt;br /&gt;
     #define MOVE_Z_WHEN_IDLE              // Jump to the move Z menu on doubleclick when printer is idle.&lt;br /&gt;
     #if ENABLED(MOVE_Z_WHEN_IDLE)&lt;br /&gt;
       #define MOVE_Z_IDLE_MULTIPLICATOR 1   // Multiply 1mm by this factor for the move step size.&lt;br /&gt;
     #endif&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При желании включаем LA&lt;br /&gt;
&lt;br /&gt;
 #define LIN_ADVANCE&lt;br /&gt;
 #if ENABLED(LIN_ADVANCE)&lt;br /&gt;
   //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants&lt;br /&gt;
   #define LIN_ADVANCE_K 0.0    // Unit: mm compression per 1mm/s extruder speed&lt;br /&gt;
   //#define LA_DEBUG            // If enabled, this will generate debug information output over USB.&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Уменьшаем размер минимальной отрабатываемой группы шагов&lt;br /&gt;
&lt;br /&gt;
 #define MIN_STEPS_PER_SEGMENT 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Если выше включили Linear Advance, необходимо также изменить значение MINIMUM_STEPPER_PULSE для работоспособности экструдера (актуально на 10.09.19)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define MINIMUM_STEPPER_PULSE 2 // если не работает 2, ставим 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем Emergency Parser, чтобы иметь возможность остановить принтер мгновенно, а не ждать, пока выполнятся все команды из буфера&lt;br /&gt;
&lt;br /&gt;
 #define EMERGENCY_PARSER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наконец, переходим к собственно настройке драйверов!&lt;br /&gt;
&lt;br /&gt;
Настраиваем токи и дробление шага. Здесь каждый пусть решает сам, какое дробление использовать, включать ли интерполяцию - спорить можно бесконечно.&lt;br /&gt;
&lt;br /&gt;
 #if HAS_TRINAMIC&lt;br /&gt;
 &lt;br /&gt;
   #define HOLD_MULTIPLIER    0.6  // Множитель тока в режиме удержания ШД&lt;br /&gt;
   #define INTERPOLATE       true  // Включает или выключает интерполяцию по ВСЕМ осям&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(X)&lt;br /&gt;
     #define X_CURRENT     450  // сюда пишем наш ток Irms, который мы посчитали ранее&lt;br /&gt;
     #define X_MICROSTEPS    16  // количество микрошагов, поддерживается нативно до 256, не забываем изменить число шагов на мм&lt;br /&gt;
     #define X_RSENSE     0.11 // Если на Ваших драйверах резистор Rsense отличается от стандартного R110, сюда вписываем номинал&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Y)&lt;br /&gt;
     #define Y_CURRENT     500&lt;br /&gt;
     #define Y_MICROSTEPS    16&lt;br /&gt;
     #define Y_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Z)&lt;br /&gt;
     #define Z_CURRENT     550&lt;br /&gt;
     #define Z_MICROSTEPS    16&lt;br /&gt;
     #define Z_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(E0)&lt;br /&gt;
     #define E0_CURRENT    700&lt;br /&gt;
     #define E0_MICROSTEPS   16&lt;br /&gt;
     #define E0_RSENSE    0.11&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем тихий режим StealthChop (на оси экструдера, особенно с редукторным фидером, стабильнее работает SpreadCycle, по моим ощущениям)&lt;br /&gt;
&lt;br /&gt;
   #define STEALTHCHOP_XY&lt;br /&gt;
   #define STEALTHCHOP_Z&lt;br /&gt;
   //#define STEALTHCHOP_E&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем режим работы чоппера SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define CHOPPER_TIMING CHOPPER_DEFAULT_24V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем защиту драйверов от перегрева&lt;br /&gt;
&lt;br /&gt;
   #define MONITOR_DRIVER_STATUS&lt;br /&gt;
 &lt;br /&gt;
   #if ENABLED(MONITOR_DRIVER_STATUS)&lt;br /&gt;
     #define CURRENT_STEP_DOWN     50  // [mA]&lt;br /&gt;
     #define REPORT_CURRENT_CHANGE&lt;br /&gt;
     #define STOP_ON_ERROR&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем гибридный режим - при превышении указанной здесь скорости алгоритм будет переключаться со StealthChop на SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define HYBRID_THRESHOLD&lt;br /&gt;
 &lt;br /&gt;
   #define X_HYBRID_THRESHOLD     120  // [mm/s]&lt;br /&gt;
   #define Y_HYBRID_THRESHOLD     120&lt;br /&gt;
   #define Z_HYBRID_THRESHOLD      10&lt;br /&gt;
   #define E0_HYBRID_THRESHOLD     15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Очень важно!&#039;&#039;&#039; Включаем отладочный режими&lt;br /&gt;
&lt;br /&gt;
   #define TMC_DEBUG&lt;br /&gt;
&lt;br /&gt;
В данной секции можно задать отдельно любые параметры для каждого из драйверов, например выборочно выключить интерполяцию на Z и E, если выше она включена для всех осей, но перед тем, как что-то здесь писать, &#039;&#039;&#039;советую разобраться&#039;&#039;&#039; с функциями библиотеки [https://github.com/teemuatlut/TMCStepper TMCStepper]. В противном случае оставляйте эту секцию пустой, чтобы ничего не сломать.&lt;br /&gt;
&lt;br /&gt;
   #define TMC_ADV() { \&lt;br /&gt;
     stepperE0.intpol(0); \&lt;br /&gt;
     stepperZ.intpol(0); \&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем автоотправку температуры по USB&lt;br /&gt;
&lt;br /&gt;
 #define AUTO_REPORT_TEMPERATURES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем расширенный отчет о возможностях прошивки для USB хоста&lt;br /&gt;
&lt;br /&gt;
 #define EXTENDED_CAPABILITIES_REPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выключаем экструзию по объему&lt;br /&gt;
&lt;br /&gt;
 #define NO_VOLUMETRICS&lt;br /&gt;
&lt;br /&gt;
====Компиляция и прошивка платы====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_hoba.jpg|300px|thumb|right|Хоба! &#039;&#039;&#039;Поздравляем - Вы восхитительны!&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
После того, как прошивка сконфигурирована, &#039;&#039;&#039;сохраняем&#039;&#039;&#039; изменения. Жмем &#039;&#039;&#039;Ctrl+Alt+B&#039;&#039;&#039; - запустится процесс компиляции прошивки. Если ошибок нет, после его завершения в терминале &#039;&#039;&#039;VS Code&#039;&#039;&#039; напротив &#039;&#039;&#039;LPC1768&#039;&#039;&#039; будет зеленая надпись &#039;&#039;&#039;SUCCESS&#039;&#039;&#039;. В папке &#039;&#039;Marlin-bugfix-2.0.x\.pioenvs\LPC1768&#039;&#039; появится файл &#039;&#039;firmware.bin&#039;&#039; - это и есть скомпилированная прошивка. Копируем этот файл на &#039;&#039;&#039;SD&#039;&#039;&#039;-карту и вставляем в плату, после чего перезапускаем плату - загрузчик установит прошивку и вы увидите стартовый экран &#039;&#039;&#039;Marlin&#039;&#039;&#039; (не беспокойтесь, после перезагрузки файл прошивки на флешке будет переименован, его не нужно удалять вручную, плата не будет перепрошиваться при каждой перезагрузке, пока Вы не кинете новый файл прошивки на флешку). &amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Не забываем после перепрошивки инициализировать EEPROM.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Что дальше?==&lt;br /&gt;
Что же (а главное - как) мы можем настроить благодаря подключению по UART?&lt;br /&gt;
&lt;br /&gt;
===Меню TMC drivers===&lt;br /&gt;
В меню Configuration -&amp;gt; Advanced configuration появилось новое подменю - &#039;&#039;&#039;TMC drivers&#039;&#039;&#039;, содержащее 3 пункта:&lt;br /&gt;
#&#039;&#039;&#039;Driver current&#039;&#039;&#039; - настройка тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера &lt;br /&gt;
#&#039;&#039;&#039;Hybrid threshold&#039;&#039;&#039; - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle. Если хотите выключить гибридный режим для какой-то из осей и использовать только StealthChop, поставьте здесь очень большое значение  (на 22 мая 2019 существует баг - при загрузке настроек из EEPROM все значения отображаются равными 0. При этом на самом деле загружаются правильные значения, их даже можно поменять в этом меню и сохранить в EEPROM, и все работает, но в самом меню отображается 0)&lt;br /&gt;
#&#039;&#039;&#039;Microstepping mode&#039;&#039;&#039; - ручное переключение между StealthChop и SpreadCycle для каждой оси. Если стоит &#039;&#039;&#039;&amp;quot;on&amp;quot;&#039;&#039;&#039;, то используется StealthChop и гибридный режим, если &#039;&#039;&#039;&amp;quot;off&amp;quot;&#039;&#039;&#039; - то всегда включен только SpreadCycle&lt;br /&gt;
&lt;br /&gt;
===Команды G-code===&lt;br /&gt;
Ниже приводятся команды G-code для работы с драйверами TMC2208&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M122.html M122] - вывод отладочной информации о состоянии драйверов - установленный ток, дробление шага и интерполяция, состояние регистров, состояние защиты от перегрева и прочие полезности&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M569.html M569] - ручное переключение между StealthChop и SpreadCycle для кождой оси&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M906.html M906] - задание тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M911.html M911] - информация о сотоянии защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M912.html M912] - сброс состояния защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M913.html M913] - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle&lt;br /&gt;
&lt;br /&gt;
==Цитирование==&lt;br /&gt;
Вы можете цитировать материал из данной статьи в произвольном объеме при условии &#039;&#039;&#039;обязательного указания ссылки на первоисточник&#039;&#039;&#039;. В ином случае цитирование не допускается.&lt;br /&gt;
&lt;br /&gt;
Автор - @ArtificalSUN&lt;/div&gt;</summary>
		<author><name>AndreyOvodov</name></author>
	</entry>
	<entry>
		<id>https://ender3.club/index.php?title=SKR_1.3&amp;diff=239</id>
		<title>SKR 1.3</title>
		<link rel="alternate" type="text/html" href="https://ender3.club/index.php?title=SKR_1.3&amp;diff=239"/>
		<updated>2019-12-02T07:45:44Z</updated>

		<summary type="html">&lt;p&gt;AndreyOvodov: /* Меню TMC drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:SKR_TMC_iwanttoplayagame.png|300px|thumb|right|I want to play a game...]]&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
Данная статья описывает опыт установки на принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039; и &#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; материнской платы &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; с драйверами &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; в режиме управления по &#039;&#039;&#039;UART&#039;&#039;&#039; с последующей настройкой и прошивкой &#039;&#039;&#039;Marlin 2.x bugfix&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Для чего это нужно?==&lt;br /&gt;
Плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; оснащена 32-битным микропроцессором &#039;&#039;&#039;LPC1768&#039;&#039;&#039; на ядре &#039;&#039;&#039;ARM&#039;&#039;&#039; &#039;&#039;&#039;Cortex-M3&#039;&#039;&#039;. Данный микропроцессор обладает на порядок более внушительными вычислительными возможностями, чем &#039;&#039;&#039;ATmega1284P&#039;&#039;&#039;, установленный на штатной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039;, которой оснащаются принтеры серии &#039;&#039;&#039;Ender&#039;&#039;&#039;. &lt;br /&gt;
Это дает возможность одновременно задействовать нагружающие микропроцессор и занимающие много памяти функции, такие как использование &#039;&#039;&#039;Linear Advance&#039;&#039;&#039;, автоуровня типа &#039;&#039;&#039;BLTouch/3DTouch&#039;&#039;&#039;, плавных ускорений &#039;&#039;&#039;S Curve Acceleration&#039;&#039;&#039; и др. Кроме того, в целом повышается быстродействие системы и максимально достижимая скорость печати.&lt;br /&gt;
&lt;br /&gt;
Помимо этого, плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; имеет еще несколько важных преимуществ:&lt;br /&gt;
# Колодки для драйверов в форм-факторе &#039;&#039;&#039;Polulu&#039;&#039;&#039; (&#039;&#039;&#039;SilentStepStick&#039;&#039;&#039;) - возможность установить любые поддерживаемые прошивкой драйвера без необходимости перепайки и колхозинка штатной платы&lt;br /&gt;
# Возможность установки до 5 драйверов и 2 нагревателей хотенда - можно установить дополнительный экструдер, &#039;&#039;&#039;toolchange&#039;&#039;&#039;-систему, &#039;&#039;&#039;MMU&#039;&#039;&#039;-ситему, использовать выход на второй нагреватель как дополнительный управляемый &#039;&#039;&#039;PWM&#039;&#039;&#039;-выход (подсветка/охлаждение)&lt;br /&gt;
# Наличие предохранителей на плате - меньше вероятность спалить мосфет стола или хотенда при случайном замыкании&lt;br /&gt;
# Возможность подключить цветной (сенсорный) дисплей, наличие дополнительных &#039;&#039;&#039;AUX&#039;&#039;&#039; портов&lt;br /&gt;
# Разводка под управление драйверами по [https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%B8%D1%91%D0%BC%D0%BE%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA &#039;&#039;&#039;UART&#039;&#039;&#039;] и &#039;&#039;&#039;[https://ru.wikipedia.org/wiki/Serial_Peripheral_Interface SPI&#039;&#039;&#039;] «из коробки»&lt;br /&gt;
&lt;br /&gt;
Для управления шаговыми двигателями (ШД) было решено использовать драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039;. Это относительно новые драйвера, пришедшие на смену хорошо зарекомендовавшему себя поколению &#039;&#039;&#039;TMC21XX&#039;&#039;&#039;. К их преимуществам можно отнести:&lt;br /&gt;
# Технология &#039;&#039;&#039;StealthChop2&#039;&#039;&#039; – тишина работы моторов&lt;br /&gt;
# Технология &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; – оригинальный алгоритм &#039;&#039;&#039;direct current&#039;&#039;&#039; управления от &#039;&#039;&#039;Trinamic&#039;&#039;&#039;, позволяет точно управлять током в обмотках &#039;&#039;&#039;ШД&#039;&#039;&#039; для увеличения точности позиционирования и момента на высоких скоростях&lt;br /&gt;
# Возможность работы в режиме нативного дробления до 1/256 шага или с меньшим дроблением, но с интерполяцией до 1/256.&lt;br /&gt;
# Возможность управления по &#039;&#039;&#039;UART&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
На последнем пункте остановимся подробнее. В данной статье рассматривается именно способ установки драйверов c управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;. Это позволяет из прошивки конфигурировать ток, дробление шага, интерполяцию, режим чоппера и другие параметры работы драйвера. Кроме того, в прошивке Marlin (и, возможно, в других) реализован так называемый гибридный режим, суть которого в автоматическом переключении драйвера из тихого режима StealthChop2 в более «мощный» &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; при достижении определенной скорости (&#039;&#039;&#039;hybrid mode threshold&#039;&#039;&#039;). Это позволяет «поддать жару», когда это нужно, наслаждаясь тишиной в остальное время. Помимо этого, используя управление по &#039;&#039;&#039;UART&#039;&#039;&#039;, можно настроить фазы чоппера &#039;&#039;&#039;SpeadCycle&#039;&#039;&#039; для достижения меньшего уровня шума в этом режиме (я пока этого не делал и это тема для отдельной статьи).&lt;br /&gt;
&lt;br /&gt;
==Что нам понадобится==&lt;br /&gt;
# Принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039;/&#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; (Ваш К.О.)&lt;br /&gt;
# Плата &#039;&#039;&#039;BIG TREE TECH&#039;&#039;&#039; (&#039;&#039;&#039;BIQU&#039;&#039;&#039;) &#039;&#039;&#039;SKR v1.3&#039;&#039;&#039;&lt;br /&gt;
# Драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; &#039;&#039;&#039;v2.1&#039;&#039;&#039; или &#039;&#039;&#039;v3.0&#039;&#039;&#039;&lt;br /&gt;
# Паяльник&lt;br /&gt;
# Набор шестигранных ключей&lt;br /&gt;
# Надстройка &#039;&#039;&#039;PlatformIO&#039;&#039;&#039; для &#039;&#039;&#039;IDE VS Code&#039;&#039;&#039;&lt;br /&gt;
# Прошивка &#039;&#039;&#039; Marlin&#039;&#039;&#039; версии &#039;&#039;&#039;bugfix-2.0.x&#039;&#039;&#039; (самая свежая)&lt;br /&gt;
# Вольтметр&lt;br /&gt;
# Мелкая отвертка под плоский шлиц (лучше диэлектрическая)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ПАААААЕХАЛИ!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Электроника==&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_default_turnpots.png|300px|thumb|right|Расположение потенциометров &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; на стандартной плате]]&lt;br /&gt;
&lt;br /&gt;
===Важно: считаем ток ШД!===&lt;br /&gt;
Насколько я успел заметить, на принтеры &#039;&#039;&#039;Creality3D&#039;&#039;&#039; устанавливается широкий спектр ШД, отличающихся своими характеристиками, в первую очередь – &amp;lt;u&amp;gt;&#039;&#039;максимальным током обмоток&#039;&#039;&amp;lt;/u&amp;gt;. Некоторые моторы практически невозможно «нагуглить» по маркировке и узнать требуемый им ток. Поэтому для того, чтобы действовать наверняка, я советую &amp;lt;u&amp;gt;перед&amp;lt;/u&amp;gt; заменой платы выяснить, какой ток установлен для &#039;&#039;&#039;Ваших конкретных&#039;&#039;&#039; &#039;&#039;&#039;ШД&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
На дефолтной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039; установлено четыре драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039;, распаянных непосредственно на плате. Рядом с каждым драйвером установлен &#039;&#039;потенциометр&#039;&#039; (&#039;&#039;&#039;turnpot&#039;&#039;&#039;), который задает опорное напряжение &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Внимание!&#039;&#039;&#039; Настройка (и измерение) V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt; должна производиться с &#039;&#039;&#039;отключенными&#039;&#039;&#039; проводами ШД, но &#039;&#039;&#039;подключенным&#039;&#039;&#039; основным питанием платы.&lt;br /&gt;
&lt;br /&gt;
* Отключите от платы провода &#039;&#039;&#039;ШД&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Включите питание. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Аккуратно измерьте напряжение между центром «крутилки» потенциометра и землей (за землю можно взять черный провод, приходящий в винтовую колодку на плате с блока питания) для каждого из драйверов, запишите. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь посчитаем ток, который нужно установить для наших конкретных &#039;&#039;&#039;ШД&#039;&#039;&#039; на новых драйверах. &amp;lt;br /&amp;gt;&lt;br /&gt;
Дело в том, что &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039; задает максимальный ток &#039;&#039;&#039;I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, в то время как для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; мы задаем среднеквадратичное значение тока &#039;&#039;&#039;I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt;&#039;&#039;&#039; ~ I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;/1.414&lt;br /&gt;
&lt;br /&gt;
Приступим к расчетам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt; = I&amp;lt;sub&amp;gt;max(A4988)&amp;lt;/sub&amp;gt;/1.414 = V&amp;lt;sub&amp;gt;ref(A4988)&amp;lt;/sub&amp;gt;/1.1312&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это и есть нужное нам значение тока новых драйверов. При управлении по &#039;&#039;&#039;UART&#039;&#039;&#039; данного расчета достаточно. Тем, кто не хочет управлять по &#039;&#039;&#039;UART&#039;&#039;&#039;, то есть устанавливает драйвера в &#039;&#039;&#039;standalone-режиме&#039;&#039;&#039;, необходимо посчитать &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; по следующей формуле:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;V&amp;lt;sub&amp;gt;ref(TMC2208)&amp;lt;/sub&amp;gt; = (I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt;*2.5) / 1.77&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Указанная выше формула справедлива только для наиболее распространенных вариантов исполнения драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с референсным резистором &#039;&#039;&#039;R&amp;lt;sub&amp;gt;sense&amp;lt;/sub&amp;gt; = 0.11 Ом&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подготовка драйверов===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_driver_soldering.jpg|300px|thumb|right|Перымычка &#039;&#039;&#039;J2&#039;&#039;&#039;, которую нужно запаять на драйвере для управления по &#039;&#039;&#039;UART&#039;&#039;&#039;. Также не лишним будет проверить номинал резисторов &#039;&#039;&#039;R6&#039;&#039;&#039; и &#039;&#039;&#039;R7&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать &#039;&#039;&#039;UART&#039;&#039;&#039;-режим для управления драйверами, необходимо &#039;&#039;&#039;&amp;lt;u&amp;gt;АККУРАТНО&amp;lt;/u&amp;gt;&#039;&#039;&#039; запаять на них перемычку &#039;&#039;&#039;J2&#039;&#039;&#039; (см. фото). &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь и далее показаны драйвера от &#039;&#039;&#039;BIGTREETECH&#039;&#039;&#039; версии &#039;&#039;&#039;2.1&#039;&#039;&#039;, но для драйверов от других производителей, например &#039;&#039;&#039;Fysetc&#039;&#039;&#039;, действия будут аналогичными. &amp;lt;/br&amp;gt;&lt;br /&gt;
Для драйверов версии &#039;&#039;&#039;3.0&#039;&#039;&#039; инструкции аналогичны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация разъемов концевиков===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_endstops_2to3.jpg|300px|thumb|right|Переделка дефолтных двухконтактных разъемов концевиков в трехконтактные под &#039;&#039;&#039;SKR&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для подключения родных &#039;&#039;двухконтактных&#039;&#039; разъемов концевиков в &#039;&#039;трехконтактные&#039;&#039; разъемы на плате &#039;&#039;&#039;SKR&#039;&#039;&#039; нужно модифицировать провода одним из способов (чтобы провода подключались к двум &#039;&#039;нижним&#039;&#039; пинам разъема, см. рисунок):&lt;br /&gt;
&lt;br /&gt;
# «Переобуваем» провод в &#039;&#039;трехпиновый&#039;&#039; корпус – самый лучший вариант, если есть такие корпуса&lt;br /&gt;
# Подрезаем один из двух ключевых выступов корпуса разъема на проводе так, чтобы он правильно вошел в разъем на плате&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Извлечение штатной платы===&lt;br /&gt;
&lt;br /&gt;
Перед отсоединением разъемов от платы, не забудьте пометить удобным способом провода, на которых нет заводских меток. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Отключаем питание принтера &lt;br /&gt;
* Снимаем крышку с корпуса электроники&lt;br /&gt;
* Отключаем вентилятор охлаждения от платы&lt;br /&gt;
* Аккуратно удаляем термоклей со всех разъемов&lt;br /&gt;
* Отключаем все провода от платы&lt;br /&gt;
* Откручиваем плату от корпуса электроники&lt;br /&gt;
* Откручиваем корпус электроники от рамы принтера (один из винтов находится снизу, под принтером).&lt;br /&gt;
&lt;br /&gt;
===Установка Джамперов в режим UART===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Electronica-skr-1 3.jpg|300px|thumb|right|Ставим джамперы согласно целеуказателям]]&lt;br /&gt;
&lt;br /&gt;
* Убираем с платы все джамперы&lt;br /&gt;
* Устанавливаем пять джамперов возле площадок драйверов (включает управление по &#039;&#039;&#039;UART&#039;&#039;&#039;)&lt;br /&gt;
* Устанавливаем один джампер в центре платы на два левых контакта (&#039;&#039;&#039;INT +5V&#039;&#039;&#039; отвечает за режим питания контроллера – от внешнего &#039;&#039;&#039;БП&#039;&#039;&#039;). Правая пара контактов отвечает за питание по &#039;&#039;&#039;USB&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение SKR 1.3===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_wiring_huyayring.png|300px|thumb|right|Схема подключения проводов и установки джамперов на плате &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039;. В дефолтной конфигурации &#039;&#039;&#039;Ender-3&#039;&#039;&#039; с одним экструдером. Щелкните, чтобы посмотреть в полном размере.]]&lt;br /&gt;
&lt;br /&gt;
* Устанавливаем драйвера: черные ножки в черные разъемы, цветные ножки (они могут быть синими или красными) в красные разъемы. Если дрова поставить вверх ногами  – дровам &#039;&#039;&#039;&amp;lt;u&amp;gt;кирдык&amp;lt;/u&amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
* Хотя сама плата запускается от &#039;&#039;&#039;5 V&#039;&#039;&#039; по &#039;&#039;&#039;USB&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;драйвера не будут работать&amp;lt;/u&amp;gt;&#039;&#039; без подключенного основного питания &#039;&#039;&#039;24 V&#039;&#039;&#039;, и на дисплее будет отображаться &#039;&#039;&#039;&amp;lt;u&amp;gt;TMC connection error&amp;lt;/u&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
* Теперь подключаем все провода в соответствующие разъемы платы (&#039;&#039;&#039;внимание на полярность!&#039;&#039;&#039;), для этого может потребоваться немного распотрошить жгут проводов. &lt;br /&gt;
* Вентилятор обдува детали подключаем в разъем &#039;&#039;&#039;FAN&#039;&#039;&#039;, &lt;br /&gt;
* Вентилятор охлаждения электроники – в разъем &#039;&#039;&#039;12/24 V&#039;&#039;&#039; (в самом углу платы, возле разъема &#039;&#039;&#039;ШД&#039;&#039;&#039; оси &#039;&#039;&#039;X&#039;&#039;&#039;) &lt;br /&gt;
* Вентилятор охлаждения радиатора печатной головы – в разъем  нагревателя второго хотенда &#039;&#039;&#039;HT1&#039;&#039;&#039; (винтовая колодка) если у нас только 1 хотенд, иначе параллельно вентилятору охлаждения электроники. &lt;br /&gt;
* Экран подключаем в разъем &#039;&#039;&#039;EXP1&#039;&#039;&#039;, &lt;br /&gt;
* Провода концевиков – в трехпиновые разъемы &#039;&#039;&#039;Xmin, Ymin, Zmin&#039;&#039;&#039; на плате, &lt;br /&gt;
* Остальное подключается очевидным образом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Прошивка==&lt;br /&gt;
&lt;br /&gt;
===Дисклеймер===&lt;br /&gt;
&lt;br /&gt;
Данный раздел предполагает, что Вы &amp;lt;u&amp;gt;знаете&amp;lt;/u&amp;gt;, как конфигурировать прошивку &#039;&#039;&#039;Marlin&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь будут описаны &amp;lt;u&amp;gt;только специфические настройки&amp;lt;/u&amp;gt; для платы &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039; и драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;, а также &#039;&#039;&#039;несколько других полезных твиков&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Если Вы &#039;&#039;&#039;не знаете&#039;&#039;&#039; как конфигурируется прошивка, как устанавливаются размеры области печати, шаги по осям, ускорения и прочие основные параметры принтера – для начала &#039;&#039;&#039;обязательно изучите эту информацию&#039;&#039;&#039;, например по [https://www.youtube.com/watch?v=pSBb9GLrM1s видео Дмитрия Соркина], и &#039;&#039;&#039;только после этого&#039;&#039;&#039; продолжайте. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве отправной точки &amp;lt;u&amp;gt;крайне советую&amp;lt;/u&amp;gt; использовать конфигурационные файлы для &#039;&#039;&#039;Ender-3&#039;&#039;&#039; &amp;lt;u&amp;gt;из папки с примерами&amp;lt;/u&amp;gt;, это избавит от необходимости конфигурирования концевиков, направлений моторов, зоны печати и прочих важных вещей – там это уже сделано. &amp;lt;u&amp;gt;Здесь эти настройки рассматриваться не будут&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Установка PlatformIO IDE===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_PlatfIO_1.png|300px|thumb|right|Установка PlatformIO в VS Code]]&lt;br /&gt;
[[Файл:SKR_TMC_platformio open.png|300px|thumb|right|Открыть проект Marlin в PlatformIO]]&lt;br /&gt;
&lt;br /&gt;
* Качаем последнюю версию [https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip Marlin bugfix-2.0.x]. &lt;br /&gt;
* Качаем [https://code.visualstudio.com/Download VS Code]. &lt;br /&gt;
* Запускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
** Заходим в &#039;&#039;&#039;Extensions&#039;&#039;&#039; &lt;br /&gt;
** Вводим в строку поиска &#039;&#039;platformio&#039;&#039; &lt;br /&gt;
** Жмем зеленую кнопку &#039;&#039;&#039;Install&#039;&#039;&#039; возле расширения &#039;&#039;&#039;PlatformIO IDE&#039;&#039;&#039;&lt;br /&gt;
** Ждем завершения установки расширения&lt;br /&gt;
* Перезапускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
* На появившейся странице &#039;&#039;&#039;PIO&#039;&#039;&#039; Home жмем кнопку &#039;&#039;&#039;Open Project&#039;&#039;&#039; &lt;br /&gt;
* Заходим в папку с прошивкой (в ней должен быть файл &#039;&#039;platformio.ini&#039;&#039;)&lt;br /&gt;
* Жмем &#039;&#039;&#039;Open&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Конфигурация===&lt;br /&gt;
Нам нужно будет внести изменения в 3 файла: &#039;&#039;platformio.ini, configuration.h и configuration_adv.h&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Начнем по порядку. Настоятельно советую пользоваться поиском &#039;&#039;&#039;Ctrl+F&#039;&#039;&#039; для быстрого перехода к нужным настройкам.&lt;br /&gt;
&lt;br /&gt;
====platformio.ini====&lt;br /&gt;
Указываем в разделе [platformio] микроконтроллер, для которого будем компилировать прошивку.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;default_envs = LPC1768&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====configuration.h====&lt;br /&gt;
Настраиваем последовательные порты:&lt;br /&gt;
&lt;br /&gt;
 #define SERIAL_PORT -1&lt;br /&gt;
 #define SERIAL_PORT_2 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ускоряем немного обмен данными через последовательный порт&lt;br /&gt;
&lt;br /&gt;
 #define BAUDRATE 250000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какая у нас материнская плата&lt;br /&gt;
&lt;br /&gt;
 #ifndef MOTHERBOARD&lt;br /&gt;
   #define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убеждаемся, что включена защита от перегрева&lt;br /&gt;
&lt;br /&gt;
 #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders&lt;br /&gt;
 #define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed&lt;br /&gt;
 #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какие у нас установлены драйвера ШД&lt;br /&gt;
&lt;br /&gt;
 #define X_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Y_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Z_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define E0_DRIVER_TYPE TMC2208&lt;br /&gt;
&lt;br /&gt;
Если устанавливаем драйвера без управления по UART, то вместо TMC2208 пишем TMC2208_STANDALONE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем включить более плавные ускорения, при желании&lt;br /&gt;
&lt;br /&gt;
 #define S_CURVE_ACCELERATION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем направление мотора экструдера. Если редукторный фидер, пишем &#039;&#039;false&#039;&#039;, если безредукторный, то &#039;&#039;true&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define INVERT_E0_DIR true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем настроить пункт меню для калибровки стола – Level corners, печатная коловка будет поочередно перемещаться в каждый из 4 углов (в положение над регулировочным винтом) и в центр стола (здесь параметры для калибровки по эталону 0.1 мм, толщину эталона можно задать параметром LEVEL_CORNERS_HEIGHT)&lt;br /&gt;
&lt;br /&gt;
 #define LEVEL_BED_CORNERS&lt;br /&gt;
 #if ENABLED(LEVEL_BED_CORNERS)&lt;br /&gt;
   #define LEVEL_CORNERS_INSET 35    // (mm) An inset for corner leveling&lt;br /&gt;
   #define LEVEL_CORNERS_Z_HOP  5  // (mm) Move nozzle up before moving between corners&lt;br /&gt;
   #define LEVEL_CORNERS_HEIGHT 0.1  // (mm) Z height of nozzle at leveling points&lt;br /&gt;
   #define LEVEL_CENTER_TOO        // Move to the center after the last corner&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настраиваем более адекватные скорости хоуминга&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_FEEDRATE_XY (30*60)&lt;br /&gt;
 #define HOMING_FEEDRATE_Z  (4*60) // Если используется датчик автоуровня типа BLTouch/3DTouch, можно увеличить значение до (10*60) для ускорения автокалибровки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выбираем язык меню&lt;br /&gt;
&lt;br /&gt;
 #define LCD_LANGUAGE en&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем поддержку карты памяти&lt;br /&gt;
&lt;br /&gt;
 #define SDSUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Включаем&#039;&#039;&#039; «пищалку», чтобы она могла нас уведомлять о важных вещах типа перегрева, но &#039;&#039;&#039;выключаем&#039;&#039;&#039; звук в меню&lt;br /&gt;
&lt;br /&gt;
 #define SPEAKER&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 0&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_HZ 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем дефолтный дисплей Ender-3&lt;br /&gt;
&lt;br /&gt;
 #define CR10_STOCKDISPLAY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убираем «свист» вентиляторов от ШИМ&lt;br /&gt;
&lt;br /&gt;
 #define FAN_SOFT_PWM&lt;br /&gt;
 #define SOFT_PWM_SCALE 0&lt;br /&gt;
&lt;br /&gt;
====configuration_adv.h====&lt;br /&gt;
Включаем отображение значений АЦП вместе со значениями температуры по команде M105 (если потом хотим калибровать термистор, о чем позже будет статья)&lt;br /&gt;
&lt;br /&gt;
 #define SHOW_TEMP_ADC_VALUES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вентилятор обдува модели плохо стартует на низких оборотах, помогаем ему «пинком»&lt;br /&gt;
&lt;br /&gt;
 #define FAN_KICKSTART_TIME 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если подключили вентилятор обдува радиатора печатной головы вместо нагревателя второго хотенда, настраиваем тут пин и температуру включения&lt;br /&gt;
&lt;br /&gt;
 #define E0_AUTO_FAN_PIN FAN1_PIN // Cold-end fan to E1 heater&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более «нежные» делители скоростей для хоуминга, чтоб меньше разбивались концевики&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_BUMP_DIVISOR { 4, 4, 4 }  // Re-Bump Speed Divisor (Divides the Homing Feedrate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем время после последнего движения (в секундах), через которое отключается удержание ШД&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_STEPPER_DEACTIVE_TIME 300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более адекватные скорости для движения осей из меню принтера&lt;br /&gt;
&lt;br /&gt;
 #define MANUAL_FEEDRATE {100*60, 100*60, 10*60, 50*60}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Улучшаем печать по USB&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_MINSEGMENTTIME        50000&lt;br /&gt;
 &lt;br /&gt;
 #if ENABLED(SDSUPPORT)&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 32 // SD,LCD,Buttons take more memory, block buffer needs to be smaller&lt;br /&gt;
 #else&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_CMD_SIZE 96&lt;br /&gt;
 #define BUFSIZE 32&lt;br /&gt;
 &lt;br /&gt;
 #define TX_BUFFER_SIZE 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем звуковое оповещение при изменении Feedrate на главном экране энкодером (помогает избежать случайного изменения)&lt;br /&gt;
&lt;br /&gt;
 #define BEEP_ON_FEEDRATE_CHANGE&lt;br /&gt;
 #if ENABLED(BEEP_ON_FEEDRATE_CHANGE)&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_DURATION   10&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных статусных сообщений на экране&lt;br /&gt;
&lt;br /&gt;
 #define STATUS_MESSAGE_SCROLLING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Увеличиваем задержку (в миллисекундах) перед автоматическим выходом из меню на главный экран (&#039;&#039;беситбеситбеситбесит&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 #define LCD_TIMEOUT_TO_STATUS 60000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
«Чиним» прогресс-бар при печати через USB&lt;br /&gt;
&lt;br /&gt;
 #define LCD_SET_PROGRESS_MANUALLY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем подтверждение при выборе файла с флешки для печати&lt;br /&gt;
&lt;br /&gt;
 #define SD_MENU_CONFIRM_START&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем поддержку отправки длинных имен файлов с флешки на хост по USB&lt;br /&gt;
&lt;br /&gt;
 #define LONG_FILENAME_HOST_SUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных имен файлов на флешке в меню&lt;br /&gt;
&lt;br /&gt;
 #define SCROLL_LONG_FILENAMES&lt;br /&gt;
&lt;br /&gt;
Настраиваем SD карту&lt;br /&gt;
&lt;br /&gt;
 #ifdef TARGET_LPC1768&lt;br /&gt;
   //#define LPC_SD_LCD          // Use the SD drive in the external LCD controller.&lt;br /&gt;
   #define LPC_SD_ONBOARD      // Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)&lt;br /&gt;
   //#define LPC_SD_CUSTOM_CABLE // Use a custom cable to access the SD (as defined in a pins file).&lt;br /&gt;
   //#define USB_SD_DISABLED     // Disable SD Card access over USB (for security).&lt;br /&gt;
   #if ENABLED(LPC_SD_ONBOARD)&lt;br /&gt;
     //#define USB_SD_ONBOARD    // Данную опцию можно включить, чтоб видеть флешку с хоста, как через кард-ридер, но я не проверял&lt;br /&gt;
   #endif&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем babystepping - возможность вручную задавать точно оффсет оси Z во время печати из меню принтера, например, если мы видим, что с первым слоем что-то не так&lt;br /&gt;
&lt;br /&gt;
 #define BABYSTEPPING&lt;br /&gt;
 #if ENABLED(BABYSTEPPING)&lt;br /&gt;
   //#define BABYSTEP_WITHOUT_HOMING&lt;br /&gt;
   //#define BABYSTEP_XY                     // Also enable X/Y Babystepping. Not supported on DELTA!&lt;br /&gt;
   #define BABYSTEP_INVERT_Z false           // Change if Z babysteps should go the other way&lt;br /&gt;
   #define BABYSTEP_MULTIPLICATOR  2         // Babysteps are very small. Increase for faster motion. &lt;br /&gt;
 &lt;br /&gt;
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING    // Double-click on the Status Screen for Z Babystepping.&lt;br /&gt;
   #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)&lt;br /&gt;
     #define DOUBLECLICK_MAX_INTERVAL 1250   // Maximum interval between clicks, in milliseconds.&lt;br /&gt;
                                             // Note: Extra time may be added to mitigate controller latency.&lt;br /&gt;
     //#define BABYSTEP_ALWAYS_AVAILABLE     // Allow babystepping at all times (not just during movement).&lt;br /&gt;
     #define MOVE_Z_WHEN_IDLE              // Jump to the move Z menu on doubleclick when printer is idle.&lt;br /&gt;
     #if ENABLED(MOVE_Z_WHEN_IDLE)&lt;br /&gt;
       #define MOVE_Z_IDLE_MULTIPLICATOR 1   // Multiply 1mm by this factor for the move step size.&lt;br /&gt;
     #endif&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При желании включаем LA&lt;br /&gt;
&lt;br /&gt;
 #define LIN_ADVANCE&lt;br /&gt;
 #if ENABLED(LIN_ADVANCE)&lt;br /&gt;
   //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants&lt;br /&gt;
   #define LIN_ADVANCE_K 0.0    // Unit: mm compression per 1mm/s extruder speed&lt;br /&gt;
   //#define LA_DEBUG            // If enabled, this will generate debug information output over USB.&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Уменьшаем размер минимальной отрабатываемой группы шагов&lt;br /&gt;
&lt;br /&gt;
 #define MIN_STEPS_PER_SEGMENT 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Если выше включили Linear Advance, необходимо также изменить значение MINIMUM_STEPPER_PULSE для работоспособности экструдера (актуально на 10.09.19)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define MINIMUM_STEPPER_PULSE 2 // если не работает 2, ставим 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем Emergency Parser, чтобы иметь возможность остановить принтер мгновенно, а не ждать, пока выполнятся все команды из буфера&lt;br /&gt;
&lt;br /&gt;
 #define EMERGENCY_PARSER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наконец, переходим к собственно настройке драйверов!&lt;br /&gt;
&lt;br /&gt;
Настраиваем токи и дробление шага. Здесь каждый пусть решает сам, какое дробление использовать, включать ли интерполяцию - спорить можно бесконечно.&lt;br /&gt;
&lt;br /&gt;
 #if HAS_TRINAMIC&lt;br /&gt;
 &lt;br /&gt;
   #define HOLD_MULTIPLIER    0.6  // Множитель тока в режиме удержания ШД&lt;br /&gt;
   #define INTERPOLATE       true  // Включает или выключает интерполяцию по ВСЕМ осям&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(X)&lt;br /&gt;
     #define X_CURRENT     450  // сюда пишем наш ток Irms, который мы посчитали ранее&lt;br /&gt;
     #define X_MICROSTEPS    16  // количество микрошагов, поддерживается нативно до 256, не забываем изменить число шагов на мм&lt;br /&gt;
     #define X_RSENSE     0.11 // Если на Ваших драйверах резистор Rsense отличается от стандартного R110, сюда вписываем номинал&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Y)&lt;br /&gt;
     #define Y_CURRENT     500&lt;br /&gt;
     #define Y_MICROSTEPS    16&lt;br /&gt;
     #define Y_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Z)&lt;br /&gt;
     #define Z_CURRENT     550&lt;br /&gt;
     #define Z_MICROSTEPS    16&lt;br /&gt;
     #define Z_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(E0)&lt;br /&gt;
     #define E0_CURRENT    700&lt;br /&gt;
     #define E0_MICROSTEPS   16&lt;br /&gt;
     #define E0_RSENSE    0.11&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем тихий режим StealthChop (на оси экструдера, особенно с редукторным фидером, стабильнее работает SpreadCycle, по моим ощущениям)&lt;br /&gt;
&lt;br /&gt;
   #define STEALTHCHOP_XY&lt;br /&gt;
   #define STEALTHCHOP_Z&lt;br /&gt;
   //#define STEALTHCHOP_E&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем режим работы чоппера SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define CHOPPER_TIMING CHOPPER_DEFAULT_24V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем защиту драйверов от перегрева&lt;br /&gt;
&lt;br /&gt;
   #define MONITOR_DRIVER_STATUS&lt;br /&gt;
 &lt;br /&gt;
   #if ENABLED(MONITOR_DRIVER_STATUS)&lt;br /&gt;
     #define CURRENT_STEP_DOWN     50  // [mA]&lt;br /&gt;
     #define REPORT_CURRENT_CHANGE&lt;br /&gt;
     #define STOP_ON_ERROR&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем гибридный режим - при превышении указанной здесь скорости алгоритм будет переключаться со StealthChop на SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define HYBRID_THRESHOLD&lt;br /&gt;
 &lt;br /&gt;
   #define X_HYBRID_THRESHOLD     120  // [mm/s]&lt;br /&gt;
   #define Y_HYBRID_THRESHOLD     120&lt;br /&gt;
   #define Z_HYBRID_THRESHOLD      10&lt;br /&gt;
   #define E0_HYBRID_THRESHOLD     15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Очень важно!&#039;&#039;&#039; Включаем отладочный режими&lt;br /&gt;
&lt;br /&gt;
   #define TMC_DEBUG&lt;br /&gt;
&lt;br /&gt;
В данной секции можно задать отдельно любые параметры для каждого из драйверов, например выборочно выключить интерполяцию на Z и E, если выше она включена для всех осей, но перед тем, как что-то здесь писать, &#039;&#039;&#039;советую разобраться&#039;&#039;&#039; с функциями библиотеки [https://github.com/teemuatlut/TMCStepper TMCStepper]. В противном случае оставляйте эту секцию пустой, чтобы ничего не сломать.&lt;br /&gt;
&lt;br /&gt;
   #define TMC_ADV() { \&lt;br /&gt;
     stepperE0.intpol(0); \&lt;br /&gt;
     stepperZ.intpol(0); \&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем автоотправку температуры по USB&lt;br /&gt;
&lt;br /&gt;
 #define AUTO_REPORT_TEMPERATURES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем расширенный отчет о возможностях прошивки для USB хоста&lt;br /&gt;
&lt;br /&gt;
 #define EXTENDED_CAPABILITIES_REPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выключаем экструзию по объему&lt;br /&gt;
&lt;br /&gt;
 #define NO_VOLUMETRICS&lt;br /&gt;
&lt;br /&gt;
====Компиляция и прошивка платы====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_hoba.jpg|300px|thumb|right|Хоба! &#039;&#039;&#039;Поздравляем - Вы восхитительны!&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
После того, как прошивка сконфигурирована, &#039;&#039;&#039;сохраняем&#039;&#039;&#039; изменения. Жмем &#039;&#039;&#039;Ctrl+Alt+B&#039;&#039;&#039; - запустится процесс компиляции прошивки. Если ошибок нет, после его завершения в терминале &#039;&#039;&#039;VS Code&#039;&#039;&#039; напротив &#039;&#039;&#039;LPC1768&#039;&#039;&#039; будет зеленая надпись &#039;&#039;&#039;SUCCESS&#039;&#039;&#039;. В папке &#039;&#039;Marlin-bugfix-2.0.x\.pioenvs\LPC1768&#039;&#039; появится файл &#039;&#039;firmware.bin&#039;&#039; - это и есть скомпилированная прошивка. Копируем этот файл на &#039;&#039;&#039;SD&#039;&#039;&#039;-карту и вставляем в плату, после чего перезапускаем плату - загрузчик установит прошивку и вы увидите стартовый экран &#039;&#039;&#039;Marlin&#039;&#039;&#039; (не беспокойтесь, после перезагрузки файл прошивки на флешке будет переименован, его не нужно удалять вручную, плата не будет перепрошиваться при каждой перезагрузке, пока Вы не кинете новый файл прошивки на флешку). &amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Не забываем после перепрошивки инициализировать EEPROM.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Что дальше?==&lt;br /&gt;
Что же (а главное - как) мы можем настроить благодаря подключению по UART?&lt;br /&gt;
&lt;br /&gt;
===Меню TMC drivers===&lt;br /&gt;
В меню Configuration -&amp;gt; Advanced configuration появилось новое подменю - &#039;&#039;&#039;TMC drivers&#039;&#039;&#039;, содержащее 3 пункта:&lt;br /&gt;
#&#039;&#039;&#039;Driver current&#039;&#039;&#039; - настройка тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера &lt;br /&gt;
#&#039;&#039;&#039;Hybrid threshold&#039;&#039;&#039; - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle. Если хотите выключить гибридный режим для какой-то из осей и использовать только StealthChop, поставьте здесь очень большое значение  (на 22 мая 2019 существует баг - при загрузке настроек из EEPROM все значения отображаются равными 0. При этом на самом деле загружаются правильные значения, их даже можно поменять в этом меню и сохранить в EEPROM, и все работает, но в самом меню отображается 0)&lt;br /&gt;
#&#039;&#039;&#039;Microstepping mode&#039;&#039;&#039; - ручное переключение между StealthChop и SpreadCycle для каждой оси. Если стоит &#039;&#039;&#039;&amp;quot;on&amp;quot;&#039;&#039;&#039;, то используется StealthChop и гибридный режим, если &#039;&#039;&#039;&amp;quot;off&amp;quot;&#039;&#039;&#039; - то всегда включен только SpreadCycle&lt;br /&gt;
&lt;br /&gt;
===Команды G-code===&lt;br /&gt;
Ниже приводятся команды G-code для работы с драйверами TMC2208&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M122.html M122] - вывод отладочной информации о состоянии драйверов - установленный ток, дробление шага и интерполяция, состояние регистров, состояние защиты от перегрева и прочие полезности&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M569.html M569] - ручное переключение между StealthChop и SpreadCycle для кождой оси&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M906.html M906] - задание тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M911.html M911] - информация о сотоянии защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M912.html M912] - сброс состояния защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M913.html M913] - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle&lt;br /&gt;
&lt;br /&gt;
==Цитирование==&lt;br /&gt;
Вы можете цитировать материал из данной статьи в произвольном объеме при условии &#039;&#039;&#039;обязательного указания ссылки на первоисточник&#039;&#039;&#039;. В ином случае цитирование не допускается.&lt;br /&gt;
&lt;br /&gt;
Автор - @ArtificalSUN&lt;/div&gt;</summary>
		<author><name>AndreyOvodov</name></author>
	</entry>
	<entry>
		<id>https://ender3.club/index.php?title=SKR_1.3&amp;diff=238</id>
		<title>SKR 1.3</title>
		<link rel="alternate" type="text/html" href="https://ender3.club/index.php?title=SKR_1.3&amp;diff=238"/>
		<updated>2019-11-30T13:25:10Z</updated>

		<summary type="html">&lt;p&gt;AndreyOvodov: /* platformio.ini */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:SKR_TMC_iwanttoplayagame.png|300px|thumb|right|I want to play a game...]]&lt;br /&gt;
&lt;br /&gt;
==Введение==&lt;br /&gt;
Данная статья описывает опыт установки на принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039; и &#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; материнской платы &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; с драйверами &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; в режиме управления по &#039;&#039;&#039;UART&#039;&#039;&#039; с последующей настройкой и прошивкой &#039;&#039;&#039;Marlin 2.x bugfix&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Для чего это нужно?==&lt;br /&gt;
Плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; оснащена 32-битным микропроцессором &#039;&#039;&#039;LPC1768&#039;&#039;&#039; на ядре &#039;&#039;&#039;ARM&#039;&#039;&#039; &#039;&#039;&#039;Cortex-M3&#039;&#039;&#039;. Данный микропроцессор обладает на порядок более внушительными вычислительными возможностями, чем &#039;&#039;&#039;ATmega1284P&#039;&#039;&#039;, установленный на штатной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039;, которой оснащаются принтеры серии &#039;&#039;&#039;Ender&#039;&#039;&#039;. &lt;br /&gt;
Это дает возможность одновременно задействовать нагружающие микропроцессор и занимающие много памяти функции, такие как использование &#039;&#039;&#039;Linear Advance&#039;&#039;&#039;, автоуровня типа &#039;&#039;&#039;BLTouch/3DTouch&#039;&#039;&#039;, плавных ускорений &#039;&#039;&#039;S Curve Acceleration&#039;&#039;&#039; и др. Кроме того, в целом повышается быстродействие системы и максимально достижимая скорость печати.&lt;br /&gt;
&lt;br /&gt;
Помимо этого, плата &#039;&#039;&#039;BIG TREE TECH (BIQU) SKR v1.3&#039;&#039;&#039; имеет еще несколько важных преимуществ:&lt;br /&gt;
# Колодки для драйверов в форм-факторе &#039;&#039;&#039;Polulu&#039;&#039;&#039; (&#039;&#039;&#039;SilentStepStick&#039;&#039;&#039;) - возможность установить любые поддерживаемые прошивкой драйвера без необходимости перепайки и колхозинка штатной платы&lt;br /&gt;
# Возможность установки до 5 драйверов и 2 нагревателей хотенда - можно установить дополнительный экструдер, &#039;&#039;&#039;toolchange&#039;&#039;&#039;-систему, &#039;&#039;&#039;MMU&#039;&#039;&#039;-ситему, использовать выход на второй нагреватель как дополнительный управляемый &#039;&#039;&#039;PWM&#039;&#039;&#039;-выход (подсветка/охлаждение)&lt;br /&gt;
# Наличие предохранителей на плате - меньше вероятность спалить мосфет стола или хотенда при случайном замыкании&lt;br /&gt;
# Возможность подключить цветной (сенсорный) дисплей, наличие дополнительных &#039;&#039;&#039;AUX&#039;&#039;&#039; портов&lt;br /&gt;
# Разводка под управление драйверами по [https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B0%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%B8%D1%91%D0%BC%D0%BE%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA &#039;&#039;&#039;UART&#039;&#039;&#039;] и &#039;&#039;&#039;[https://ru.wikipedia.org/wiki/Serial_Peripheral_Interface SPI&#039;&#039;&#039;] «из коробки»&lt;br /&gt;
&lt;br /&gt;
Для управления шаговыми двигателями (ШД) было решено использовать драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039;. Это относительно новые драйвера, пришедшие на смену хорошо зарекомендовавшему себя поколению &#039;&#039;&#039;TMC21XX&#039;&#039;&#039;. К их преимуществам можно отнести:&lt;br /&gt;
# Технология &#039;&#039;&#039;StealthChop2&#039;&#039;&#039; – тишина работы моторов&lt;br /&gt;
# Технология &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; – оригинальный алгоритм &#039;&#039;&#039;direct current&#039;&#039;&#039; управления от &#039;&#039;&#039;Trinamic&#039;&#039;&#039;, позволяет точно управлять током в обмотках &#039;&#039;&#039;ШД&#039;&#039;&#039; для увеличения точности позиционирования и момента на высоких скоростях&lt;br /&gt;
# Возможность работы в режиме нативного дробления до 1/256 шага или с меньшим дроблением, но с интерполяцией до 1/256.&lt;br /&gt;
# Возможность управления по &#039;&#039;&#039;UART&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
На последнем пункте остановимся подробнее. В данной статье рассматривается именно способ установки драйверов c управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;. Это позволяет из прошивки конфигурировать ток, дробление шага, интерполяцию, режим чоппера и другие параметры работы драйвера. Кроме того, в прошивке Marlin (и, возможно, в других) реализован так называемый гибридный режим, суть которого в автоматическом переключении драйвера из тихого режима StealthChop2 в более «мощный» &#039;&#039;&#039;SpreadCycle&#039;&#039;&#039; при достижении определенной скорости (&#039;&#039;&#039;hybrid mode threshold&#039;&#039;&#039;). Это позволяет «поддать жару», когда это нужно, наслаждаясь тишиной в остальное время. Помимо этого, используя управление по &#039;&#039;&#039;UART&#039;&#039;&#039;, можно настроить фазы чоппера &#039;&#039;&#039;SpeadCycle&#039;&#039;&#039; для достижения меньшего уровня шума в этом режиме (я пока этого не делал и это тема для отдельной статьи).&lt;br /&gt;
&lt;br /&gt;
==Что нам понадобится==&lt;br /&gt;
# Принтер &#039;&#039;&#039;Creality3D&#039;&#039;&#039; &#039;&#039;&#039;Ender-3&#039;&#039;&#039;/&#039;&#039;&#039;Ender-3 Pro&#039;&#039;&#039; (Ваш К.О.)&lt;br /&gt;
# Плата &#039;&#039;&#039;BIG TREE TECH&#039;&#039;&#039; (&#039;&#039;&#039;BIQU&#039;&#039;&#039;) &#039;&#039;&#039;SKR v1.3&#039;&#039;&#039;&lt;br /&gt;
# Драйвера &#039;&#039;&#039;Trinamic TMC2208&#039;&#039;&#039; &#039;&#039;&#039;v2.1&#039;&#039;&#039; или &#039;&#039;&#039;v3.0&#039;&#039;&#039;&lt;br /&gt;
# Паяльник&lt;br /&gt;
# Набор шестигранных ключей&lt;br /&gt;
# Надстройка &#039;&#039;&#039;PlatformIO&#039;&#039;&#039; для &#039;&#039;&#039;IDE VS Code&#039;&#039;&#039;&lt;br /&gt;
# Прошивка &#039;&#039;&#039; Marlin&#039;&#039;&#039; версии &#039;&#039;&#039;bugfix-2.0.x&#039;&#039;&#039; (самая свежая)&lt;br /&gt;
# Вольтметр&lt;br /&gt;
# Мелкая отвертка под плоский шлиц (лучше диэлектрическая)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ПАААААЕХАЛИ!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Электроника==&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_default_turnpots.png|300px|thumb|right|Расположение потенциометров &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; на стандартной плате]]&lt;br /&gt;
&lt;br /&gt;
===Важно: считаем ток ШД!===&lt;br /&gt;
Насколько я успел заметить, на принтеры &#039;&#039;&#039;Creality3D&#039;&#039;&#039; устанавливается широкий спектр ШД, отличающихся своими характеристиками, в первую очередь – &amp;lt;u&amp;gt;&#039;&#039;максимальным током обмоток&#039;&#039;&amp;lt;/u&amp;gt;. Некоторые моторы практически невозможно «нагуглить» по маркировке и узнать требуемый им ток. Поэтому для того, чтобы действовать наверняка, я советую &amp;lt;u&amp;gt;перед&amp;lt;/u&amp;gt; заменой платы выяснить, какой ток установлен для &#039;&#039;&#039;Ваших конкретных&#039;&#039;&#039; &#039;&#039;&#039;ШД&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
На дефолтной плате &#039;&#039;&#039;Creality 1.1.x&#039;&#039;&#039; установлено четыре драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039;, распаянных непосредственно на плате. Рядом с каждым драйвером установлен &#039;&#039;потенциометр&#039;&#039; (&#039;&#039;&#039;turnpot&#039;&#039;&#039;), который задает опорное напряжение &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Внимание!&#039;&#039;&#039; Настройка (и измерение) V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt; должна производиться с &#039;&#039;&#039;отключенными&#039;&#039;&#039; проводами ШД, но &#039;&#039;&#039;подключенным&#039;&#039;&#039; основным питанием платы.&lt;br /&gt;
&lt;br /&gt;
* Отключите от платы провода &#039;&#039;&#039;ШД&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Включите питание. &amp;lt;br /&amp;gt;&lt;br /&gt;
* Аккуратно измерьте напряжение между центром «крутилки» потенциометра и землей (за землю можно взять черный провод, приходящий в винтовую колодку на плате с блока питания) для каждого из драйверов, запишите. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь посчитаем ток, который нужно установить для наших конкретных &#039;&#039;&#039;ШД&#039;&#039;&#039; на новых драйверах. &amp;lt;br /&amp;gt;&lt;br /&gt;
Дело в том, что &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для драйвера &#039;&#039;&#039;A4988&#039;&#039;&#039; задает максимальный ток &#039;&#039;&#039;I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, в то время как для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; мы задаем среднеквадратичное значение тока &#039;&#039;&#039;I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt;&#039;&#039;&#039; ~ I&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;/1.414&lt;br /&gt;
&lt;br /&gt;
Приступим к расчетам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt; = I&amp;lt;sub&amp;gt;max(A4988)&amp;lt;/sub&amp;gt;/1.414 = V&amp;lt;sub&amp;gt;ref(A4988)&amp;lt;/sub&amp;gt;/1.1312&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это и есть нужное нам значение тока новых драйверов. При управлении по &#039;&#039;&#039;UART&#039;&#039;&#039; данного расчета достаточно. Тем, кто не хочет управлять по &#039;&#039;&#039;UART&#039;&#039;&#039;, то есть устанавливает драйвера в &#039;&#039;&#039;standalone-режиме&#039;&#039;&#039;, необходимо посчитать &#039;&#039;&#039;V&amp;lt;sub&amp;gt;ref&amp;lt;/sub&amp;gt;&#039;&#039;&#039; для &#039;&#039;&#039;TMC2208&#039;&#039;&#039; по следующей формуле:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;V&amp;lt;sub&amp;gt;ref(TMC2208)&amp;lt;/sub&amp;gt; = (I&amp;lt;sub&amp;gt;rms(TMC2208)&amp;lt;/sub&amp;gt;*2.5) / 1.77&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Указанная выше формула справедлива только для наиболее распространенных вариантов исполнения драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с референсным резистором &#039;&#039;&#039;R&amp;lt;sub&amp;gt;sense&amp;lt;/sub&amp;gt; = 0.11 Ом&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подготовка драйверов===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_driver_soldering.jpg|300px|thumb|right|Перымычка &#039;&#039;&#039;J2&#039;&#039;&#039;, которую нужно запаять на драйвере для управления по &#039;&#039;&#039;UART&#039;&#039;&#039;. Также не лишним будет проверить номинал резисторов &#039;&#039;&#039;R6&#039;&#039;&#039; и &#039;&#039;&#039;R7&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы использовать &#039;&#039;&#039;UART&#039;&#039;&#039;-режим для управления драйверами, необходимо &#039;&#039;&#039;&amp;lt;u&amp;gt;АККУРАТНО&amp;lt;/u&amp;gt;&#039;&#039;&#039; запаять на них перемычку &#039;&#039;&#039;J2&#039;&#039;&#039; (см. фото). &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь и далее показаны драйвера от &#039;&#039;&#039;BIGTREETECH&#039;&#039;&#039; версии &#039;&#039;&#039;2.1&#039;&#039;&#039;, но для драйверов от других производителей, например &#039;&#039;&#039;Fysetc&#039;&#039;&#039;, действия будут аналогичными. &amp;lt;/br&amp;gt;&lt;br /&gt;
Для драйверов версии &#039;&#039;&#039;3.0&#039;&#039;&#039; инструкции аналогичны.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация разъемов концевиков===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_endstops_2to3.jpg|300px|thumb|right|Переделка дефолтных двухконтактных разъемов концевиков в трехконтактные под &#039;&#039;&#039;SKR&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
Для подключения родных &#039;&#039;двухконтактных&#039;&#039; разъемов концевиков в &#039;&#039;трехконтактные&#039;&#039; разъемы на плате &#039;&#039;&#039;SKR&#039;&#039;&#039; нужно модифицировать провода одним из способов (чтобы провода подключались к двум &#039;&#039;нижним&#039;&#039; пинам разъема, см. рисунок):&lt;br /&gt;
&lt;br /&gt;
# «Переобуваем» провод в &#039;&#039;трехпиновый&#039;&#039; корпус – самый лучший вариант, если есть такие корпуса&lt;br /&gt;
# Подрезаем один из двух ключевых выступов корпуса разъема на проводе так, чтобы он правильно вошел в разъем на плате&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Извлечение штатной платы===&lt;br /&gt;
&lt;br /&gt;
Перед отсоединением разъемов от платы, не забудьте пометить удобным способом провода, на которых нет заводских меток. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Отключаем питание принтера &lt;br /&gt;
* Снимаем крышку с корпуса электроники&lt;br /&gt;
* Отключаем вентилятор охлаждения от платы&lt;br /&gt;
* Аккуратно удаляем термоклей со всех разъемов&lt;br /&gt;
* Отключаем все провода от платы&lt;br /&gt;
* Откручиваем плату от корпуса электроники&lt;br /&gt;
* Откручиваем корпус электроники от рамы принтера (один из винтов находится снизу, под принтером).&lt;br /&gt;
&lt;br /&gt;
===Установка Джамперов в режим UART===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Electronica-skr-1 3.jpg|300px|thumb|right|Ставим джамперы согласно целеуказателям]]&lt;br /&gt;
&lt;br /&gt;
* Убираем с платы все джамперы&lt;br /&gt;
* Устанавливаем пять джамперов возле площадок драйверов (включает управление по &#039;&#039;&#039;UART&#039;&#039;&#039;)&lt;br /&gt;
* Устанавливаем один джампер в центре платы на два левых контакта (&#039;&#039;&#039;INT +5V&#039;&#039;&#039; отвечает за режим питания контроллера – от внешнего &#039;&#039;&#039;БП&#039;&#039;&#039;). Правая пара контактов отвечает за питание по &#039;&#039;&#039;USB&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Подключение SKR 1.3===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_wiring_huyayring.png|300px|thumb|right|Схема подключения проводов и установки джамперов на плате &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039;. В дефолтной конфигурации &#039;&#039;&#039;Ender-3&#039;&#039;&#039; с одним экструдером. Щелкните, чтобы посмотреть в полном размере.]]&lt;br /&gt;
&lt;br /&gt;
* Устанавливаем драйвера: черные ножки в черные разъемы, цветные ножки (они могут быть синими или красными) в красные разъемы. Если дрова поставить вверх ногами  – дровам &#039;&#039;&#039;&amp;lt;u&amp;gt;кирдык&amp;lt;/u&amp;gt;&#039;&#039;&#039;. &lt;br /&gt;
* Хотя сама плата запускается от &#039;&#039;&#039;5 V&#039;&#039;&#039; по &#039;&#039;&#039;USB&#039;&#039;&#039;, &#039;&#039;&amp;lt;u&amp;gt;драйвера не будут работать&amp;lt;/u&amp;gt;&#039;&#039; без подключенного основного питания &#039;&#039;&#039;24 V&#039;&#039;&#039;, и на дисплее будет отображаться &#039;&#039;&#039;&amp;lt;u&amp;gt;TMC connection error&amp;lt;/u&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
* Теперь подключаем все провода в соответствующие разъемы платы (&#039;&#039;&#039;внимание на полярность!&#039;&#039;&#039;), для этого может потребоваться немного распотрошить жгут проводов. &lt;br /&gt;
* Вентилятор обдува детали подключаем в разъем &#039;&#039;&#039;FAN&#039;&#039;&#039;, &lt;br /&gt;
* Вентилятор охлаждения электроники – в разъем &#039;&#039;&#039;12/24 V&#039;&#039;&#039; (в самом углу платы, возле разъема &#039;&#039;&#039;ШД&#039;&#039;&#039; оси &#039;&#039;&#039;X&#039;&#039;&#039;) &lt;br /&gt;
* Вентилятор охлаждения радиатора печатной головы – в разъем  нагревателя второго хотенда &#039;&#039;&#039;HT1&#039;&#039;&#039; (винтовая колодка) если у нас только 1 хотенд, иначе параллельно вентилятору охлаждения электроники. &lt;br /&gt;
* Экран подключаем в разъем &#039;&#039;&#039;EXP1&#039;&#039;&#039;, &lt;br /&gt;
* Провода концевиков – в трехпиновые разъемы &#039;&#039;&#039;Xmin, Ymin, Zmin&#039;&#039;&#039; на плате, &lt;br /&gt;
* Остальное подключается очевидным образом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=both /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Прошивка==&lt;br /&gt;
&lt;br /&gt;
===Дисклеймер===&lt;br /&gt;
&lt;br /&gt;
Данный раздел предполагает, что Вы &amp;lt;u&amp;gt;знаете&amp;lt;/u&amp;gt;, как конфигурировать прошивку &#039;&#039;&#039;Marlin&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Здесь будут описаны &amp;lt;u&amp;gt;только специфические настройки&amp;lt;/u&amp;gt; для платы &#039;&#039;&#039;SKR 1.3&#039;&#039;&#039; и драйверов &#039;&#039;&#039;TMC2208&#039;&#039;&#039; с управлением по &#039;&#039;&#039;UART&#039;&#039;&#039;, а также &#039;&#039;&#039;несколько других полезных твиков&#039;&#039;&#039;. &amp;lt;/br&amp;gt;&lt;br /&gt;
Если Вы &#039;&#039;&#039;не знаете&#039;&#039;&#039; как конфигурируется прошивка, как устанавливаются размеры области печати, шаги по осям, ускорения и прочие основные параметры принтера – для начала &#039;&#039;&#039;обязательно изучите эту информацию&#039;&#039;&#039;, например по [https://www.youtube.com/watch?v=pSBb9GLrM1s видео Дмитрия Соркина], и &#039;&#039;&#039;только после этого&#039;&#039;&#039; продолжайте. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве отправной точки &amp;lt;u&amp;gt;крайне советую&amp;lt;/u&amp;gt; использовать конфигурационные файлы для &#039;&#039;&#039;Ender-3&#039;&#039;&#039; &amp;lt;u&amp;gt;из папки с примерами&amp;lt;/u&amp;gt;, это избавит от необходимости конфигурирования концевиков, направлений моторов, зоны печати и прочих важных вещей – там это уже сделано. &amp;lt;u&amp;gt;Здесь эти настройки рассматриваться не будут&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Установка PlatformIO IDE===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_PlatfIO_1.png|300px|thumb|right|Установка PlatformIO в VS Code]]&lt;br /&gt;
[[Файл:SKR_TMC_platformio open.png|300px|thumb|right|Открыть проект Marlin в PlatformIO]]&lt;br /&gt;
&lt;br /&gt;
* Качаем последнюю версию [https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip Marlin bugfix-2.0.x]. &lt;br /&gt;
* Качаем [https://code.visualstudio.com/Download VS Code]. &lt;br /&gt;
* Запускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
** Заходим в &#039;&#039;&#039;Extensions&#039;&#039;&#039; &lt;br /&gt;
** Вводим в строку поиска &#039;&#039;platformio&#039;&#039; &lt;br /&gt;
** Жмем зеленую кнопку &#039;&#039;&#039;Install&#039;&#039;&#039; возле расширения &#039;&#039;&#039;PlatformIO IDE&#039;&#039;&#039;&lt;br /&gt;
** Ждем завершения установки расширения&lt;br /&gt;
* Перезапускаем &#039;&#039;&#039;VS Code&#039;&#039;&#039; &lt;br /&gt;
* На появившейся странице &#039;&#039;&#039;PIO&#039;&#039;&#039; Home жмем кнопку &#039;&#039;&#039;Open Project&#039;&#039;&#039; &lt;br /&gt;
* Заходим в папку с прошивкой (в ней должен быть файл &#039;&#039;platformio.ini&#039;&#039;)&lt;br /&gt;
* Жмем &#039;&#039;&#039;Open&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Конфигурация===&lt;br /&gt;
Нам нужно будет внести изменения в 3 файла: &#039;&#039;platformio.ini, configuration.h и configuration_adv.h&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Начнем по порядку. Настоятельно советую пользоваться поиском &#039;&#039;&#039;Ctrl+F&#039;&#039;&#039; для быстрого перехода к нужным настройкам.&lt;br /&gt;
&lt;br /&gt;
====platformio.ini====&lt;br /&gt;
Указываем в разделе [platformio] микроконтроллер, для которого будем компилировать прошивку.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;default_envs = LPC1768&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====configuration.h====&lt;br /&gt;
Настраиваем последовательные порты:&lt;br /&gt;
&lt;br /&gt;
 #define SERIAL_PORT -1&lt;br /&gt;
 #define SERIAL_PORT_2 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ускоряем немного обмен данными через последовательный порт&lt;br /&gt;
&lt;br /&gt;
 #define BAUDRATE 250000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какая у нас материнская плата&lt;br /&gt;
&lt;br /&gt;
 #ifndef MOTHERBOARD&lt;br /&gt;
   #define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убеждаемся, что включена защита от перегрева&lt;br /&gt;
&lt;br /&gt;
 #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders&lt;br /&gt;
 #define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed&lt;br /&gt;
 #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Указываем, какие у нас установлены драйвера ШД&lt;br /&gt;
&lt;br /&gt;
 #define X_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Y_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define Z_DRIVER_TYPE  TMC2208&lt;br /&gt;
 #define E0_DRIVER_TYPE TMC2208&lt;br /&gt;
&lt;br /&gt;
Если устанавливаем драйвера без управления по UART, то вместо TMC2208 пишем TMC2208_STANDALONE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем включить более плавные ускорения, при желании&lt;br /&gt;
&lt;br /&gt;
 #define S_CURVE_ACCELERATION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем направление мотора экструдера. Если редукторный фидер, пишем &#039;&#039;false&#039;&#039;, если безредукторный, то &#039;&#039;true&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define INVERT_E0_DIR true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можем настроить пункт меню для калибровки стола – Level corners, печатная коловка будет поочередно перемещаться в каждый из 4 углов (в положение над регулировочным винтом) и в центр стола (здесь параметры для калибровки по эталону 0.1 мм, толщину эталона можно задать параметром LEVEL_CORNERS_HEIGHT)&lt;br /&gt;
&lt;br /&gt;
 #define LEVEL_BED_CORNERS&lt;br /&gt;
 #if ENABLED(LEVEL_BED_CORNERS)&lt;br /&gt;
   #define LEVEL_CORNERS_INSET 35    // (mm) An inset for corner leveling&lt;br /&gt;
   #define LEVEL_CORNERS_Z_HOP  5  // (mm) Move nozzle up before moving between corners&lt;br /&gt;
   #define LEVEL_CORNERS_HEIGHT 0.1  // (mm) Z height of nozzle at leveling points&lt;br /&gt;
   #define LEVEL_CENTER_TOO        // Move to the center after the last corner&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настраиваем более адекватные скорости хоуминга&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_FEEDRATE_XY (30*60)&lt;br /&gt;
 #define HOMING_FEEDRATE_Z  (4*60) // Если используется датчик автоуровня типа BLTouch/3DTouch, можно увеличить значение до (10*60) для ускорения автокалибровки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выбираем язык меню&lt;br /&gt;
&lt;br /&gt;
 #define LCD_LANGUAGE en&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Проверяем поддержку карты памяти&lt;br /&gt;
&lt;br /&gt;
 #define SDSUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Включаем&#039;&#039;&#039; «пищалку», чтобы она могла нас уведомлять о важных вещах типа перегрева, но &#039;&#039;&#039;выключаем&#039;&#039;&#039; звук в меню&lt;br /&gt;
&lt;br /&gt;
 #define SPEAKER&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 0&lt;br /&gt;
 #define LCD_FEEDBACK_FREQUENCY_HZ 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем дефолтный дисплей Ender-3&lt;br /&gt;
&lt;br /&gt;
 #define CR10_STOCKDISPLAY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Убираем «свист» вентиляторов от ШИМ&lt;br /&gt;
&lt;br /&gt;
 #define FAN_SOFT_PWM&lt;br /&gt;
 #define SOFT_PWM_SCALE 0&lt;br /&gt;
&lt;br /&gt;
====configuration_adv.h====&lt;br /&gt;
Включаем отображение значений АЦП вместе со значениями температуры по команде M105 (если потом хотим калибровать термистор, о чем позже будет статья)&lt;br /&gt;
&lt;br /&gt;
 #define SHOW_TEMP_ADC_VALUES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вентилятор обдува модели плохо стартует на низких оборотах, помогаем ему «пинком»&lt;br /&gt;
&lt;br /&gt;
 #define FAN_KICKSTART_TIME 200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если подключили вентилятор обдува радиатора печатной головы вместо нагревателя второго хотенда, настраиваем тут пин и температуру включения&lt;br /&gt;
&lt;br /&gt;
 #define E0_AUTO_FAN_PIN FAN1_PIN // Cold-end fan to E1 heater&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50&lt;br /&gt;
 #define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более «нежные» делители скоростей для хоуминга, чтоб меньше разбивались концевики&lt;br /&gt;
&lt;br /&gt;
 #define HOMING_BUMP_DIVISOR { 4, 4, 4 }  // Re-Bump Speed Divisor (Divides the Homing Feedrate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем время после последнего движения (в секундах), через которое отключается удержание ШД&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_STEPPER_DEACTIVE_TIME 300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем более адекватные скорости для движения осей из меню принтера&lt;br /&gt;
&lt;br /&gt;
 #define MANUAL_FEEDRATE {100*60, 100*60, 10*60, 50*60}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Улучшаем печать по USB&lt;br /&gt;
&lt;br /&gt;
 #define DEFAULT_MINSEGMENTTIME        50000&lt;br /&gt;
 &lt;br /&gt;
 #if ENABLED(SDSUPPORT)&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 32 // SD,LCD,Buttons take more memory, block buffer needs to be smaller&lt;br /&gt;
 #else&lt;br /&gt;
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_CMD_SIZE 96&lt;br /&gt;
 #define BUFSIZE 32&lt;br /&gt;
 &lt;br /&gt;
 #define TX_BUFFER_SIZE 32&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем звуковое оповещение при изменении Feedrate на главном экране энкодером (помогает избежать случайного изменения)&lt;br /&gt;
&lt;br /&gt;
 #define BEEP_ON_FEEDRATE_CHANGE&lt;br /&gt;
 #if ENABLED(BEEP_ON_FEEDRATE_CHANGE)&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_DURATION   10&lt;br /&gt;
   #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных статусных сообщений на экране&lt;br /&gt;
&lt;br /&gt;
 #define STATUS_MESSAGE_SCROLLING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Увеличиваем задержку (в миллисекундах) перед автоматическим выходом из меню на главный экран (&#039;&#039;беситбеситбеситбесит&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 #define LCD_TIMEOUT_TO_STATUS 60000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
«Чиним» прогресс-бар при печати через USB&lt;br /&gt;
&lt;br /&gt;
 #define LCD_SET_PROGRESS_MANUALLY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опционально включаем подтверждение при выборе файла с флешки для печати&lt;br /&gt;
&lt;br /&gt;
 #define SD_MENU_CONFIRM_START&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем поддержку отправки длинных имен файлов с флешки на хост по USB&lt;br /&gt;
&lt;br /&gt;
 #define LONG_FILENAME_HOST_SUPPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем прокрутку длинных имен файлов на флешке в меню&lt;br /&gt;
&lt;br /&gt;
 #define SCROLL_LONG_FILENAMES&lt;br /&gt;
&lt;br /&gt;
Настраиваем SD карту&lt;br /&gt;
&lt;br /&gt;
 #ifdef TARGET_LPC1768&lt;br /&gt;
   //#define LPC_SD_LCD          // Use the SD drive in the external LCD controller.&lt;br /&gt;
   #define LPC_SD_ONBOARD      // Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)&lt;br /&gt;
   //#define LPC_SD_CUSTOM_CABLE // Use a custom cable to access the SD (as defined in a pins file).&lt;br /&gt;
   //#define USB_SD_DISABLED     // Disable SD Card access over USB (for security).&lt;br /&gt;
   #if ENABLED(LPC_SD_ONBOARD)&lt;br /&gt;
     //#define USB_SD_ONBOARD    // Данную опцию можно включить, чтоб видеть флешку с хоста, как через кард-ридер, но я не проверял&lt;br /&gt;
   #endif&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем babystepping - возможность вручную задавать точно оффсет оси Z во время печати из меню принтера, например, если мы видим, что с первым слоем что-то не так&lt;br /&gt;
&lt;br /&gt;
 #define BABYSTEPPING&lt;br /&gt;
 #if ENABLED(BABYSTEPPING)&lt;br /&gt;
   //#define BABYSTEP_WITHOUT_HOMING&lt;br /&gt;
   //#define BABYSTEP_XY                     // Also enable X/Y Babystepping. Not supported on DELTA!&lt;br /&gt;
   #define BABYSTEP_INVERT_Z false           // Change if Z babysteps should go the other way&lt;br /&gt;
   #define BABYSTEP_MULTIPLICATOR  2         // Babysteps are very small. Increase for faster motion. &lt;br /&gt;
 &lt;br /&gt;
   #define DOUBLECLICK_FOR_Z_BABYSTEPPING    // Double-click on the Status Screen for Z Babystepping.&lt;br /&gt;
   #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)&lt;br /&gt;
     #define DOUBLECLICK_MAX_INTERVAL 1250   // Maximum interval between clicks, in milliseconds.&lt;br /&gt;
                                             // Note: Extra time may be added to mitigate controller latency.&lt;br /&gt;
     //#define BABYSTEP_ALWAYS_AVAILABLE     // Allow babystepping at all times (not just during movement).&lt;br /&gt;
     #define MOVE_Z_WHEN_IDLE              // Jump to the move Z menu on doubleclick when printer is idle.&lt;br /&gt;
     #if ENABLED(MOVE_Z_WHEN_IDLE)&lt;br /&gt;
       #define MOVE_Z_IDLE_MULTIPLICATOR 1   // Multiply 1mm by this factor for the move step size.&lt;br /&gt;
     #endif&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При желании включаем LA&lt;br /&gt;
&lt;br /&gt;
 #define LIN_ADVANCE&lt;br /&gt;
 #if ENABLED(LIN_ADVANCE)&lt;br /&gt;
   //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants&lt;br /&gt;
   #define LIN_ADVANCE_K 0.0    // Unit: mm compression per 1mm/s extruder speed&lt;br /&gt;
   //#define LA_DEBUG            // If enabled, this will generate debug information output over USB.&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Уменьшаем размер минимальной отрабатываемой группы шагов&lt;br /&gt;
&lt;br /&gt;
 #define MIN_STEPS_PER_SEGMENT 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Если выше включили Linear Advance, необходимо также изменить значение MINIMUM_STEPPER_PULSE для работоспособности экструдера (актуально на 10.09.19)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #define MINIMUM_STEPPER_PULSE 2 // если не работает 2, ставим 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем Emergency Parser, чтобы иметь возможность остановить принтер мгновенно, а не ждать, пока выполнятся все команды из буфера&lt;br /&gt;
&lt;br /&gt;
 #define EMERGENCY_PARSER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Наконец, переходим к собственно настройке драйверов!&lt;br /&gt;
&lt;br /&gt;
Настраиваем токи и дробление шага. Здесь каждый пусть решает сам, какое дробление использовать, включать ли интерполяцию - спорить можно бесконечно.&lt;br /&gt;
&lt;br /&gt;
 #if HAS_TRINAMIC&lt;br /&gt;
 &lt;br /&gt;
   #define HOLD_MULTIPLIER    0.6  // Множитель тока в режиме удержания ШД&lt;br /&gt;
   #define INTERPOLATE       true  // Включает или выключает интерполяцию по ВСЕМ осям&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(X)&lt;br /&gt;
     #define X_CURRENT     450  // сюда пишем наш ток Irms, который мы посчитали ранее&lt;br /&gt;
     #define X_MICROSTEPS    16  // количество микрошагов, поддерживается нативно до 256, не забываем изменить число шагов на мм&lt;br /&gt;
     #define X_RSENSE     0.11 // Если на Ваших драйверах резистор Rsense отличается от стандартного R110, сюда вписываем номинал&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Y)&lt;br /&gt;
     #define Y_CURRENT     500&lt;br /&gt;
     #define Y_MICROSTEPS    16&lt;br /&gt;
     #define Y_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(Z)&lt;br /&gt;
     #define Z_CURRENT     550&lt;br /&gt;
     #define Z_MICROSTEPS    16&lt;br /&gt;
     #define Z_RSENSE     0.11&lt;br /&gt;
   #endif&lt;br /&gt;
 &lt;br /&gt;
   #if AXIS_IS_TMC(E0)&lt;br /&gt;
     #define E0_CURRENT    700&lt;br /&gt;
     #define E0_MICROSTEPS   16&lt;br /&gt;
     #define E0_RSENSE    0.11&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем тихий режим StealthChop (на оси экструдера, особенно с редукторным фидером, стабильнее работает SpreadCycle, по моим ощущениям)&lt;br /&gt;
&lt;br /&gt;
   #define STEALTHCHOP_XY&lt;br /&gt;
   #define STEALTHCHOP_Z&lt;br /&gt;
   //#define STEALTHCHOP_E&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задаем режим работы чоппера SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define CHOPPER_TIMING CHOPPER_DEFAULT_24V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем защиту драйверов от перегрева&lt;br /&gt;
&lt;br /&gt;
   #define MONITOR_DRIVER_STATUS&lt;br /&gt;
 &lt;br /&gt;
   #if ENABLED(MONITOR_DRIVER_STATUS)&lt;br /&gt;
     #define CURRENT_STEP_DOWN     50  // [mA]&lt;br /&gt;
     #define REPORT_CURRENT_CHANGE&lt;br /&gt;
     #define STOP_ON_ERROR&lt;br /&gt;
   #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем гибридный режим - при превышении указанной здесь скорости алгоритм будет переключаться со StealthChop на SpreadCycle&lt;br /&gt;
&lt;br /&gt;
   #define HYBRID_THRESHOLD&lt;br /&gt;
 &lt;br /&gt;
   #define X_HYBRID_THRESHOLD     120  // [mm/s]&lt;br /&gt;
   #define Y_HYBRID_THRESHOLD     120&lt;br /&gt;
   #define Z_HYBRID_THRESHOLD      10&lt;br /&gt;
   #define E0_HYBRID_THRESHOLD     15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Очень важно!&#039;&#039;&#039; Включаем отладочный режими&lt;br /&gt;
&lt;br /&gt;
   #define TMC_DEBUG&lt;br /&gt;
&lt;br /&gt;
В данной секции можно задать отдельно любые параметры для каждого из драйверов, например выборочно выключить интерполяцию на Z и E, если выше она включена для всех осей, но перед тем, как что-то здесь писать, &#039;&#039;&#039;советую разобраться&#039;&#039;&#039; с функциями библиотеки [https://github.com/teemuatlut/TMCStepper TMCStepper]. В противном случае оставляйте эту секцию пустой, чтобы ничего не сломать.&lt;br /&gt;
&lt;br /&gt;
   #define TMC_ADV() { \&lt;br /&gt;
     stepperE0.intpol(0); \&lt;br /&gt;
     stepperZ.intpol(0); \&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем автоотправку температуры по USB&lt;br /&gt;
&lt;br /&gt;
 #define AUTO_REPORT_TEMPERATURES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Включаем расширенный отчет о возможностях прошивки для USB хоста&lt;br /&gt;
&lt;br /&gt;
 #define EXTENDED_CAPABILITIES_REPORT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выключаем экструзию по объему&lt;br /&gt;
&lt;br /&gt;
 #define NO_VOLUMETRICS&lt;br /&gt;
&lt;br /&gt;
====Компиляция и прошивка платы====&lt;br /&gt;
&lt;br /&gt;
[[Файл:SKR_TMC_hoba.jpg|300px|thumb|right|Хоба! &#039;&#039;&#039;Поздравляем - Вы восхитительны!&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
После того, как прошивка сконфигурирована, &#039;&#039;&#039;сохраняем&#039;&#039;&#039; изменения. Жмем &#039;&#039;&#039;Ctrl+Alt+B&#039;&#039;&#039; - запустится процесс компиляции прошивки. Если ошибок нет, после его завершения в терминале &#039;&#039;&#039;VS Code&#039;&#039;&#039; напротив &#039;&#039;&#039;LPC1768&#039;&#039;&#039; будет зеленая надпись &#039;&#039;&#039;SUCCESS&#039;&#039;&#039;. В папке &#039;&#039;Marlin-bugfix-2.0.x\.pioenvs\LPC1768&#039;&#039; появится файл &#039;&#039;firmware.bin&#039;&#039; - это и есть скомпилированная прошивка. Копируем этот файл на &#039;&#039;&#039;SD&#039;&#039;&#039;-карту и вставляем в плату, после чего перезапускаем плату - загрузчик установит прошивку и вы увидите стартовый экран &#039;&#039;&#039;Marlin&#039;&#039;&#039; (не беспокойтесь, после перезагрузки файл прошивки на флешке будет переименован, его не нужно удалять вручную, плата не будет перепрошиваться при каждой перезагрузке, пока Вы не кинете новый файл прошивки на флешку). &amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Не забываем после перепрошивки инициализировать EEPROM.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Что дальше?==&lt;br /&gt;
Что же (а главное - как) мы можем настроить благодаря подключению по UART?&lt;br /&gt;
&lt;br /&gt;
===Меню TMC drivers===&lt;br /&gt;
В меню Configuration -&amp;gt; Advanced configuration появилось новое подменю - &#039;&#039;&#039;TMC drivers&#039;&#039;&#039;, содержащее 3 пункта:&lt;br /&gt;
#&#039;&#039;&#039;Driver current&#039;&#039;&#039; - настройка тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера &lt;br /&gt;
#&#039;&#039;&#039;Hybrid threshold&#039;&#039;&#039; - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle. Если хотите выключить гибридный режим для какой-то из осей и использовать только StealthChop, поставьте здесь очень большое значение  (на 22 мая 2019 существует баг - при загрузке настроек из EEPROM все значения отображаются равными 0. При этом на самом деле загружаются правильные значения, их даже можно поменять в этом меню и сохранить в EEPROM, и все работает, но в самом меню отображается 0)&lt;br /&gt;
#&#039;&#039;&#039;Microstepping mode&#039;&#039;&#039; - ручное переключение между StealthChop и SpreadCycle для кождой оси. Если стоит &#039;&#039;&#039;&amp;quot;on&amp;quot;&#039;&#039;&#039;, то используется StealthChop и гибридный режим, если &#039;&#039;&#039;&amp;quot;off&amp;quot;&#039;&#039;&#039; - то всегда включен только SpreadCycle&lt;br /&gt;
&lt;br /&gt;
===Команды G-code===&lt;br /&gt;
Ниже приводятся команды G-code для работы с драйверами TMC2208&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M122.html M122] - вывод отладочной информации о состоянии драйверов - установленный ток, дробление шага и интерполяция, состояние регистров, состояние защиты от перегрева и прочие полезности&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M569.html M569] - ручное переключение между StealthChop и SpreadCycle для кождой оси&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M906.html M906] - задание тока I&amp;lt;sub&amp;gt;rms&amp;lt;/sub&amp;gt; для каждого драйвера&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M911.html M911] - информация о сотоянии защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M912.html M912] - сброс состояния защиты от перегрева&lt;br /&gt;
&lt;br /&gt;
[http://marlinfw.org/docs/gcode/M913.html M913] - настройка порога гибридного режима, то есть скорости движения оси, после которой драйвер будет переключаться из режима StealthChop в SpreadCycle&lt;br /&gt;
&lt;br /&gt;
==Цитирование==&lt;br /&gt;
Вы можете цитировать материал из данной статьи в произвольном объеме при условии &#039;&#039;&#039;обязательного указания ссылки на первоисточник&#039;&#039;&#039;. В ином случае цитирование не допускается.&lt;br /&gt;
&lt;br /&gt;
Автор - @ArtificalSUN&lt;/div&gt;</summary>
		<author><name>AndreyOvodov</name></author>
	</entry>
</feed>