08.12.2013 18:07 Количество просмотров материала 3149 Время на чтение ~4.5 мин
Увеличить | Уменьшить Распечатать страницу

Шаговый двигатель BYJ48. Теория управления

Шаговый двигатель BYJ48. Теория управления

 FI0SQ71HMMF4YR9.LARGE

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

Наиболее распространены два типа шаговых двигателей – униполярные и биполярные. В отличии от биполярных, униполярные шаговые двигатели имеют 5 или 6 контактов ,через которые осуществляется управление четырьмя катушками. Питание (плюс) на каждую из катушек подается по общей шине питания, что и определяет название типа двигателя – униполярный. К минусовой шине каждая из катушек подключается через второй вывод, через которые также подаются импульсы, управляющие вращением.F68GVS8HMMF4YXM.LARGE

 

В статье описывается типичный представитель класса униполярных двигателей  - Unipolar Stepper Motor 28-DYJ48.

СПЕЦИФИКАЦИЯ

  • номинальное напряжение питания: 5 Вольт (постоянный ток)
  • количество фаз: 4
  • количество шагов: 64
  • количество микрошагов: 4096
  • шаг: 5.625 Градусов
  • номинальная частота: 100 Герц
  • номинальное сопротивление обмоток (при 25 Градусах по Цельсию): 50 Ом
  • частота холостого хода (по часовой стрелке) : 600 Герц
  • частота холостого хода (против часовой стрелки): 1000 Герц
  • крутящий момент (по часовой стрелке, при частоте 120 Герц): 34,3 Ньютон-метр
  • вращающий момент: 34,3 Ньютон-метров
  • момент трения (сопротивление вращению): 600-1200 Граммов-на-сантиметр
  • номинальная тяга: 300 Граммов-на-сантиметр
  • Класс электробезопасности: А


Материалы и детали:

  • Плата Arduino Шаговый двигатель BYJ48
  • Плата управления двигателем (драйвер) ULN2003
  • Джампер (перемычка)
  • Источник питания с выходным напряжением  5 Вольт
FP5CJZCHMWVZPBT.LARGEВодитель, в смысле, драйвер двигателя

FXTLPI9HMMF4YXN.LARGE F45YX55HMMF4YXJ.LARGE

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

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

FV9LEN8HMWVZP97.LARGE

Все работает, ветится, и жужжит

ВНИМАНИЕ! ПРИ ИСПОЛЬЗОВАНИИ СХЕМЫ УПРАВЛЕНИЯ (ДРАЙВЕРА) НА МИКРОСХЕМЕ L293 ВМЕСТО СХЕМЫ НА ULN2003, КРАСНЫЙ ПРОВОД  НЕ ПОДКЛЮЧАЕТСЯ!

При программировании Arduino, для точного позиционирования вала вы должны обязательно учитывать характеристики двигателя, приведенные в спецификации. Так, если передаточное число мотора  равняется 64, а угол поворота каждого шага равен 5,626 градусов, то количество микрошагов можно рассчитать по следующей формуле:

Количество микрошагов = количество шагов в одном обороте * передаточное число.

Таким образом, для Unipolar Stepper Motor 28-ВYJ48 количество микрошагов равняется (360/5,625)*64 = 4096. Именно результат этого расчета вы должны указать в программном коде как максимальное количество микрошагов. Для шагового двигателя с углом поворота за один шаг в 7,5 градусов и передаточным числом, равным 16 расчеты такие же, разумеется с иными базовыми вводными. Итак, количество шагов на один полный оборот  равняется 48, то есть 360/7,5 = 48. Максимальное количество микрошагов считаем, умножая полученное значение на передаточное число, то есть, 48*16 = 768. Запомните! Все зависит от спецификации, так что внимательно изучайте инструкции для расчета  правильных значений управляющих команд.

Технические характеристики шагового двигателя 28-BY48

Наконец, перейдем к управлению и питанию вашего шагового двигателя. В принципе, производителем рекомендуется использовать внешний источник питания с выходным напряжением  5 Вольт и током 500 миллиАмпер.

Шаговый двигатель BYJ48. Теория управления

Помните! Питание двигателя непосредственно через 5 Вольтовый вывод Arduino недопустимо. Это может привести к выходу микроконтроллера из строя из-за перегрузки по питанию.

Направления вращения вала, устранение проблемы

Дрожащими руками, задаем количество микрошагов в качестве аргумента оператора  step(steps); и заливаем код в микроконтроллер. При наличии электропитания,  двигатель проворачивает вал на заданный угол (количество шагов), потом еще, и еще. Теория гласит, что направления вращения вала меняется знаком (больше или меньше нуля)  переменной, которая определяет количество  микрошагов.

Комментарий переводчика: Для тех, кто плохо учился в школе  забыл, напоминаю, что есть числа положительные, то есть больше нуля (например: 100), и отрицательные, которые теоретически меньше нуля, и, соответственно, имеют знак минус (пример: -100).

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

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

 

 

/*

BYJ48 Stepper motor code

Connect :

IN1 >> D8

IN2 >> D9

IN3 >> D10

IN4 >> D11

VCC ... 5V Prefer to use external 5V

Gnd

written By :Mohannad Rawashdeh

http://www.instructables.com/member/Mohannad+Rawashdeh/

28/9/2013

*/

 

#define IN1 8

#define IN2 9

#define IN3 10

#define IN4 11

int Steps = 0;

boolean Direction = true;// gre

unsigned long last_time;

unsigned long currentMillis ;

int steps_left=4095;

long time;

void setup()

{

Serial.begin(115200);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

// delay(1000);

 

}

void loop()

{

while(steps_left>0){

currentMillis = micros();

if(currentMillis-last_time>=1000){

stepper(1);

time=time+micros()-last_time;

last_time=micros();

steps_left--;

}

}

Serial.println(time);

Serial.println("Wait...!");

delay(2000);

Direction=!Direction;

steps_left=4095;

}

 

void stepper(int xw){

for (int x=0;x<xw;x++){

switch(Steps){

case 0:

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

break;

case 1:

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, HIGH);

break;

case 2:

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

break;

case 3:

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

break;

case 4:

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

break;

case 5:

digitalWrite(IN1, HIGH);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

break;

case 6:

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

break;

case 7:

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

break;

default:

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

break;

}

SetDirection();

}

}

void SetDirection(){

if(Direction==1){ Steps++;}

if(Direction==0){ Steps--; }

if(Steps>7){Steps=0;}

if(Steps<0){Steps=7; }

}

 

F0SUW4EHMMF4YXK.LARGE

Комплект из двигателя и драйвера

Примечание переводчика: цена на набор из шагового двигателя 28-DYJ48 и контроллера (ДРАЙВЕРА) на ULN2003 в китайских онлайн-магазинах колеблется в пределах 3 - 5 долларов.  Несмотря на недостатки, это делает его идеальным для изучения принципов использования шаговых двигателей с Arduino.

http://www.youtube.com/watch?feature=player_embedded&v=6zlxlOrSh-Q

#BYJ48-Stepper-Motor/">(A-Z )

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]


Вверх