Подключаем TMC2209 к старой плате Trigorilla по UART
Я не фанат 3D печати, но для быстрого прототипирования, или единичного изготовления каких-то мелочей из пластика, он оказался незаменим. Поначалу, мне было достаточно того, что он просто печатал, но печать могла быть с дефектами. Затем я заменил прошивку с Marlin v1 на Marlin v2, затем на Klipper… переход на Klipper позволил достаточно сильно улучшить качество печати, особенно учитывая размер стола 400*400мм, и его сильный прогиб при нагреве. Далее были модификации, улучшающие печать, которые будут освещены в будущем отдельно…
Но сейчас я расскажу вам о том, как я приделал к старой плате Trigorilla v0.0.2 новые драйверы TMC2209 v2.0 MKS, сохранив совместимость платы со старыми драйверами, и подключив новые драйверы по UART, что позволило программно менять их параметры, без использования перемычек, и в перспективе — обеспечить обратную связь, реализовав, например, парковку без датчиков положения.
Одна из немаловажных особенностей этих драйверов — режим StealthChop, обеспечивающий почти бесшумную работа шаговых двигателей, пусть и в ущерб максимальному крутящему моменту. Конечно, теперь придётся ограничить ускорение огромного стола, но оно и так было не велико.
С одного из маркетплейсов приехали ко мне 5 одинаковых драйверов, кстати, вот они:
Обратите внимание на то, что вывод 5 — UART, через резистор с нулевым сопротивлением соединён с выводом 4. У старых драйверов выводы 2, 3, и 4 определяли конфигурацию микрошагов, и их состояние было жёстко задано разводкой платы. Если мы просто вставляем новые драйверы вместо старых, то они отлично и очень тихо работают. Из минусов — драйвер мотора экструдера так же начинает работать в бесшумном режиме, а значит — существенно снижает быстродействие мотора экструдера, не обеспечивая резкие ускорения, необходимые для работы функций Pressure Advance и правильных параметров ретракта прутка. Побороть это можно или оставив на приводе экструдера старый драйвер, или переключив новый в режим SpreadCycle, работающий более шумно, но не смягчающий работу мотора, и обеспечивающий максимальные ускорения и крутящий момент.
Поскольку разводка платы жёстко связывала вывод 4 драйвера с +5В питания, и через перемычку на плате драйвера — с выводом 5, т.е. шиной UART, то потребовалось как минимум откусить у драйвера 4-ю ногу. 5-й вывод на самой плате оказался ни с чем не соединён, и у старых драйверов использовался для сигнала RST (reset), а значит, его можно было использовать для однопроводного интерфейса UART.
В процессе экспериментов было опробовано два варианта подключения драйверов — параллельное, с использованием одной шины данных на несколько устройств, и выделенное — с использованием отдельной шины для каждого драйвера. Для экспериментов пришлось так же откусить драйверам ноги 2 и 3, задающие или режим микрошага в автономном режиме, или адрес драйвера на шине в режиме UART. В итоге, конечно, выводы 2 и 3 я откусил зря, потеряв полную обратную совместимость драйверов со стандартной платой, но поскольку всё заработало — страшного в этом ничего нет.


Как оказалось, лучшим решением является использование пяти выводов блока SERVOS, которые в моём случае не использовались. От выводов были перекинуты перемычки одножильным проводом, а когда всё заработало — пайка и монтаж были облагорожены проводом МГТФ, а плата отмыта от канифоли.





Получился отличный аппаратный мод, позволяющий избавиться от обычных в таких случаях длинных соплей, припаянных, или подключенных к выводам драйверов, собрать все соединения в одном блоке на плате, и сохранить совместимость со старыми драйверами.
Хочу отдельно отметить, что пришлось немного посидеть над документацией, т.к. разводка разных версий платы может отличаться, а информация из Интернета, особенно сообщаемая вам ИИ, может не соответствовать действительности. Поэтому самый надёжный способ сопоставить пин на плате и вывод микроконтроллера — это собственноручный замер тестером.
Как результат — очень тихая печать, даже на больших скоростях.
