Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Stepper One Step At A Time

Материал из Онлайн справочника
Перейти к: навигация, поиск

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление шаговым мотором – медленные шаги[1]

Шаговые моторы могут управляться с высоким уровнем точности, не требуя при этом никаких механизмов обратной связи. Вал шагового мотора закреплен магнитами, а его управление («шаговое» движение вперед и назад) осуществляется несколькими электромагнитными пружинами, одни из которых имеют положительный заряд, а другие – отрицательный. С их помощью вал перемещается маленькими шажками вперед и назад.

Начиная работу, очень важно знать, с каким именно шаговым мотором вам предстоит иметь дело. Эти устройства бывают двух типов – униполярные и биполярные – и цепь для них строится по-разному. Впрочем, данный скетч-пример поддерживает оба типа шаговых моторов. О том, как построить цепь, смотрите здесь (для униполярных моторов) или здесь (для биполярных моторов).

В данном скетче-примере шаговый мотор просто делает очень медленные шаги – один за другим. Этот скетч может пригодиться, к примеру, для проверки того, к правильным ли контактам Arduino подключены провода шагового мотора. Если все подключено правильно, все шаги должны быть в одном направлении. Кроме того, этот скетч можно использовать, чтобы сосчитать количество шагов, которые ваш мотор делает за один оборот.

И униполярные, и биполярные моторы управляются цифровыми контактами 8, 9, 10 и 11. При использовании униполярного мотора к Arduino/Genuino нужно подключить транзистор Дарлингтона U2004, а при использовании биполярного – Н-мост SN754410NE.

Более подробно о разнице между типами шаговых моторов читайте в этой статье Тома Иго.

Необходимое оборудование

  • Плата Arduino или Genuino
  • Шаговый мотор
  • Массив Дарлингтона U2004 (если используете униполярный мотор)
  • Н-мост SN754410NE (если используете биполярный мотор)
  • Источник питания, соответствующий используемому мотору
  • Провода-перемычки
  • Макетная плата

Цепи и схемы

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

Примечание: Обе цепи используют 4-проводное подключение (2-проводное подключение данным скетчем не поддерживается).

Цепь и схема для униполярного мотора

UnipolarKnob bblg 1.png
UnipolarKnob schlg 1.png

Цепь и схема для биполярного мотора

BipolarKnob bblg 2.png
BipolarKnob schlg 2.png

Код

  1. /*
  2.  Управление шаговым мотором – медленные шаги
  3.  
  4.  Этот скетч управляет униполярным/биполярным шаговым мотором.
  5.  Мотор подключается к 8, 9, 10 и 11 контактам на Arduino.
  6.  
  7.  Мотор делает очень медленные шаги – один за другим. Этот скетч может
  8.  пригодиться, к примеру, для проверки того, к правильным ли контактам
  9.  Arduino подключены провода шагового мотора. Если все подключено
  10.  правильно, все шаги должны быть в одном направлении.
  11.  
  12.  Кроме того, этот скетч можно использовать для подсчета шагов,
  13.  которые мотор делает за один оборот. Затем это число можно
  14.  использовать, к примеру, в скетче One Revolution – чтобы проверить,
  15.  правильное ли оно.
  16.  
  17.  Создан 30 ноября 2009 года Томом Иго (Tom Igoe).
  18.  
  19.  */
  20.  
  21. #include <Stepper.h>
  22.  
  23. const int stepsPerRevolution = 200;  // «200» - это количество шагов, за которые вал выполняет
  24. // полный оборот; у вашего мотора это число может быть другим
  25.  
  26. // инициализируем библиотеку Stepper на контактах 8, 9, 10 и 11:
  27. Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
  28.  
  29. int stepCount = 0;         // количество шагов, которые сделал мотор
  30.  
  31. void setup() {
  32.   // инициализируем последовательный порт:
  33.   Serial.begin(9600);
  34. }
  35.  
  36. void loop() {
  37.   // медленно делаем один шаг за другим:
  38.   myStepper.step(1);
  39.   Serial.print("steps:");    //  "шаги:"
  40.   Serial.println(stepCount);
  41.   stepCount++;
  42.   delay(500);
  43. }

См.также

  1. Stepper myStepper = Stepper(steps, pin1, pin2, pin3, pin4)
  2. stepper.setSpeed()
  3. stepper.step()
  4. Stepper library reference
  5. MotorKnob - Moves the shaft according to the position of the knob of a potentiometer.
  6. StepperOneRevolution - Turn the shaft one revolution clockwise and one counterclockwise.
  7. StepperSpeedControl - The stepping speed is controlled by a potentiometer.

Внешние ссылки

  1. Arduino - StepperOneStepAtATime