Робот-рука DARM. Калибровка и настройка.

surinme
Идет загрузка
Загрузка
26.10.2019
2390
5
печатает на FLSUN 3D Metal Frame Large Print Area 3D Printer
Применение

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

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

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

29

Всем привет!

    Где-то больше полугода назад я первый раз наткнулся на проект DARM (3d print desktop robot arm) на ресурсе thingiverse.com. Ссылка на проект - https://www.thingiverse.com/thing:1204552

Меня всегда завораживала нестандартная кинематика и конечно же я решил попробовать собрать это устройство. Электроника и шаговики у меня уже были, тонкие карбоновые трубки тоже. Докупил толстую алюминиевую трубку в строительном магазине вместо карбоновой, с трудом, но все-таки нашел подшипник, ну и закупился винтами, гайками и шайбочками в том же строительном магазине. В общем собрал все детали из BOM-list приведенном в проекте, распечатал пластиковые детали и приступил к сборке. Ах да, вместо закольцованных ремней GT2-232 я использовал обычный ремень GT2 необходимой длины, просто приклеив его к шкивам (полностью проворачиваться этот шкив не должен, так что И так сойдет!).

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

    К проекту прилагается модифицированная под данную кинематику прошивка Marlin. Сразу насторожило, что базируется прошивка на версии Marlin, старой как сами знаете что мамонта. Также в проекте совсем отсутствует инструкция по сборке и калибровке устройства. Совсем было неясно куда устанавливать концевики X и Y. Интуиция подсказывала, что их необходимо установить в отверстия на боковых поверхностях корпуса. Туда их поначалу и вставил. Как вы понимаете, сразу ничего не заработало. Более-менее работала функция паркинга, но дальше совладать с этим чудищем я не мог - оно жило в какой-то своей системе координат и при любых попытках куда-то отправить голову весело трещало шаговиками при упоре тяг либо друг в друга, либо в моторы)) К проекту оставлено более 30 комментариев, большая часть из которых содержит вопрос «Кому-нибудь удалось настроить прошивку?!?!?!?» 

В итоге на начальном этапе стояли задачи:

1. Разобраться с прошивкой. Было неясно как калибровать устройство. Любые попытки включить в прошивке использование экрана 2004 с енкодером и SD-картой приводят к ошибкам при компиляции. Версия прошивки настолько старая, что конфликтует с установленным пакетом библиотек.

2. Понять куда правильно устанавливать концевики.

    Так как это мое хобби, то конечно все дальнейшие изыскания проводились в свободное от работы и семьи время, т.е. урывками и непостоянно. В итоге отложил я проект на неопределенное время. Но буквально через неделю мне попадается в рекламном баннере такой же РобоАрм на ресурсе BangGood - https://www.banggood.com/3-Dof-ABB-Industrial-Robot-Arm-Support-3D-PrintingLaser-EngravingWriting-Painting-p-1397583.html?cur_warehouse=CN

Ну во-первых сразу поразил конский ценник!!! (он там что, из чистого титана сделан что-ли?!?!?) Во вторых на этой страничке есть ссылка для скачивания инструкции и прошивки!!!

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

Все бы ничего, но устройства отличаются конструктивно и мое творение в такое положение не ставится никак от слова Совсем. Причина - тяга Small Arm, которая должна быть строго горизонтальна, упирается сначала в свой концевик, а если убрать концевик, то в двигатель, который вращает платформу. В общем отложил я проект опять на неопределенное время. Все это время занимался попытками понять как работает прошивка сравнивая ее с оригинальным Marlin той же версии. В ходе выкуривания прошивки я сформировал калькулятор преобразования углов тяг в декартову систему координат и обратно по формулам из прошивки. Калькулятор лежит здесь. Только с помощью этого калькулятора мне удалось наконец понять какие параметры и как настраивать. С новыми силами я приступил к модификации устройства:

- убрал концевики в самый низ платформы:

- в приводные шкивы вкрутил винты для того, чтобы они упирались в крайнем положении в концевики:

- поставил на вращение платформы двигатель с высотой в два раза меньше, чтобы можно было выставить тяги в калибровочное положение:

Особенности сборки:

1. Необходимо до десятой доли мм соблюсти указанные на рисунке расстояния.

2. Ремни должны быть натянуты моторами так, чтобы не было люфтов.

3. Все тяги должны быть закреплены клеем, чтобы геометрия не менялась.

4. Необходимо чуть сточить край левого бортика, иначе тяга цепляет за него в нижнем положении.

После этого приступил к калибровке. С компиляцией прошивки я так и не разобрался, пользуюсь скомпилированным HEX файлом из проекта для варианта с экраном и SD-картой.

Ну все ж знают, что при первичной прошивке контроллера нужно обязательно очищать EEPROM командами M502 и M500 ?!?!…

Собственно калибровка:

1. Определение точки 0,0,0

Включаем принтер, подключаемся к нему через PronterFace.

Выставляем вручную (двигатели должны быть неактивны) тяги в положение: тяга X (BigArm) строго вертикально, тяга Y (SmallArm) строго горизонтально:

Вводим команду G95 (эта команда переводит принтер в режим движения по угловым параметрам)

Вводим команду G93 X90 Y0 Z0 (эта команда говорит принтеру, что у него сейчас тяги находятся в положении X - 90 градусов или вертикально, Y - 0 или горизонтально, Z - 0)

Вводим команду G95 (После G93 он забывает, что он в угловой системе - ну такая прошивка)

Вводим команду G94 (Переводим в картезиан)

Вводим команду G1 X0 Y0 Z0 (принтер переходит в точку 0,0,0)

На данном этапе определяем необходимую высоту и корректируем командой М367

Например текущие значения SCARA_OFFSET при инициализации устройства M367 X215 Y-100 Z26.1 и при этом высота руки на 70 мм выше, чем нужно, значит необходимо установить значение 26.1 - 70 = -43.9

Вводим M367 X215 Y-100 Z-43.9

Сохраняем параметры - М500

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

2. Определение положения паркинга.

Включаем принтер, подключаемся к нему через PronterFace.

Первично устанавливаем углы парковки (потому что в прошивке значения по умолчанию 0,0,0): M368 X135 Y10 Z0 (X - 135 градусов, Y - 10 градусов, платформа - 0). Без этого дальнейшая калибровка будет упираться в Soft_EndStop и точно будет некорректна.

Сохраняем настройки - M500 (я на всякий случай всегда после сохранения перегружаю контроллер)

Дальнейшие действия нужно выполнять с пониманием следующих особенностей прошивки (кривой и косой) - при упоре тяги в концевик, ось не двигается, срабатывает программное ограничение, но в мозгу принтера координаты или углы меняются. Мне это очень сильно по-началу мешало, пока я не понял, что если уперся хоть на десятую мм или градуса, то нужно все сбрасывать и начинать с начала. Т.е. если случайно перепутал направление движения, нужно перезагрузить контроллер, и все по-новой. Едем дальше.

Сначала выставляем правильное значение угла парковки тяги X.

Вводим команду G28 (паркуемся)

Вводим команду G95 (эта команда переводит принтер в режим движения по угловым параметрам, где X - угол Big Arm, Y - угол Small Arm, Z - угол поворота платформы)

Начинаем двигать ось X с помощью кнопок перемещения осей в PronterFace в вертикальное положение. Вертикальность проверяем отвесом, или уголком к самой тяге. Когда ось встала вертикально, вводим команду М114, чтобы понять на какой градус встала тяга в голове контроллера. Далее корректируем значение параметра M368 таким образом, чтобы при повторных действиях M114 показывала ровно 90 градусов. 

Например в вертикальном положении m114 показывает, что ось X:89.00, значит необходимо скорректировать на 1 градус 135 + (90-89) = 136

Вводим M368 X136

M500

Перегружаем и по-новой.

Делается в несколько итераций, пока реальное положение в 90 градусов не будет соответствовать 90 градусам по выводу М114.

Далее тоже самое делаем для тяги Y, по ней нужно выставить строго горизонтальное положение тонкой тяги (не толстой, а тонкой, см. на рисунке выше).

После калибровки углов парковки, можно еще раз проверить правильное положение точки 0,0,0, и при необходимости откорректировать.

После калибровки паркинга и нулевой точки можно начинать пользоваться принтером))

Небольшое видео:

Что осталось доделать.

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

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

Собирайте, пользуйтесь, комментируйте!)))

PS В конце приведу пояснения по параметрам прошивки:

DARM_OFFSET (команда M367) - расстояния от точки 0,0,0 до осей вращения соответствующей координаты. Этот параметр в мм.

MANUAL_HOME_POS (команда M368) - углы тяг (X и Y) и угол поворота платформы (Z) при парковке. Этот параметр в градусах.

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

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

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

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

Комментарии

26.10.2019 в 21:17
2

упорство и труд - всё перетрут!

28.10.2019 в 14:55
2

Роботы - наше Всё  =) 

28.10.2019 в 19:02
0

Зачетно

29.10.2019 в 09:41
0

круто! в какой программе открывалась фотография для нарезки на слои? 

29.10.2019 в 10:14
0

Inkscape с плагином для AxiDraw 

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Интервью с директором компании Filamentarno! Русланом Молчановым

Доделал охлаждение платы и драйверов в ZAV mini

Преображение настенных часов

Радужные полимеры

Иконки для BTT TFT.

Применение 3Д принтера