Подключаем шаговый двигатель к Arduino

Итак, в наличие имеются Arduino Mega 2560, униполярный шаговый двигатель 28BYJ-48, контроллер для него(ULN2003), куча проводов и желание все это попробовать.
Шаговый двигатель 28BYJ-48 и контроллер ULN2003
Шаговый двигатель 28BYJ-48 и контроллер ULN2003

Для начала подключаем все это. Белый разъем от шагового двигателя вставляем в такой-же разъем на контроллере. Перепутать сложно. Далее самое интересное. Подключаем контроллер шаговика к плате arduino:
Для тестов +5 и -5 из драйвера можно подключить к выходам ардуино (как на схеме выше).  Но в реальной работе нужно подключить внешний источник. Входы In1, In2, In3, In4 подключаем в последовательности 1-3-2-4 (3 5 4 6 контакты ардуино), либо можно поменять эти пины в коде при инициализации двигателя. Все этого достаточно.

Далее пишем простенький пример:
Для микроконтроллеров вполне подходит и C++


#include <Stepper.h>

const int StepsPerRevolution = 64;
const int VariationRatio = 32;
const int TotalSteps = StepsPerRevolution * VariationRatio;

Stepper stepper(TotalSteps, 3, 4, 5, 6);

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

void loop()
{
    int stepsForward = TotalSteps / 2;
    stepper.step(stepsForward);
    delay(500);
    
    int stepsBackward =  - TotalSteps / 2;
    stepper.step(stepsBackward);
    delay(500);
}
Тут мы просто вращаем двигателем на пол-оборота по часовой стрелке (положительные числа в методе step), а после этого - против часовой стрелки (отрицательные числа).

Заливаем скетч на плату и мотор начинает вращаться, задорно мигая светодиодами контроллера.

Следует учесть, что метод step() стандартной ардуиновской библиотеки Stepper блокирует поток управления. Так что просто вращать несколькими моторами одновременно не получится.

Где это можно применить? 

Комментарии

  1. Подскажите. Возможно ли заставить этот двигатель вращать круглую платформу допустим на 10градусов. останавливаться. потом замыкать кнопку спуска на вотоаппарате... делать паузу и сново вращаться. и повторять действия до полного поворота платформы?

    ОтветитьУдалить
  2. Конечно можно. Но стоит учитывать, что у любого редуктора есть люфт. Так что если конкретный угол критичен, то стоит взять сервомотор подороже с высокой угловой разрешающей способностью. В принципе кое как можно устранить люфт с помощью пружины. Тогда редуктор всегда будет в "натянутом" положении

    ОтветитьУдалить
  3. А как управлять двумя шаговыми двигателями?

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Алгоритм NEAT. Эволюционирующие нейронные сети возрастающих топологий.

Цепи Маркова простыми словами. Пишем пирожки.