Управляем шаговым двигателем с помощью Arduino UNO и uln2003a
Шаговый двигатель
Одним прекрасным днём, попался мне в руки как-то шаговый двигатель БМГ — 200 — 265 Ф,и сразу же хотелось немного с ним поиграть, повертить его туда сюда. Сначала, как стандартный человек я полез в интернет искать ман (даташит) какой-нибудь на него (нашел, но не то, цветовая гамма проводов не совпадала). После некоторого хождения по гуглу я понял, что искать нету смысла и надо добрым дедовским методом звонить обмотки. Раскрутил это чудо, а там вот.
Начал звонить обмотки,
получилось что первая пара: черный — желтый — синий (общий черный) и вторая пара: белый — красный — зеленый (общий белый), двигатель оказался униполярный.
ULN2003a
Дальше стало интереснее была у меня микруха ULN2003a (ман), и конечно было хорошо, что данная микруха была в Proteus-е, запустил я протеус и немного про симулировав и получил следующее.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-это количество тактов для вращения, в частности зависит от количества шагов движка.
Результат работы
/>
0 комментариев