Arduino điều khiển động cơ bước

Trong bài viết này, tôi đang hướng dẫn chúng ta điều khiển động cơ bước lưỡng cực bằng cách sử dụng Arduino UNO. Động cơ bước là một trong những loại bộ động cơ điện một chiều không chổi than sử dụng để chuyển đổi các tín hiệu điều khiển và tinh chỉnh dưới dạng các xung năng lượng điện rời rạc tiếp nối nhau thành các vận động góc quay, có nghĩa là trục của động cơ bước cù theo các bước rời rạc. Lúc một máy vi tính được áp dụng để điều khiển công việc này, bạn có thể điều khiển đúng chuẩn vị trí và tốc độ của động cơ bước.

Bạn đang xem: Arduino điều khiển động cơ bước

Do đặc thù rời rốc này của chuyển động quay theo bước của bộ động cơ bước, bọn chúng thường được sử dụng trong các hệ thống auto hóa công nghiệp, CNC, v.v., chỗ yêu cầu chuyển động chính xác.


Nội dung bài viết

Sơ đồ mạch điều khiển động cơ cách dùng Arduino

Giới thiệu về bộ động cơ bước

Như vẫn đề cập trước đó, động cơ bước là một trong loại bộ động cơ DC tảo theo các bước rời rạc. Vì thiết kế khác biệt của chúng mà động cơ bước có thể được điều khiển để định vị đúng mực mà ko cần ngẫu nhiên phản hồi nào.

Một bộ động cơ bước điển hình có tương đối nhiều cuộn dây được tạo thành các pha. Khi những pha được cung cấp điện theo vật dụng tự, rotor của động cơ bước sẽ quay theo từng bước.

*

Hình 2: các loại hộp động cơ bước.

Chúng ta sẽ không còn đi vào cụ thể các loại bộ động cơ bước nhưng lại điều đặc biệt là phải xác định xem bộ động cơ bước mà họ sử dụng là bộ động cơ lưỡng rất hay solo cực. Điều này đặc biệt quan trọng là bởi vì phương pháp điều khiển cho mỗi động cơ bước này là không giống nhau.

Ví dụ, mạch tinh chỉnh của bộ động cơ bước đơn cực hoàn toàn có thể được tiến hành với mạch dễ dàng và đơn giản dùng transistor hoặc IC transistor Darlington như ULN2003A. Tuy nhiên trong ngôi trường hợp động cơ bước lưỡng cực, chúng ta cần áp dụng bộ điều khiển và tinh chỉnh kiểu mong H như IC điều khiển động cơ L293D.

Hình ảnh dưới đây cho thấy một động cơ bước lưỡng rất (Bipolar Stepper Motor), một bộ động cơ bước solo cực (Unipolar Stepper Motor) 5 dây, 6 dây và 8 dây.

*
Hình 4: Mạch tinh chỉnh và điều khiển động cơ bước dùng Arduino.

Xem thêm: Cách Làm Mờ Chữ Trong Photoshop, Cách Tạo Chữ Mờ Trong Photoshop

Hoạt đụng của mạch

Động cơ cách được áp dụng trong bài hướng dẫn này là loại hộp động cơ bước lai nam châm hút từ vĩnh cửu (Permanent Magnet Hybrid). Vày là hộp động cơ lưỡng cực nên có thể có 4 dây tương ứng với các đầu cuối của hai cuộn dây. 4 dây này được kết nối với những chân ngõ ra của IC điều khiển động cơ L293D.

Để điều khiển và tinh chỉnh động cơ bước, bọn họ sẽ thực hiện một nghệ thuật được hotline là “điều khiển bước đủ – Full Step”. Động cơ được áp dụng trong bài xích hướng dẫn này còn có 200 cách đếm. Với hộp động cơ bước kích thích một pha, tức là tại 1 thời điểm chỉ cấp cho điện cho một pha, bạn cũng có thể đạt được vòng xoay 200 bước bình thường với nút tiêu thụ điện năng không nhiều nhất.

Động cơ bước được kích yêu thích hai pha là một trong những kỹ thuật khác trong đó hai trộn được cung cấp điện tại cùng một thời điểm. Với chuyên môn này, số bước không chuyển đổi so với kích phù hợp một pha tuy thế mô-men xoắn và vận tốc được tạo thêm đáng kể. Yếu điểm của kỹ thuật này là nó đòi hỏi năng lượng gấp đôi.

Hình ảnh sau đây đến thấy buổi giao lưu của động cơ bước với 4 bước/1 vòng quay, sử dụng phương thức kích say mê một pha và hai pha.

*

Hình 6: Điều khiển nửa bước.

Như vẫn đề cập trước đó, góc cách của động cơ được thực hiện trong bài hướng dẫn này là 1,80, tức là động cơ buộc phải 200 bước để quay không còn một vòng. Để tăng độ sắc nét (gấp đôi độ phân giải), họ sẽ sử dụng cách thức điều khiển nửa bước và bởi vậy buộc phải 400 cách để quay được một vòng.

Chúng ta sẽ áp dụng serial monitor nhằm kiểm soát vận động quay của hễ cơ. Trong chương trình, ký hiệu ‘+’ được sử dụng để cho biết thêm động cơ bước quay theo chiều kim đồng hồ, với ngược lại, khi hộp động cơ quay ngược chiều kim đồng hồ, vệt ‘-’ sẽ tiến hành sử dụng.

Sau khi chọn hướng, chúng ta cũng có thể nhập trực tiếp số bước bất kỳ từ 1 mang lại 400.

Chương trình

const int out1 = 4;

const int out2 = 3;

const int out3 = 5;

const int out4 = 2;

int i=0;

int negative=0;

int positive=0;

char temp_print=0;

char temp_print1=0;

int led=13;

void setup()

pinMode(out1, OUTPUT);

pinMode(out2, OUTPUT);

pinMode(out3, OUTPUT);

pinMode(out4, OUTPUT);

pinMode(led,OUTPUT);

digitalWrite(out1,LOW);

digitalWrite(out2,LOW);

digitalWrite(out3,LOW);

digitalWrite(out4,LOW);

digitalWrite(led,LOW);

Serial.begin(9600);

 

void loop()

if(temp_print1==1)

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

delay(1000);

Serial.println(“.”);

Serial.println(“Hoan tat hieu chinh……”);

Serial.println(“Dong co buoc san sang”);

temp_print1=temp_print1+1;

if(temp_print==0)

Serial.println(“Nhap HUONG va BUOC de hieu chinh”);

temp_print=temp_print+1;

temp_print1=temp_print1+1;

abc:

Serial.print(“Chieu con quay = “);

while(Serial.available()==false);

char temp = Serial.read();

if(temp==’+’)

Serial.println(temp);

Serial.print(“So buoc = “);

while(Serial.available()==false)

digitalWrite(led,HIGH);

delay(50);

digitalWrite(led,LOW);

delay(50);

int val = Serial.parseInt();

Serial.println(val);

if(val>=0 && val0;a–)

if(negative==1)

if(i==7)

i=0;

else

a=a+1;

i=i+1;

negative=0;

positive=1;

if(i==0) digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==1) digitalWrite(out1,HIGH);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==2) digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==3) digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,HIGH);digitalWrite(out4,LOW);delay(60);

else if(i==4) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digitalWrite(out4,LOW);delay(60);

else if(i==5) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digitalWrite(out4,HIGH);delay(60);

else if(i==6) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,HIGH);delay(60);

else if(i==7) digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,HIGH);delay(60);

if(i==7)

i=0;continue;

i++;

else

goto abc;

digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(50); 

val=0;

else if(temp==’-‘)

Serial.println(temp);

Serial.print(“So buoc = “);

while(Serial.available()==false)

digitalWrite(led,HIGH);

delay(50);

digitalWrite(led,LOW);

delay(50);

int val = Serial.parseInt();

Serial.println(val);

if(val>=0 && val0;a–)

 

if(positive==1)

i=i-1;

positive=0;

a=a+1;

negative=1;

if(i==0) digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==1) digitalWrite(out1,HIGH);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==2) digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(60);

else if(i==3) digitalWrite(out1,LOW);digitalWrite(out2,HIGH);digitalWrite(out3,HIGH);digitalWrite(out4,LOW);delay(60);

else if(i==4) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digitalWrite(out4,LOW);delay(60);

else if(i==5) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,HIGH);digitalWrite(out4,HIGH);delay(60);

else if(i==6) digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,HIGH);delay(60);

else if(i==7) digitalWrite(out1,HIGH);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,HIGH);delay(60);

if(i==0)

i=7;continue;

i–;

else

goto abc;

digitalWrite(out1,LOW);digitalWrite(out2,LOW);digitalWrite(out3,LOW);digitalWrite(out4,LOW);delay(50); 

val=0;

}

else

goto abc;

}

Ứng dụng

Bài viết cho thấy hoạt động vui chơi của động cơ bước và điều khiển động cơ bước bằng Arduino. Động cơ bước thường được sử dụng trong robot, trang bị CNC, auto hóa công nghiệp, các thiết bị nhỏ như đồ vật in, v.v.Do độ đúng đắn cao cùng mô-men xoắn lớn, hộp động cơ bước được áp dụng ở rất nhiều nơi cần điều khiển và tinh chỉnh chính xác.