Также, возможно, сообществу будет интересна информация о используемом комплекте серво мотора и контроллера, так как я не нашел в сети ни одного отзыва или результатов практических испытаниях этого комплекта.
Пытаюсь заменить шаговые двигатели осей X и Y в своем 3D принтере на серво моторы.
Цель - добиться тихой и точной работы на скорости 100-150мм/c.
Сам принтер - классика, Prusa I3.
Управление платой МКС Gen V1.4 на базе Arduino Mega 2560
Прошивка Marlin.
Купил на Aliexpress вот такой набор driver + servo motor. Драйвер MCAC706, серво мотор 42JSF630AS. Почему именно этот набор? Почти все народные 3D принтеры собираются на базе шаговых двигателей в размере NEMA 17. Найти полноценный серво мотор кроме этого в размере NEMA 17 я не смог, все, что я встречал, начиналось с размера NEMA 23, либо не соответствовало стандарту NEMA 17 и требовало переделки крепления моторов в принтере. Ну и цена конечно подъемная.
Для сопряжения платы принтера и входа серво-драйвера купил вот такие платы согласования MKS CD. Эта плата ставится в плату принтера вместо стандартного драйвера шагового двигателя и обеспечивает передачу управляющих сигналов STEP, DIR, EN на вход драйвера серво мотора. Если соединить на прямую, пишут плата принтера будет перегружена по току. Опто-пара на входе драйвера серво мотора требует большего тока, чем выдает плата принтера.
Для питания серво-драйвера и мотора используется отдельный блок питания на 24в 400W.
На первом этапе экспериментов в 3D принтере был заменен шаговый двигатель оси Y, который передвигает стол. Теперь как это все заработало. По описаниям вроде это настоящий серво мотор, заявлен энкодер 1000линий на оборот (4000 импульсов Step на оборот). Путем долгой переписки с китайскими товарищами производителя JMC была добыта настроечная программа с английским интерфейсом и актуальное описание серво-драйвера MCAC 706. Для соединения с компьютером наколхозил шнурок USBtoCOM, обжал джек на 6 контактов.
Что удивительно (это мой первый опыт запуска серво-моторов), номинально все заработало. Настроечная программа соединяется с серво-контроллером, выгружает и загружает параметры. Серво двигатель отрабатывает команды позиционирования. Все очень точно и тихо.
Что не работает. Все получалось пока я гонял серво мотор отдельно от оси X. Я подбирал параметры в настроечной программе и добивался правильного разгона и останова при движении стола принтера. Для визуализации результата я поставил на экструдер принтера шариковую ручку с тонким стержнем и рисовал квадратики на бумажке. К сожалению, китайская программа по настройке серво-драйвера оказалась кривой в плане отображения тестов. В ней нет теста тока и не отображается тест позиционирования. Я долго препирался с китайцами, и они признали, что это кривизна самого серво-контроллера и ничего поделать нельзя. Ну, это конечно очень плохо, просто отстой, не понимаю, как можно точно настроить позиционирование без Position Test, но не смертельно. Для 3D Принтера вполне хватит настройки по бумажке.
Дальше хуже. Когда я начал рисовать диагональные прямые, одновременно перемещая стол (ось Y) и головку (ось X), выяснилось что скорость перемещения стола не равномерная. Стол, движимый испытуемым серво мотором двигается рывками. В результате диагональная линия получается волнистой. И это пока поставило в ступор весь проект.
В настроечной программе есть раздел настройки параметров скорости (Speed Loop). Изменение (увеличение) пропорционального и интегрального коэффициентов уменьшает неравномерность скорости вращения, но рывки не пропадают до конца. При увеличении значений этих параметров выше определенного уровня (Vp>7500, Vi>600) мотор начинает болезненно жужжать после остановки и иногда во время движения.
В лучшем случае, настройкой параметров удается добиться равномерности скорости вращения 5-7об/мин. Т.е. например, при вращении мотора со скоростью 150об/мин его реальная скорость колеблется от 145об/мин до 155об/мин.
Причем это видно в программе, тест скорости в ней работает.
Также эта неравномерность видна невооруженным глазом на диагональных линиях, нарисованных на принтере. Теперь, собственно, мои ламерские вопросы. Буду очень признателен за любые комментарии, особенно если я все делаю неправильно, мотор не подходит для задачи и т.п.
1. Нормальна ли такая неравномерная работа мотора с заявленными характеристиками?
2. Может ли это быть связано с тем, что мотор работает на очень маленькой скорости? В спецификации заявлено, что мотор работает до 3000об/мин, а я его гоняю на скорости 75-150об/мин так как у меня такой конструктив привода стола через ремень и зубчатый шкив на 20 зубьев. Соответственно, неравномерность +-5об/мин на скорости, например, 1500об/мин это совсем другая точность поддержания скорости.
3. Может ли это быть недоработкой прошивки или электроники самого контроллера серво-мотора? Сомнения связаны с кривизной настроечной программы, неработающим тестом позиционирования и т.д. Очень похоже на то, что контроллер какой-то "левый"...
4. Если проблема в контроллере, поможет ли использование другого, "правильного" контроллера. Например, Leadshine? Мой контроллер как две капли воды похож на Leadshine ACS606, для которого есть на много более продвинутая программа настройки...
Заранее спасибо за любые комментарии!!!
Дмитрий.