FlexyStepper: установить текущее положение, чтобы достичь старой цели

Я использую библиотеку FlexyStepper. К сожалению, нет возможности написать проблему автору, поэтому я задам свой вопрос здесь.

В документации говорится о функциях setCurrentPosition* ():

установите текущее положение двигателя в миллиметрах, это не приведет к перемещению двигателя

Но я вижу другое поведение. Глядя на код, кажется, что он просто обновляет текущую позицию, оставляя неизменной целевую позицию. Это приводит к ожидаемому движению двигателя. Пример:

  1. установите целевую позицию, скажем: 1000
  2. двигатель достигнет этого положения
  3. установите текущее положение, скажем: 1500
  4. теперь двигатель возвращается к 1000

Вместо этого я хочу, чтобы текущая позиция с этого момента составляла 1500, но поскольку она уже достигла цели, она не должна двигаться дальше.

Конечно, обходной путь состоит в том, чтобы установить как текущую позицию, так и цель на одно и то же значение.

Интересно, ошибаюсь ли я в документации или это можно считать ошибкой.

, 👍0

Обсуждение

Используйте обходной путь--stepper1.setSpeedInRevolutionsPerSecond(0); setCurrentPositionInSteps(1500); setTargetPositionInSteps(1500);, @Dave X


1 ответ


1

Точка setCurrentPosition() заключается в калибровке шагового устройства. Обычно он используется в сочетании с концевым выключателем той или иной формы.

Если вы настроите двигатель на 1000, а затем скажете ему, что двигатель на самом деле находится на 1500, тогда, конечно, он попытается вернуться к 1000 - вы сказали ему, что это то, что вы хотите, но вы также сказали ему, что это не то, где он находится.

Нормальным использованием было бы:

  1. Постоянно двигайте двигатель в одном направлении, пока он не достигнет концевого выключателя или аналогичного
  2. Установите текущее положение в любое фактическое положение
  3. Начните переходить к фактическим позициям, которые находятся относительно этой контрольной точки.

Например

  • Поверните двигатель против часовой стрелки
  • Двигатель запускает концевой выключатель
  • Остановите движение двигателя
  • Установите текущее положение в 0
  • Начните нормально использовать двигатель
,

Спасибо, но не все проекты используют двигатели таким "нормальным" способом. Иногда мне нужно установить другую текущую позицию, а не фактическую. Я закончил устанавливать как целевые, так и текущие позиции. Кажется, это работает. Вводящее в заблуждение предложение здесь звучит так: "не двигает двигатель" *до тех пор, пока цель не будет определена ранее*., @Mark

Чего именно вы пытаетесь достичь, постоянно меняя то, что система считает позицией?, @Majenko

где ты читал *все время*? Я сказал *иногда* :-) Я хочу добиться именно того, что это буквально означает: мне нужно, чтобы система меняла ссылки на лету. Это установка для театральных эффектов, которая перемещает воздушные шары и другие предметы. Здесь нет переключателей самонаведения и т. Д..., @Mark