RuRAMPS4D, Due и TMC2130: переход с Marlin на Klipper
Disclaimer: пост узконаправленный - больше для владельцев RuRAMPS4D в связке с Arduino Due, чисто при миграцию и одну сложность.
Подробного сравнения по качеству печати пока не производилось, ибо на качество влияет больше не фирмвара, а грамотная настройка техпроцесса на конкретном железе - тут я в себе не уверен :)
Железо: Fribot Z-Helix (coreXY), Arduino Due + RuRAMPS4D, TMC2130 на всех осях с настройкой через SPI, виртуальные концевики через StallGuard2.
Внизу много словоблудия, поэтому для экономии времени заранее напишу финал: Arduino Due для настройки TMC2130 через SPI требует изменения дефолтного значения SPI rate в соответствующем скрипте Klipper'а, без этого не взлетит и траблшутинг будет весёлым и непредсказуемым.
Из приятного и для меня важного: принтер стал работать значительно тише на заполнении на высоких скоростях, таких как были раньше вибраций практически нет - очень плавно всё, корпус (фанера) больше не вибрирует. Ну и интерфейс мне лично более удобный. В планах прикрутить 3DTouch - руки сразу не дошли, но позже буду.
Файлы с примером конфигурации и распиновку если нужно - пишите в ЛС, вышлю. Но в планах сделать пример конфига для ruramps4d для включения в дистрибутив на гитхабе.
----------------
Далее словоблудие:
После покупки RuRAMPS4D пришлось уехать с Marlin 1.1.9 на ещё довольно сырой 2.x, но признаться меня Marlin уже давно слегка подзадолбал необходимостью перешивать контроллер при малейших изменениях (EEPROM не трогаем, с ним всё понятно) и довольно нетривиальным траблшутингом в случае чего.
Бесхозная RPi3 с родной камерой уже имелась в запасниках, поэтому доп. затрат у меня не было, решил попробовать с Klipper. Благо, на случай неудачи был уже настроенный Marlin - с учётом отсутствия изменений в железной части перешивается обратно за 10 минут.
Заранее глянул на структуру конфига Klipper, основная сложность предполагалась в конвертации нумерации пинов Arduino в хардверные имена пинов, используемые Klipper'ом. Готового примера распиновки именно для Due+RuRAMPS4D не нашлось, поэтому пришлось делать практически с нуля. Для этого пришлось обратиться к распиновке в pins_RURAMPS4D_13.h Marlin и вспомогательной таблице https://www.arduino.cc/en/Hacking/PinMappingSAM3X (http://www.robgray.com/temp/Due-pinout-WEB.png тоже для удобства пользовал), после чего родилась самодельная табличка Excel (ниже чисто как пример) для последующего использования в процессе конфигурации. Да, Klipper может с небольшими доработками использовать нумерацию Arduino, но хотелось без костылей сделать сразу нормально с минимальными legacy-ошмётками.Конфиг предварительный составлен на базе старого марлиновского, пины моторов и драйверов прописаны. OctoPrint залит на флешку, Klipper установлен по инструкции с GitHub, контроллер прошит.
Далее как описание симптомов чисто:
Проверяю нагреватели/датчики - всё отлично, включение/выключение/температуры в порядке. Пробую покрутить моторами - тишина, хоуминг не работает - валит таймаутами срабатывания концевиков (оно и понятно, моторы не двигаются). Z при этом двигается нормально. Опрос регистров драйверов при каждом запуске выдаёт совершенно разные значения, что уже навевает подозрения в проблемах конфигурации драйверов по SPI.
Завёл issue 888 на гитхабе, за сутки разборок поимел кучу удовольствия - советы по скоростям и т.д. Пробовал менять настройки пинов - инвертирование, подтяжки, но нифига - не взлетали моторы и всё тут. Затем в какой-то момент после ребута контроллеров сам собой очнулся мотор X: голова стала ездить по диагонали. Подумал что мог попалить либо мотор второй, либо драйвер - зашил обратно Марлин и там всё работало нормально, вернулся к Klipper обратно - ни один мотор включая Z не двигается, но уже с другими симптомами - слышно изменение звука драйверов/моторов, но движения не происходит. Всё ближе подхожу к мысли, что проблема скорее всего софтовая и не связанная с коммутацией или нумерацией пинов - скорее всего не сконфигурированные по какой-то причине драйверы просто не выдают минимально необходимый для моторов ток, поэтому слышится только изменение звука без фактического движения - моторы пропускают полностью все шаги.
По ключевым словам 'SPI Due Klipper' нахожу другую issue 435, где разработчик предложил подкорректировать частоту SPI в скрипте - с предконфигурированных 40000000 до 100000.
Меняю конфиг, перезапускаю службу klipper. Вуаля - хоуминг работает, все оси ездят, значения регистров драйверов стабильны :) Пришлось немного подтюнить чувствительность stallguard, ну и pid'ы нагревателей. Если бы не проблема с SPI - переход занял бы от силы часа 2, рекомендую.
Еще больше интересных статей
QIDI Box: RFID-метки для филаментов — полный гайд
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Создание и считывание своих меток NFC для базы данных катушек SPOOLMAN
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Данный проект реализует считывание NFC меток типа NTAG2xx установле...
Цветная печать двумя хотэндами с сервоприводом
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Пару месяцев назад я решил, что мне жизненно необходимо научить свою...

Комментарии и вопросы
Думал в эту сторону. Но если ч...
Уже давно существует Objet500....
У меня есть замечательная идея...
Недавно купленный K2 Pro Combo...
При печати первые слои детали...
Принтер 3D Ender. Заменил сопл...
Доброго времени суток читающим...