Подключение шагового двигателя к Arduino Motor Shield R3

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем alepro, 31 мар 2014.

  1. alepro

    alepro Нуб

    Здравствуйте!
    Заранее извиняюсь, если мои вопросы покажутся кому-то глупыми и "разжеванными" уже миллион раз. Но все же...

    Есть: Arduino UNO R3, Arduino Motor Shield R3 (http://store.arduino.cc/index.php?main_page=product_info&cPath=37_5&products_id=204#.Uzik1fl_uNA) и шаговик (http://amperka.ru/collection/stepper-motor/product/stepper-motor-ldo-36ht20-0504ma)

    И куча вопросов:
    1) Как правильно подключить этот шаговик к мотор шилду? Есть даташит:[​IMG]
    Я подключил так:
    А+: красный
    А-: синий
    В+: зеленый
    В-: черный

    2) Для запуска шаговика я использую стандартную библиотеку Stepper.h и скетч найденный на форуме (http://forum.amperka.ru/threads/как-подключить-шд-к-ардуино-уно-через-мотор-шилд.2173/page-3)

    #include <Stepper.h>

    Stepper motor = Stepper(400, 4, 6, 5, 7);

    void setup()
    {
    motor.setSpeed(20);
    }

    void loop()
    {
    motor.step(200);
    delay(1000);
    }

    Однако, очевидно, что Амперка мотор шилд и официальный ардуино мотор шилд имеют разные пины для связи с ардуино. У Arduino Motor Shield R3 они такие:
    DIR A: 12
    DIR B: 13
    PWM A: 3
    PWM B: 11

    Поэтому скетч имеет вид:

    #include <Stepper.h>

    Stepper motor = Stepper(400, 12, 11, 3, 13);

    void setup()
    {
    motor.setSpeed(10);
    }

    void loop()
    {
    motor.step(400);
    delay(1000);
    }

    Все вроде работает (правда уже при скорости 20 мотор делает меньше 1 целого оборота, кое-где постоянно проворачивается, но при скорости 15 делает ровно 1 оборот)

    Вопрос, собственно, в Stepper(400, 12, 11, 3, 13). Почему он имеет именно такой вид, т.е . что значит последовательность этих пинов? Ведь при таком раскладе
    Stepper(400, 12, 11, 3, 13)= Stepper(400, DIR A, PWM B, PWM A, PWM B) что на мой взгляд какой-то алогичный бред, но самое удивительное, что это работает!)))

    3) На Arduino Motor Shield R3 есть еще 4 пина: 2 Brake и 2 пина токового считывания.

    Нет ли примеров использования этих функций?

    Заранее благодарен, если кто-то сможет разъяснить.
     
  2. acos

    acos Официальный гик Администратор

    1. Правильно подключили
    2. Библиотека Stepper.h написана вот для таких схем подключения:
    Биполярные шаговики
    Униполярные шаговики
    Схема этого шилда больше соответствует схеме из биполярных шаговиков с двухпиновым управлением, единственное - у нас 1,2EN и 3,4EN микросхемы не напрямую сидят на VCC, а подключены к пинам PWMA, PWMB.
    Поэтому можно управлять и так
    Код (Text):

    Stepper motor = Stepper(400, 12, 13);
     
    Только в сетапе дополнительно нужно будет сделать
    Код (Text):

    void setup()
    {
    pinMode(11, OUTPUT);
    pinMode(3, OUTPUT);

    digitalWrite(11, HIGH);
    digitalWrite(3, HIGH);
    }
     
    Так будет даже лучше, чем 4-х проводным методом.

    3. Это скорее для коллекторников. Хотите ток узнать?
    Код (Text):
    int current1=analogRead(A0);
    int current2=analogRead(A1);
    Ну и с тормозом, поставьте логическую 1 на эти пины - посмотрите, как тормозить будет. Больше похоже не на тормоз, а просто на отключение питания на моторы

    P.S. Взгляните на нашу библиотеку управления шаговиком из статьи о Motor Shield. На вашем шилде по-идее тоже должна заработать.
     
    Последнее редактирование: 1 апр 2014
  3. alepro

    alepro Нуб

    Ок, большое спасибо, сегодня попробую.

    Т.е. в преложенном вами примере внутри скобок у Stepper 1ое значение это число целых шагов шд, 2ое- dir1, 3е значение dir2? А что вообще значат значения внутри Stepper при 4-х проводном методе? 1 значение это число целых шагов шд, а остальные?
     
  4. acos

    acos Официальный гик Администратор

    На этот и другие вопросы вы можете получить ответ, просто читая библиотеку:)
    Там при 4-х пиновом методе порядок чередования фаз другой. И, возможно, не самый оптимальный