Не квадратный H-BOT

Собираем, настраиваем, печатаем, делимся опытом, помогаем новичкам

Модератор: Kaktus

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Не квадратный H-BOT

Непрочитанное сообщение Domus » 05 ноя 2019, 22:46

Добрый день, уважаемые форумчане!

Разрабатываю свою прошивку для 3D принтера, хобби у меня такое своеобразное. Если кинематика квадратная, то всё довольно просто. А если не квадратная? Т.е. не со сторонами m*m, а m*n. Как двигаться влево/вправо, вперед/назад - понятно. А каким образом будет происходить движение по диагонали? Если система квадратная, то движение каретки по диагонали достигается вращением одного из двух двигателей, а вот в случае не квадратной системы как быть?

Аватара пользователя
3D-SPrinter
Сообщения: 10510
Зарегистрирован: 19 ноя 2015, 14:23
Имя: Андрей
Откуда: Н.Новгород
Благодарил (а): 76 раз
Поблагодарили: 979 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение 3D-SPrinter » 05 ноя 2019, 22:59

Domus писал(а):
05 ноя 2019, 22:46
А если не квадратная?
Сам задавался этим вопросом лет 5-6 назад. :D
Но в результате оказалось, что Н-Боту квадратность не нужна, он на любом прямоугольном поле корректно работает.

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Domus » 05 ноя 2019, 23:05

3D-SPrinter, я не совсем точно сформулировал проблему. Относительно конструкции диагональ будет, но движение ведь уже не под 45 градусов получается?

Аватара пользователя
3D-SPrinter
Сообщения: 10510
Зарегистрирован: 19 ноя 2015, 14:23
Имя: Андрей
Откуда: Н.Новгород
Благодарил (а): 76 раз
Поблагодарили: 979 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение 3D-SPrinter » 05 ноя 2019, 23:13

Domus писал(а):
05 ноя 2019, 23:05
но движение ведь уже не под 45 градусов получается?
Да ему без разницы диагональ. Под каким углом скажут, под таким и наваляет. Формулы-то преобразования движения универсальные.
Вон Марлин открытая прошивка, посмотрите в ней, как кинематика CORE-XY реализована.

Аватара пользователя
Alex Post
Сообщения: 6993
Зарегистрирован: 11 янв 2017, 17:22
Имя: Александр
Откуда: Брест, РБ
Благодарил (а): 330 раз
Поблагодарили: 817 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение Alex Post » 06 ноя 2019, 08:33

Domus писал(а):
05 ноя 2019, 23:05
не под 45 градусов получается?
Под 45. Это не диагональ в прямом понимании. Диагональю такое движение называют для упрощения понимания. А на самом деле это будет движение под 45*. Для квадрата - да, диагональ. А для прямоугольника одна из осей просто упрется раньше в ограничение и все. Не обязан Н-бот ездить строго по диагоналям, а вот под 45* - обязан ;)

Для упрощения понимания кинематики Н-бот: это тот же картезиан, но повернутый на 45* :) Соответственно каждый мотор ездит по своей "оси", но повернутой на 45* относительно привычной нам системы координат. Только и всего. Соответственно и все преобразования к этому сводятся: повернуть систему кординат на 45*. :)
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Domus » 04 мар 2020, 18:57

Добрый день, уважаемые форумчане!

Вновь я на форуме после долго отсутствия, но все с тем же вопросом. Из-за сложности со временем идею решил отложить, но сейчас вновь в к ней вернулся. Использую кинематику coreXY и все тот же не квадратный корпус.
Так и не понял, каким образом реализовать смещение каретки на нужный градус.. Насколько я понимаю, преобразование системы координат - это матрица поворота? Но не могу сообразить, как мне это реализовать на практике.

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

Прошу помощи и тыка меня носом. Пожалуйста )
Заранее извиняюсь за свое незнание..

Аватара пользователя
3D-SPrinter
Сообщения: 10510
Зарегистрирован: 19 ноя 2015, 14:23
Имя: Андрей
Откуда: Н.Новгород
Благодарил (а): 76 раз
Поблагодарили: 979 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение 3D-SPrinter » 04 мар 2020, 19:32

Domus писал(а):
04 мар 2020, 18:57
Но не могу сообразить, как мне это реализовать на практике.
В стандартной прошивке выбрать кинематику XY-Core.

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Domus » 04 мар 2020, 20:32

3D-SPrinter писал(а):
04 мар 2020, 19:32
Domus писал(а):
04 мар 2020, 18:57
Но не могу сообразить, как мне это реализовать на практике.
В стандартной прошивке выбрать кинематику XY-Core.
Смотрю репозиторий Марлина на гите и не могу найти часть кода, которая отвечает за это.. Пытаюсь гуглить, но даже на английском на эту тему ни обсуждения, ни статей найти не могу..

Аватара пользователя
Alex Post
Сообщения: 6993
Зарегистрирован: 11 янв 2017, 17:22
Имя: Александр
Откуда: Брест, РБ
Благодарил (а): 330 раз
Поблагодарили: 817 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение Alex Post » 04 мар 2020, 20:56

Да потому что преобразования там яйца выеденного не стоят, вот никто и не обсуждает :) Все максимально просто: если моторы обозвать как А и В, то ∆X=(∆A+∆B)/2 а ∆Y=(∆A-∆B)/2. Вот и все. Такие преобразования умещаются в одной строке кода, которая выполняется по проверке условия коре или картезиан :)
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393

Аватара пользователя
3D-SPrinter
Сообщения: 10510
Зарегистрирован: 19 ноя 2015, 14:23
Имя: Андрей
Откуда: Н.Новгород
Благодарил (а): 76 раз
Поблагодарили: 979 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение 3D-SPrinter » 04 мар 2020, 21:07

Domus писал(а):
04 мар 2020, 20:32
не могу найти часть кода, которая отвечает за это..
Я к тому, что не надо ничего придумывать. Можно просто использовать стандартную прошивку, настроив её под Н-Бот.

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Domus » 04 мар 2020, 22:47

Alex Post писал(а):
04 мар 2020, 20:56
Да потому что преобразования там яйца выеденного не стоят, вот никто и не обсуждает :) Все максимально просто: если моторы обозвать как А и В, то ∆X=(∆A+∆B)/2 а ∆Y=(∆A-∆B)/2. Вот и все. Такие преобразования умещаются в одной строке кода, которая выполняется по проверке условия коре или картезиан :)
Это я понимаю. Передвижение параллельное осям реализовал давно. Передвижение по диагоналям относительно системы (корпуса) тоже реализуются просто. А вот если нужно передвижение по диагонали, относительно квадратной рабочей области? Если система не квадратная, а прямоугольная, то ведь угол не 45 градусов будет. И в этом не могу никак разобраться. Уравнение ведь должно принять другой вид? Наверное, я очевидную вещь какую-то понять не могу.. Большая просьба помочь.. Никак не могу в голове это уложить.


Смотрю поворот системы координат по этой ссылке: https://lms2.sseu.ru/courses/eresmat/co ... 9_12z1.htm. Здесь умножают на матрицу поворота.
Получаем систему:
∆X = ∆X'*cos(45) - ∆Y'*sin(45) = sqrt(2)/2 * (∆X'-∆Y') = sqrt(2)/2 * ∆B
∆Y = ∆X'*sin45(45) + ∆Y'*cos(45) = sqrt(2)/2 * (∆X'+∆Y') = sqrt(2)/2 * ∆A
Это равно длинам катетов в равнобедренном прямоугольном треугольнике (a = b = c*sin(45)).
Но ведь не то получается?

Domus
Сообщения: 21
Зарегистрирован: 08 фев 2018, 18:36
Благодарил (а): 18 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Domus » 04 мар 2020, 22:48

3D-SPrinter писал(а):
04 мар 2020, 21:07
Domus писал(а):
04 мар 2020, 20:32
не могу найти часть кода, которая отвечает за это..
Я к тому, что не надо ничего придумывать. Можно просто использовать стандартную прошивку, настроив её под Н-Бот.
Если бы решал прикладную задачу, то наверное так и сделал бы.. И было бы оптимальным решением, но хочется до сути дойти.

Vikent
Сообщения: 662
Зарегистрирован: 31 янв 2019, 23:09
Имя: Виктор
Откуда: Королёв
Благодарил (а): 29 раз
Поблагодарили: 70 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Vikent » 05 мар 2020, 08:43

Domus, Вам уже всё объяснили, даже с формулами.
Никак не пойму, почему Вы привязываетесь к прямоугольному корпусу, если надо двигаться по диагонали в пределах квадрата (Ваше последнее сообщение). Какое значение имеет форма корпуса, если голова двигается не корпусом, а моторами? Им плевать на форму корпуса. Крутим один мотор - едем по диагонали. Другое дело, что вписав диагональ квадрата в прямоугольный корпус, одна из осей выберет весь ход, а другая не доедет до конца на величину разницы между длинами осей (сторон корпуса). Ну так и задайте ограничения на перемещение по осям, чтобы система знала свои границы. Именно это и делается в том же Марлине, когда задаются размеры стола. Хоть квадратного, хоть прямоугольного.
Вот если на моторы Н-бота разные шкивы поставить (с разным количеством зубьев), тогда диагонали будут не квадратными. Корпус тут при чём?

Vikent
Сообщения: 662
Зарегистрирован: 31 янв 2019, 23:09
Имя: Виктор
Откуда: Королёв
Благодарил (а): 29 раз
Поблагодарили: 70 раз

Re: Не квадратный H-BOT

Непрочитанное сообщение Vikent » 05 мар 2020, 11:09

Domus писал(а):
05 ноя 2019, 22:46
Если система квадратная, то движение каретки по диагонали достигается вращением одного из двух двигателей, а вот в случае не квадратной системы как быть?
По диагонали прямоугольника? Должны работать оба мотора. С квадратом всё понятно - соотношение сторон 1:1, крутим один мотор - едем строго по диагонали квадрата.
Теперь прямоугольник, соотношение сторон к примеру 1:2. Допустим 1 это У, а 2 это Х. Представим схему: моторы вверху, голова исходно в левом нижнем углу, крутим правый мотор по часовой, левый стоит. Голова по диагонали квадрата доедет по У до упора (верх по схеме), а по Х только до середины. Чтобы по Х тоже доехать до упора (в итоге до правого верхнего угла), надо поработать одновременно и левым мотором в ту же сторону, но с числом оборотов 1/2 от оборотов правого. Таким образом, балка оси У пройдёт путь 1, а голова по балке (оси Х) пройдёт путь 2 - как раз по соотношению сторон прямоугольника. Если соотношение сторон 1:3, то и моторы надо крутить с тем же соотношением. Если соотношение обратное (У больше чем Х), то и левым мотором надо крутить с обратным отношением - не 1/2 а х2.
Отвлекитесь от прямого расчёта диагоналей, считайте так, как ездит балка и по ней голова - по сторонам поля (параллельно им). Вот и считайте перемещение осей пропорционально сторонам - получите диагонали.

Аватара пользователя
Alex Post
Сообщения: 6993
Зарегистрирован: 11 янв 2017, 17:22
Имя: Александр
Откуда: Брест, РБ
Благодарил (а): 330 раз
Поблагодарили: 817 раз
Контактная информация:

Re: Не квадратный H-BOT

Непрочитанное сообщение Alex Post » 05 мар 2020, 12:54

Domus писал(а):
04 мар 2020, 22:47
то ведь угол не 45 градусов будет
Почему? Убери из головы слово "диагональ", оно тебя путает. Вместо него применяй слово "под 45*" и все встанет на свои места. И если ты реализовал движение по прямым - в чем трудность реализовать движение под 45*? Считаешь приращение по одной оси - переводишь в шаги моторов. Считаешь приращение по другой оси - опять переводишь в шаги моторов. Складываешь эти шаги моторов с учетом знака. Итоговое движение получаем туда куда хотели. Не забивай себе голову диагоналями, это всего лишь частный случай.
По синусам-косинусам аналогично. Ну будет у тебя в каждой формуле sin 45* но это, по факту - КОНСТАНТА, грубо 0.7071. Можно прям ее в формулу подставить, а можно при калибровке осей просто учесть. Ведь все равно движение у тебя происходит в шагах на мм. Ну будет в 0.7071 раз меньше шагов (или больше, лень соображать) - какая нафиг разница для конечного результата?
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393

Ответить

Вернуться в «3D принтеры и 3D печать»

Яндекс.Метрика