Перші "спроби пера"
L298N |
Я не сидів, склавши руки, і вже зібрав мій перший проект - "керування кроковим двигуном". Це дуже простий проект, адже він дозволяв здійснювати тільки певні маніпуляції з двигуном, тобто обертати його ротор як завгодно. Як вже було сказано вище - це не простий двигун, а кроковий, тому без мікроконтролера не обійтися.
Зазвичай кроковий двигун має чотири виведення. Саме такий двигун є у мене.
Докладніше про крокові двигуни ви можете дізнатися тут та в YouTube.
Для підключення я використав драйвер L298N, Arduino Uno, сам двигун та акумулятор на 12В.
Як ви могли замітити, у драйвера (зліва) є 6 контактів. IN1, IN2, IN3, IN4 це контакти на які подається сиглал від Arduino. Тобто, якщо подати на ці контакти сигнал від Arduino високого рівня, (5В) то цей сигнал піддасться обробці на силовому модулі (драйвері) і через сині парні контакти, які ви можете бачити на фото по боках, відправиться до двигуна. Це обумовлено специфікою будови Arduino.
Як відомо, двигуни споживають порівняно великий струм і напругу, навідміну від контролера Arduino, тому не можна підключити двигун без комутатора до Arduino. (Arduino споживає напругу 5В і струм до 0.5А, а двигун 12В і струм до 2-4А. Це має велике значення, тому необхідно використовувати драйвер, інакше двигун не запуститься.)
Інші контакти - Е1 і Е2 регулюють саме силу струму, яка йде безпосередньо до двигуна. Ця сила вказується програмно в діапазоні від 0 до 255. Від неї буде залежати в колекторному двигуні швидкість обертів, а в кроковому сила, з якою ротор проходить 1 крок.
"+" Акумулятора потрібно під'єднати до контакту PWR на L298N, а "-" зробити спільним для Arduino і L298N, під'єднавши його до GND.
Отже, перейдемо до програмної частини. Як я під'єднав контакти ви можете побачити з фото.
Сам код або скетч, як його називають виглядає так:
int E1 = 3;
int E2 = 9;
int input1 = 10;
int input2 = 11;
int input3 = 4;
int input4 = 5;
int s = 10; //час між кроками
void setup()
{
pinMode (E1, OUTPUT);
pinMode (E2, OUTPUT);
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT); //ініціалізація контактів
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
analogWrite(E1,50); //сила струму на 1 і 2 контакт
analogWrite(E2,50); //сила струму на 3 і 4 контакт
}
void loop()
{
//1 крок
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,LOW);
digitalWrite(input4,HIGH);
delay(s);
//2 крок
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
digitalWrite(input3,LOW);
digitalWrite(input4,HIGH);
delay(s);
//3 крок
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(s);
//4 крок
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(s);
}
За допомогою цього коду двигун буде крутитися безперервно в один бік. Напрям руху можна задавати, змінюючи контакти IN1 i IN2 або IN3 i IN4 місцями на силовій частині драйвера.
До зустрічі!
Докладніше про крокові двигуни ви можете дізнатися тут та в YouTube.
Для підключення я використав драйвер L298N, Arduino Uno, сам двигун та акумулятор на 12В.
Як ви могли замітити, у драйвера (зліва) є 6 контактів. IN1, IN2, IN3, IN4 це контакти на які подається сиглал від Arduino. Тобто, якщо подати на ці контакти сигнал від Arduino високого рівня, (5В) то цей сигнал піддасться обробці на силовому модулі (драйвері) і через сині парні контакти, які ви можете бачити на фото по боках, відправиться до двигуна. Це обумовлено специфікою будови Arduino.
QK1-3962 |
Arduino Uno R3 |
Акумулятор |
Інші контакти - Е1 і Е2 регулюють саме силу струму, яка йде безпосередньо до двигуна. Ця сила вказується програмно в діапазоні від 0 до 255. Від неї буде залежати в колекторному двигуні швидкість обертів, а в кроковому сила, з якою ротор проходить 1 крок.
"+" Акумулятора потрібно під'єднати до контакту PWR на L298N, а "-" зробити спільним для Arduino і L298N, під'єднавши його до GND.
Отже, перейдемо до програмної частини. Як я під'єднав контакти ви можете побачити з фото.
Сам код або скетч, як його називають виглядає так:
int E1 = 3;
int E2 = 9;
int input1 = 10;
int input2 = 11;
int input3 = 4;
int input4 = 5;
int s = 10; //час між кроками
void setup()
{
pinMode (E1, OUTPUT);
pinMode (E2, OUTPUT);
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT); //ініціалізація контактів
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
analogWrite(E1,50); //сила струму на 1 і 2 контакт
analogWrite(E2,50); //сила струму на 3 і 4 контакт
}
void loop()
{
//1 крок
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,LOW);
digitalWrite(input4,HIGH);
delay(s);
//2 крок
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
digitalWrite(input3,LOW);
digitalWrite(input4,HIGH);
delay(s);
//3 крок
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(s);
//4 крок
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
digitalWrite(input3,HIGH);
digitalWrite(input4,LOW);
delay(s);
}
За допомогою цього коду двигун буде крутитися безперервно в один бік. Напрям руху можна задавати, змінюючи контакти IN1 i IN2 або IN3 i IN4 місцями на силовій частині драйвера.
До зустрічі!
Комментариев нет:
Отправить комментарий