FlexyStepper: установить текущее положение, чтобы достичь старой цели
Я использую библиотеку FlexyStepper. К сожалению, нет возможности написать проблему автору, поэтому я задам свой вопрос здесь.
В документации говорится о функциях setCurrentPosition* ()
:
установите текущее положение двигателя в миллиметрах, это не приведет к перемещению двигателя
Но я вижу другое поведение. Глядя на код, кажется, что он просто обновляет текущую позицию, оставляя неизменной целевую позицию. Это приводит к ожидаемому движению двигателя. Пример:
- установите целевую позицию, скажем: 1000
- двигатель достигнет этого положения
- установите текущее положение, скажем: 1500
- теперь двигатель возвращается к 1000
Вместо этого я хочу, чтобы текущая позиция с этого момента составляла 1500, но поскольку она уже достигла цели, она не должна двигаться дальше.
Конечно, обходной путь состоит в том, чтобы установить как текущую позицию, так и цель на одно и то же значение.
Интересно, ошибаюсь ли я в документации или это можно считать ошибкой.
@Mark, 👍0
Обсуждение1 ответ
Точка setCurrentPosition()
заключается в калибровке шагового устройства. Обычно он используется в сочетании с концевым выключателем той или иной формы.
Если вы настроите двигатель на 1000, а затем скажете ему, что двигатель на самом деле находится на 1500, тогда, конечно, он попытается вернуться к 1000 - вы сказали ему, что это то, что вы хотите, но вы также сказали ему, что это не то, где он находится.
Нормальным использованием было бы:
- Постоянно двигайте двигатель в одном направлении, пока он не достигнет концевого выключателя или аналогичного
- Установите текущее положение в любое фактическое положение
- Начните переходить к фактическим позициям, которые находятся относительно этой контрольной точки.
Например
- Поверните двигатель против часовой стрелки
- Двигатель запускает концевой выключатель
- Остановите движение двигателя
- Установите текущее положение в 0
- Начните нормально использовать двигатель
Спасибо, но не все проекты используют двигатели таким "нормальным" способом. Иногда мне нужно установить другую текущую позицию, а не фактическую. Я закончил устанавливать как целевые, так и текущие позиции. Кажется, это работает. Вводящее в заблуждение предложение здесь звучит так: "не двигает двигатель" *до тех пор, пока цель не будет определена ранее*., @Mark
Чего именно вы пытаетесь достичь, постоянно меняя то, что система считает позицией?, @Majenko
где ты читал *все время*? Я сказал *иногда* :-) Я хочу добиться именно того, что это буквально означает: мне нужно, чтобы система меняла ссылки на лету. Это установка для театральных эффектов, которая перемещает воздушные шары и другие предметы. Здесь нет переключателей самонаведения и т. Д..., @Mark
- Шаговый двигатель не работает с платой A4988
- Шаговый двигатель работает медленно при чтении с датчика MPU 6050
- Справка по библиотеке AccelStepper - Одновременное управление двигателем
- Как позволить шаговому двигателю вращаться постоянно?
- Неодновременное управление несколькими шаговыми двигателями
- Двигатель не вращается плавно (даже на высокой скорости)
- Как правильно использовать микрошаговый драйвер с шаговым двигателем более низкого напряжения
- arduino 28BYJ-48 stepper только жужжит, не вращается
Используйте обходной путь--
stepper1.setSpeedInRevolutionsPerSecond(0); setCurrentPositionInSteps(1500); setTargetPositionInSteps(1500);
, @Dave X