Кремень FMZ Реклама
Kremen FMHM Реклама

RuRAMPS4D, Due и TMC2130: переход с Marlin на Klipper

Andrico
Идет загрузка
Загрузка
15.11.2018
7376
36
Техничка

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

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

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

27
Статья относится к принтерам:
RepRap
Приветствую.

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-ошмётками.
RuRAMPS4D, Due и TMC2130: переход с Marlin на Klipper
Конфиг предварительный составлен на базе старого марлиновского, пины моторов и драйверов прописаны. OctoPrint залит на флешку, Klipper установлен по инструкции с GitHub, контроллер прошит.

Далее как описание симптомов чисто:

Проверяю нагреватели/датчики - всё отлично, включение/выключение/температуры в порядке. Пробую покрутить моторами - тишина, хоуминг не работает - валит таймаутами срабатывания концевиков (оно и понятно, моторы не двигаются). Z при этом двигается нормально. Опрос регистров драйверов при каждом запуске выдаёт совершенно разные значения, что уже навевает подозрения в проблемах конфигурации драйверов по SPI.

Завёл issue 888 на гитхабе, за сутки разборок поимел кучу удовольствия - советы по скоростям и т.д. Пробовал менять настройки пинов - инвертирование, подтяжки, но нифига - не взлетали моторы и всё тут. Затем в какой-то момент после ребута контроллеров сам собой очнулся мотор X: голова стала ездить по диагонали. Подумал что мог попалить либо мотор второй, либо драйвер - зашил обратно Марлин и там всё работало нормально, вернулся к Klipper обратно - ни один мотор включая Z не двигается, но уже с другими симптомами - слышно изменение звука драйверов/моторов, но движения не происходит. Всё ближе подхожу к мысли, что проблема скорее всего софтовая и не связанная с коммутацией или нумерацией пинов - скорее всего не сконфигурированные по какой-то причине драйверы просто не выдают минимально необходимый для моторов ток, поэтому слышится только изменение звука без фактического движения - моторы пропускают полностью все шаги.

По ключевым словам 'SPI Due Klipper' нахожу другую issue 435, где разработчик предложил подкорректировать частоту SPI в скрипте - с предконфигурированных 40000000 до 100000.

Меняю конфиг, перезапускаю службу klipper. Вуаля - хоуминг работает, все оси ездят, значения регистров драйверов стабильны :) Пришлось немного подтюнить чувствительность stallguard, ну и pid'ы нагревателей. Если бы не проблема с SPI - переход занял бы от силы часа 2, рекомендую.

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

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

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

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