Рисование кривой с использованием двух осей двигателей
Я пытаюсь нарисовать круг или что-нибудь, что может быть близко к кривой (например, синус), используя два двигателя на двухмерных осях. В основном я использую Raspberry Pi и двигатель HAT Adafruit с двумя шаговыми двигателями nema17.
Я хотел бы добиться чего-то "плавного", но мне кажется, что я могу получить действительно "псевдонимы", и мне интересно, так ли это, потому что я использую шаговые двигатели. (Но я считаю, что 3D-принтеры используют шаговые двигатели и достигают хороших результатов)
Делая математику, я могу определить скорость каждого двигателя: X = R cos(t) и Y = R sin(t), поэтому Vx = -R sin(t) и Vy = R cos(t)
Но я не уверен, что это лучший подход, так как я не уверен, что могу управлять скоростью на шаговом двигателе, но только делаю некоторые задержки между шагами.
Я также думал о расчете всех x и y положений кривой, но опять же я не уверен, что точность моей сборки достаточно высока.
В завершение я использую библиотеку Adafruit: https://github.com/adafruit/Adafruit-Motor-HAT-Python-Library поэтому я не копаюсь в аппаратном коде, а просто использую функции, которые предлагает библиотека. В принципе, я могу запустить каждый двигатель отдельно для x шагов. И это пошаговая карта: https://www.adafruit.com/product/2348
Сборка (это очень сделай сам): https://www.youtube.com/watch?v=uqSTZiI4KuY
1 ответ
Сначала некоторые спецификации будут в порядке:
Как выглядит ваш мотор управления?
Что вы контролируете (скорость, +/- импульсы,???) Есть ли у вас какой-либо корректирующий блок (если вы будете двигаться неправильно, он сработает и исправит значения, чтобы мотор не потерял положение)? У вас есть процессоры управления движением или вы сами генерируете импульсы?
Какова ваша целевая точность и разрешение шагов?
Теперь немного понимания:
Я не думаю, что ваш подход хорош, потому что вы не можете управлять своими моторами с любой скоростью, вместо этого вы должны поддерживать соотношение скоростей между моторами, чтобы наклон движения был тем, что вам нужно. Это основные причины псевдонимов и искажений, с которыми я обычно имею дело:
Шаг разрешения
Если вам удается плавно управлять скоростью, то для кривых вы можете иногда игнорировать разрешение шага, поскольку оно будет плавно перекрываться инерцией и гибкостью конструкции. Так что, если вы не получили действительно большие шаги, это не должно быть большой проблемой.
Вибрации
Это самая большая проблема, потому что вы не можете управлять шаговым двигателем с любой скоростью, которую хотите. Каждый двигатель индивидуален, а также имеет значение, к чему он механически подключен (как статор, так и ротор). Шаговые двигатели обычно имеют резонансную область на низких частотах, поэтому запуск двигателя должен быть выполнен, или эти области следует избегать (если это возможно) или проходить как можно быстрее.
Если вы работаете в этой области, то двигатель создает особые вибрации, например, вместо прямой линии, вместо этого вы получаете нечто вроде синусоидальной волны. В этой области также возникают другие проблемы, например, вы теряете много энергии, а полезный крутящий момент является лишь частью нормального рабочего уровня, что делает практически невозможным все вычисления динамики.
Если вы хотите определить, какие частоты являются проблемой, то, например, управляйте двигателем с постоянной частотой.
50Hz
затем на несколько секунд100,150,200, 250,...
и когда вы начнете слышать шум или мотор начнет прыгать / вибрировать, вы находитесь рядом с резонансной областью. Чем ближе, тем хуже становится!Если вы сделаете это с неподключенным двигателем, вы получите резонансную частоту двигателя. Но может быть также одна или несколько резонансных областей самой механики, поэтому вы должны делать это также в пределах механики на ее нагрузке.
устройство управления
Если у вас есть отдельные процессоры движения для каждого двигателя (как это делают многие ЧПУ), то создание кривых невозможно с максимальной точностью, которую могут обеспечить механика и механизмы. Поскольку отдельные блоки управления движением могут идеально выполнять только линии (и только в лучшем случае), поскольку поток битов, необходимый для кривых, должен генерироваться синхронно, что невозможно при такой настройке. В таком случае, если вы аппроксимируете свою кривую по многим линиям, результат обычно выглядит лучше. Если вместо этого настроить кривую с помощью кривой, выходной сигнал будет колебаться вокруг желаемой формы, особенно если вы получили разные механические свойства для каждой оси.
Если вы генерируете импульсы самостоятельно, то все будет в порядке. Управление движением с кривой интерполяции не легкая вещь. Я делаю это, генерируя контрольные точки вдоль кривой, которую я хочу "визуализировать", а затем вычисляю скорости, чтобы двигатели не теряли свое положение и работа не выполнялась быстрее, чем скорость инструмента, подключенного к ЧПУ. После этого я интерполирую кривую по шагам разрешения и генерирую поток управления с
+/-
управляющие биты присутствуют для каждого приводимого двигателя и затем синхронно отправляются на двигатели. Но материал, который я вложил в несколько строк текста, настолько сложен, что может заполнить целые книги. Я пишу этот материал для своей работы более десяти лет (так как он оплачивает мои счета), и я все еще новичок в этой области.Электрическая неисправность
Иногда холодный сустав и / или высокий уровень шума могут вызвать много непредвиденных проблем, особенно на домашнем HW. Новички, как правило, игнорируют такие вещи, как экранирование, длина и расположение кабелей, электромагнитные или радиочастотные помехи, питание / цифровое / блокирующее заземление и т. Д. Чтобы убедиться, что ваше электричество в порядке, вы можете проверить его. Подсоедините счетчик к управлению двигателем и посмотрите, соответствует ли количество импульсов так, как должно быть. Также использование осциллографа для проверки некоторых контактов на шум во время работы не повредит. Двигатели и драйверы двигателей могут генерировать много шума, который иногда может искажать управление движением или отправленные данные.
Но прежде чем начать ковыряться, прочитайте это:
Так что мой совет - определить причину искажений, которые вы получили, и затем устранить их, если сможете...