помогите с шаговым мотором
- Войдите на сайт для отправки комментариев
Вс, 21/06/2015 - 00:51
всем привет
подскажите пожалуйста
#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 не завершается
что делать
почитать библиотеку для начала.
currentPosition целое число long, а не float
Это я знаю
А вы не знаете библиотеку для шаговиков
В которой положение двигателя будет выводится в float
Скороговорка: Шаговик шагает по шагам. Повторить быстро 10 раз.
А вот величина шага в километрах или в микронах - ваша проблема.
moveto тоже целое число как я понял да?
Шаг для шаговика- это как бит для процессора.
Меньше него нет, могут быть два бита, три, но не полтора.
У каждой комбинации мотор-редуктор-привод щаг свой.
Или градусы поворота или линейное перемещение.
Это единица измерения для конкретного привода.
И она целая, она неделима.
Там всё целое.
А вот всякое движение-поворот задаётся количеством этих шагов.
И moveto тоже, библиотека помнит текущее значение "координаты" , а дальше простая арифметика.
Но никто не мешает всё это считать самому. Вопрос- зачем.....
ааа понял
спасибо
Забыл самое умное слово : КВАНТ
:)
Шаг для шаговика- это как бит для процессора.
Меньше него нет, могут быть два бита, три, но не полтора.
а полушаги?
а полушаги?
их нет(с)
*есть два четвертьшага.
В полушаге изменяется угол поворота а не шаг (просто уменьшается шаг)не 1.8градус становится а 0.9 .0.45 и т.д
Полушаги, четвертьшаги, 1/8, 1/16............
Это всё делается на железном уровне. Тем драйвером который это может сделать.
И значение шага будет разное.
Но для программы всё равно единица- это шаг. Но другой "величины.
"Попугаи" другие будут
А если на одну обмотку подать синус, а на другую косинус- получится просто мотор.
У которого шагов вообще не будет.
Или будут- если вы каким-то способом подаёте дискретные значения sin/cos