Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

Шаговый двигатель
Одним прекрасным днём, попался мне в руки как-то шаговый двигатель БМГ — 200 — 265 Ф,

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

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

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003aОффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

Начал звонить обмотки,

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003aОффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

получилось что первая пара: черный — желтый — синий (общий черный) и вторая пара: белый — красный — зеленый (общий белый), двигатель оказался униполярный.

ULN2003a
Дальше стало интереснее была у меня микруха ULN2003a (ман), и конечно было хорошо, что данная микруха была в Proteus-е, запустил я протеус и немного про симулировав и получил следующее.
Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003aОффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003aОффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003aОффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a

ARDUINO UNO
После программирования AVR, я как-то купил ARDUINO UNO и честно говоря, мне понравилось, легко в программирования плюс несколько проводков и breadboard и итого: быстрая разработка, удобство и простота.
Загрузив Arduino, приступил сразу к программированию и вот что получилось.

<code class="cpp">//
void unStepMotor(int pin_1, int pin_2,int pin_3,int pin_4,int speedMotor){
  digitalWrite(pin_1,HIGH);
  digitalWrite(pin_2,LOW);
  digitalWrite(pin_3,LOW);
  digitalWrite(pin_4,LOW);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,HIGH);
  digitalWrite(pin_2,HIGH);
  digitalWrite(pin_3,LOW);
  digitalWrite(pin_4,LOW);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,LOW);
  digitalWrite(pin_2,HIGH);
  digitalWrite(pin_3,LOW);
  digitalWrite(pin_4,LOW);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,LOW);
  digitalWrite(pin_2,HIGH);
  digitalWrite(pin_3,HIGH);
  digitalWrite(pin_4,LOW);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,LOW);
  digitalWrite(pin_2,LOW);
  digitalWrite(pin_3,HIGH);
  digitalWrite(pin_4,LOW);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,LOW);
  digitalWrite(pin_2,LOW);
  digitalWrite(pin_3,HIGH);
  digitalWrite(pin_4,HIGH);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,LOW);
  digitalWrite(pin_2,LOW);
  digitalWrite(pin_3,LOW);
  digitalWrite(pin_4,HIGH);
  delay(speedMotor + 1);
  //
  digitalWrite(pin_1,HIGH);
  digitalWrite(pin_2,LOW);
  digitalWrite(pin_3,LOW);
  digitalWrite(pin_4,HIGH);
  delay(speedMotor + 1);  
  //
}
void setup(){
  pinMode(8,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(2,OUTPUT);
}
//
void loop(){
  for(int i=0; i<=60; i++) unStepMotor(8,7,4,2,0);
  for(int j=0; j<=60; j++) unStepMotor(2,4,7,8,0);
}
</code>
Описание функции: unStepMotor(PIN-1,PIN-2,PIN-3,PIN-4, скорость в мс). Необходима выбрать пины для подключения, у меня это 8,7,4,2 и соответственно для реверса меняем порядок чередования 2,4,7,8. В цикле тоже все понятно, 60-это количество тактов для вращения, в частности зависит от количества шагов движка.

Оффтопик: Управляем шаговым двигателем с помощью Arduino UNO и uln2003a
Результат работы
/>


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.