помогите с шаговым мотором

sauges
Offline
Зарегистрирован: 16.05.2015

всем привет

подскажите пожалуйста

#include <AccelStepper.h>

float A = 3.8756;

AccelStepper stepper(1, 4, 5);

void setup() { 
  Serial.begin(9600);
  stepper.setMaxSpeed(200.0);
  stepper.setAcceleration(100.0);
}

void loop () {
  stepper.moveTo(A);
  while (stepper.currentPosition() != A)
  stepper.run();
  Serial.println("End");
}

здесь в коде переменная A имеет значение 3.8756

а положения двигателя (stepper.currentPosition()) принимает значение 3

и получается что while не завершается 

что делать 

vvadim
Offline
Зарегистрирован: 23.05.2012

почитать библиотеку для начала.

currentPosition целое число long, а не float

sauges
Offline
Зарегистрирован: 16.05.2015

Это я знаю

sauges
Offline
Зарегистрирован: 16.05.2015

А вы не знаете библиотеку для шаговиков
В которой положение двигателя будет выводится в float

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Скороговорка: Шаговик шагает по шагам. Повторить быстро 10 раз.
А вот величина шага в километрах или в микронах - ваша проблема.

sauges
Offline
Зарегистрирован: 16.05.2015

moveto тоже целое число как я понял да?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Шаг для шаговика- это как бит для процессора.
Меньше него нет, могут быть  два бита, три, но не полтора.

У каждой комбинации мотор-редуктор-привод  щаг свой.
Или градусы поворота или линейное перемещение.
Это единица измерения для конкретного привода.
И она целая, она неделима.
Там всё целое.
А вот всякое движение-поворот задаётся количеством этих шагов.
И moveto тоже, библиотека помнит текущее значение "координаты" , а дальше простая арифметика.
Но никто не мешает всё это считать самому. Вопрос- зачем.....

sauges
Offline
Зарегистрирован: 16.05.2015

ааа понял

sauges
Offline
Зарегистрирован: 16.05.2015

спасибо

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Забыл самое умное слово : КВАНТ

sauges
Offline
Зарегистрирован: 16.05.2015

:)

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

trembo пишет:

Шаг для шаговика- это как бит для процессора.
Меньше него нет, могут быть  два бита, три, но не полтора.

а полушаги?

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Gippopotam пишет:

а полушаги?

их нет(с)

*есть два четвертьшага.

sauges
Offline
Зарегистрирован: 16.05.2015

В полушаге изменяется угол поворота а не шаг (просто уменьшается шаг)не 1.8градус становится а 0.9 .0.45 и т.д

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Полушаги, четвертьшаги,  1/8, 1/16............
Это всё делается на железном уровне. Тем драйвером который это может сделать.
И значение шага  будет разное.
Но для программы всё равно единица- это шаг.  Но другой "величины.

"Попугаи" другие будут

А если на одну обмотку подать синус, а на другую косинус- получится просто мотор.
У которого шагов вообще не будет.
Или будут- если вы каким-то способом подаёте дискретные значения sin/cos