Драйверы Trinamic + UART

Драйверы Trinamic + UART

Владимир Шумов

Графомания о SHUI


Эта статья будет посвящена подключению драйверов шаговый двигателей через интерфейс UART. Только не задавайте вопрос, зачем это делать, если воспользоваться возможностью управления моторами во время печати все равно невозможно. У меня нет ответа на этот вопрос. Я действительно не знаю, зачем это делать.

Что дает подключение драйверов по UART?

Если кратко, то настроить работу драйвера и контролировать его работу. На практике для 3D принтера настраивается всего 2 параметра:

1. Предельный ток обмоток

2. Дробление шага

Оба эти параметра можно настроить снаружи драйвера аппаратно и не мудрить с программным управлением по UART. Для этого рядом с драйвером есть переменный резистор, задающий опорное напряжение (и как следствие ток обмоток мотора), и перемычки под драйвером (на платах 2 крайние левые).

Для любителей поэкспериментировать в прошивке SHUI доступны практически все регистры управления настройками драйвера. Подробнее о их назначении можно прочитать в спецификации драйвера. Ищется легко: TMC2209 datasheet.

Позже я еще вернусь к полезным опциям, которые доступны в SHUI, относятся они к диагностике системы.

Теория

Интерфейс UART имеет 2 интересующие нас сигнальные шины RX (receive, приемник) и TX (transmit, передатчик) . RX ведущего устройства соединяется с TX ведомого и наоборот.

UART дуплексный режим


В таком виде прием и передача сигнала могут идти одновременно. Но когда прикладной протокол разработан так, что прием и передача данных идут в режиме запрос-ответ, на шине можно сэкономить, оставив всего одно соединение.

UART полудуплексный режим



Шина TX отделяется от обобщенной шины обмена резистором, чтобы не нагружать ее сильным сигналом 0 или 1 и таким образом блокировать передачу с другой стороны. Если прикладной протокол обмена содержит в себе данные об адресе устройства (его уникальном номере), а ведомое устройство можно настроить так, чтобы этот адрес был ему известен, на шину можно подключить несколько ведомых устройств. Все они будут принимать данные от ведущего, но отвечать (и принимать к исполнению) будет тот, чей адрес совпал с данными переданными в пакете обмена.
Драйверы Trinamic как раз используют протокол обмена по интерфейсу UART с одной аппаратной линией обмена и адресом в пакете обмена (важно). В спецификации приведена схема:

Подключение драйверов TMC22xx к шине UART

Назначение резистора 1k описано выше, а выводы драйверов MS1 и Ms2 как раз сообщают по какому адресу драйверы должны отвечать. Исходя из того, что выводов 2, и составить можно всего 4 комбинации их подключения к 0 или 1, такая схема позволяет подключить всего 4 адресуемых и управляемых драйвера на шину. Отдельно замечу, что обрыв (не подключенные) MS1, Ms2 воспринимаются драйвером, как логический 0, адрес #0.

❗️Внимание❗️ Адрес могут иметь только драйвера 2209 и 2226, драйверы 2208 и 2225 всегда имеют адрес #0. Поэтму, схемы, где к одному порту подключаются несколько драйверов работают только для 2209 и 2226.

Практика RN11, RN12, RN13 (SHUI-WIFI)

Схема подключения SHUI-WIFI

В прошивке SHUI встроены алгоритмы, которые позволяют подключить драйверы по UART на платах, где такое подключение штатно не предусмотрено: RN11, RN12, RN13. На сайте у Виктора, можно найти описания подключения. Все достаточно подробно. Здесь я разберу только магию дополнительных резисторов. Почему и зачем они.

Рассмотрим схему драйвера TMC2209 от TwoTrees:

Схема подключения драйвера TMC2209

На схеме нас интересует резистор R8 номиналом 20k. Составим схему влияния четырех подключенных драйверов на амплитуды шины обмены:

Резисторы R6 устанавливается на модуль WiFi, или эквивалентно на шину UART, а резистор R5 на один из драйверов, так, чтобы быть подключенным к +5. Это обеспечивает адресная перемычка. Поэтому драйвер должен иметь адрес #2 или #3 (подробнее у Виктора).

Контроллер нормально воспринимает сигналы амплитудой 5 вольт и никаких согласований не требуется. Если во время передачи от драйвера TMC2209 к микроконтроллеру никаких проблем не видно, так как сильный сигнал от драйвера напрямую соединен с микроконтроллером, то передача от микроконтроллера к драйверу имеет понижение амплитуды сигнала, так как проходит через делитель напряжения.

Драйвер Trinamic работает от 5 вольт. Микроконтроллер работает от 3.3 вольт, размах сигнала на шине при передаче от контроллера к драйверу не может быть выше 3х вольт. Сделаем расчет амплитуды сигнала, который получится на входе драйверов trimamic. 4 параллельных сопротивления 20к эквивалентны одному 5к. Резистор R5 пока учитывать не будем. Делитель 1/5 амплитуду сигнала 3 вольта снизит до 3/6 * 5 = 2,5

В спецификации драйвера не нашел, но в памяти всплывают цифры: для схем питающихся от 5 вольт, гарантированный уровень ноля должен быть ниже 0.6 вольт, гарантированный уровень 1 - 2.6. То есть сигнал, благодаря делителю напряжения, может уйти за пределы допустимых амплитуд, а значит не воспринят логикой драйвера.

Автор прошивки просто убрал резисторы R8 с драйверов, таким образом влияние входного сопротивления снизилось.

Поднять амплитуду сигнала можно и с помощью резистора устанавливаемого на драйвер. По схеме R5. Минус решения с резистором в том, что помимо амплитуды логической единицы, будет поднята и амплитуда логического ноля.

В качестве вывода. Я бы рекомендовал выполнять подстройку резистора R6, уменьшая его номинал, если часть драйверов не определяется.

Предварительно, надо убедиться, что всё подключение работает верно. Для этого оставить в слотах только один драйвер, потом постепенно добавлять по одному, каждый раз проверяя стабильность их определения детектором. И только доведя при подстройке значение резистора R6 до 470-500 ом, изменять резистор R5 в меньшую сторону. Для обладающих скиллом пайки smd компонент убрать с драйверов резисторы R8.

Практика RN30, RN20

Тип подключения Marlin или MKS

Тут все просто. Каждый драйвер подключен к своему порту и никаких согласований не требуется. Единственное, что надо учесть, это то, что прошивка SHUI предполагает, что все драйверы будут отвечать на адресе #0, то есть перемычки задающие адрес должны быть сняты.

Все 5 драйверов могут управляться по UART


Практика RN11, RN12, RN13 (SHUI-PORT)

В отличии от ранней схемы подключения SHUI-WIFI, где драйверы trinamic разделяли с модулем WiFi аппаратный UART, схема SHUI-PORT использует любой свободный порт на плате, не имеющий обвязки резисторами. Это может быть PB2, PE5, порты незанятого слота драйвера. Полудуплексный интерфейс UART реализуется программно, а порт переключается из режима TX и режим RX. Никаких обвязывающих резисторов, разделяющих сигналы не требуется, так как разделять нечего. Данная схема работает для 4х драйверов. Драйверы должны иметь последовательные адреса 0-3.

Электрическое подключение простейше. Все выводы UART драйверов в один пучок и на свободный порт, который надо будет указать в настройках маппинга портов - sw-uart.

В настоящий момент, я бы рекомендовал эту схему подключения, если у вас установлено 4 драйвера.

Практика RN11, RN12, RN13 (SHUI-WIFI 5 драйверов)

Выше приведенное описание подключения SHUI-WiFi является не полным. Подключение это работает совместно с SHUI-PORT, а это означает, что 4 драйвера можно подключить по схеме с аппаратным портом UART занятым WiFi, а пятый драйвер с адресом #0 по схеме SHUI-PORT. Следовательно подключение типа SHUI-WIFI(+PORT) в теории может обеспечит взаимодействие по UART c 8 драйверами, но ограничено пятью.
Если к дополнительному порту подключается только один драйвер, значит и 2225, 2228 могут быть использованы ;) в качестве этого одного 👹.


Польза от подключения

В версии прошивки от ... лето 2024 появился виджет, отображающий регистр состояния драйвера UART. Из наиболее интересного флаги:

  • Обрыв, замыкание обмоток (A, B отдельно)
  • Критический нагрев, перегрев драйвера
  • Драйвер в работе, исполняются шаги

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

В целом, при наличии опыта диагностирования и настройки 3d принтера подключение драйверов по UART - развлечение из разряда "потому что могу" или "потому что уже есть".

Покидать камнями в автора статьи можно в группе SHUI-PUBLIC







Report Page