Шаговый двигатель. Датчики. Ардуино

шаговый двигатель
Подключаем шаговый двигатель к ардуино uno
Подключаем шаговый двигатель к ардуино uno

Привет! Рассмотрим еще один тип двигателей, шаговый двигатель.

Шаговый двигатель

Давайте разбираться, что такое Шаговый двигатель. Это бесколлекторный синхронный двигатель, ротор которого совершает дискретные перемещения определенной величины с фиксацией положения ротора в конце каждого шага.

Шаговый двигатель 28BYJ-48
Шаговый двигатель 28BYJ-48

Перемещение ротора происходит шагами известной величины. Подсчитав шаги можно определить, на сколько изменилось положение ротора, вычислить его абсолютную позицию.

Принцип работы

Принцип работы шагового двигателя
Принцип работы шагового двигателя

Ток в обмотках вызывает магнитное поле, которое будет действовать на ротор двигателя. В результате он займет положение в котором оси магнитных полей ротора и работающих полюсов статора совпадают.

То есть, напротив обмотки при полношаговом режиме или между двумя обмотками, при использовании полушагового режима.

Механическое положение будет устойчивым. При попытке сдвинуть ротор, возникнет сила, возвращающая его назад.

Соответственно, управляя током на обмотках мы можем создать движение ротора в одну или другую сторону.

Преимущества

  • Точность
  • Фиксирует свое положение при остановке.
  • Регулировка скорости вращения с высокой точностью.
  • Способность быстрого старта, остановки, реверса.
  • Высокая надежность.

Недостатки

  • Невысокие скорости вращения.
  • Возможность «проскальзывания» ротора
  • Возможно явление резонанса.
  • Может произойти потеря позиционирования при механических перегрузках.

Программа

Попробуем подключить наш шаговый двигатель к ардуино и посмотреть как им можно управлять.

Принципиальная схема подключения
Принципиальная схема подключения

К шаговому двигателю необходим драйвер. В нашем случае это драйвер ULN2003. Ток на обмотках шагового двигателя может достигать 160 мА, что слишком много для выводов ардуино. Поэтому управлять двигателем будем через драйвер.

Шаговый двигатель и драйвер ULN2003
Шаговый двигатель и драйвер ULN2003

Мы можем управлять двигателем напрямую из программы. Для этого будем последовательно подавать напряжение на разные пины драйвера. Таким образом создавать напряжение на обмотках статора. Ротор будет менять положение в соответствии с магнитным полем.

// Пины на ардуино соответствуют контактам на драйвере ULN2003
#define in1 8
#define in2 9
#define in3 10
#define in4 11

int dl = 5; // Задержка между импульсами

void setup() {
    pinMode(in1, OUTPUT);
    pinMode(in2, OUTPUT);
    pinMode(in3, OUTPUT);
    pinMode(in4, OUTPUT);
}
void loop() {
    digitalWrite(in1, HIGH); 
    digitalWrite(in2, LOW); 
    digitalWrite(in3, LOW); 
    digitalWrite(in4, HIGH);
    delay(dl);

    digitalWrite(in1, HIGH); 
    digitalWrite(in2, HIGH); 
    digitalWrite(in3, LOW); 
    digitalWrite(in4, LOW);
    delay(dl);

    digitalWrite(in1, LOW); 
    digitalWrite(in2, HIGH); 
    digitalWrite(in3, HIGH); 
    digitalWrite(in4, LOW);
    delay(dl);

    digitalWrite(in1, LOW); 
    digitalWrite(in2, LOW); 
    digitalWrite(in3, HIGH); 
    digitalWrite(in4, HIGH);
    delay(dl);
}

Загрузите данный скетч в ардуино. Таким образом мы запрограммируем постоянное движение шагового двигателя. Каждый шаг цикла отвечает за один оборот ротора двигателя.

Библиотека AccelStepper.h

В библиотеке примеров IDE есть программы и библиотеки для шаговых двигателей. Но намного удобнее использовать стороннюю библиотеку <AccelStepper.h>. Ее легко установить через Library Manager. Комбинация клавиш Ctrl+Shift+I

Подробно об этой библиотеке поговорим позже, пока разберем простейшую программу.

#include <AccelStepper.h>

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11

AccelStepper stepper(8, IN1, IN3, IN2, IN4);

void setup(){
   stepper.setMaxSpeed(900.0);
   stepper.setAcceleration(100.0);
   stepper.setSpeed(200);
   stepper.moveTo(2000);
}
void loop(){
   if(stepper.distanceToGo()==0){ stepper.moveTo(-stepper.currentPosition());}
   stepper.run();
}

Здесь мы используем несколько методов, но они позволяют использовать большой функционал библиотеки.

Сначала подключаем библиотеку и создаем экземпляр библиотеки с заданными настройками.

Объявляем переменные с номерами пинов, к которым подключаем контакты драйвера двигателя.

В функции setup() задаем параметры нашего класса для двигателя.

stepper.setMaxSpeed(900.0); // Максимальную скорость двигателя.
stepper.setAcceleration(100.0); // Ускорение.
stepper.setSpeed(200); // Скорость. Шаг в секунду.
stepper.moveTo(2000); // Переместить вал в конкретное положение.

В функции loop() программируем смену направления движения вала, когда достигнута заданная позиция вала.

if(stepper.distanceToGo()==0){ stepper.moveTo(-stepper.currentPosition()); 

И запускаем работу библиотеки.

Работа шагового двигателя и ардуино
Работа шагового двигателя и ардуино

Заключение

Мы рассмотрели шаговый двигатель и его подключение к ардуино. Такие двигатели используются очень часто в разных сферах. И мы будем использовать его в наших проектах.

Добавить комментарий

Ваш адрес email не будет опубликован.