Điều Khiển Động Cơ Bước Arduino

Trong nội dung bài viết này, tôi vẫn hướng dẫn các bạn điều khiển bộ động cơ bước lưỡng cực bằng phương pháp sử dụng Arduino UNO. Động cơ bước là 1 trong loại động cơ điện một chiều không chổi than cần sử dụng để đổi khác các tín hiệu tinh chỉnh dưới dạng những xung năng lượng điện rời rạc sau đó nhau thành các chuyển động góc quay, có nghĩa là trục của động cơ bước con quay theo quá trình rời rạc. Khi một laptop được áp dụng để điều khiển công việc này, bạn cũng có thể điều khiển đúng đắn vị trí và tốc độ của bộ động cơ bước.

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

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


Nội dung bài viết

Sơ trang bị mạch điều khiển và tinh chỉnh động cơ cách dùng Arduino

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

Như sẽ đề cập trước đó, động cơ bước là một trong loại bộ động cơ DC xoay theo công việc rời rạc. Do thiết kế độc đáo của chúng mà hộp động cơ bước có thể được điều khiển để định vị chính xác mà không cần bất kỳ phản hồi nào.

Một động cơ bước điển hình có không ít cuộn dây được chia thành các pha. Khi các pha được cấp cho điện theo thiết bị tự, rotor của bộ động cơ bước vẫn quay theo từng bước.

*

Hình 2: những loại bộ độ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 tuy vậy điều đặc trưng là phải xác định xem bộ động cơ bước mà bọn họ sử dụng là bộ động cơ lưỡng rất hay 1-1 cực. Điều này đặc biệt là bởi vì phương pháp điều khiển cho mỗi động cơ bước này là khác nhau.

Ví dụ, mạch điều khiển và tinh chỉnh của động cơ bước đối chọi cực rất có thể được tiến hành với mạch dễ dàng dùng transistor hoặc IC transistor Darlington như ULN2003A. Cơ mà trong ngôi trường hợp hộp động cơ bước lưỡng cực, bọn họ cần sử dụng bộ điều khiển kiểu ước H như IC tinh chỉnh động cơ L293D.

Hình ảnh dưới đây cho biết thêm một hộp động cơ bước lưỡng rất (Bipolar Stepper Motor), một động cơ bước đối chọi cực (Unipolar Stepper Motor) 5 dây, 6 dây cùng 8 dây.

*
Hình 4: Mạch tinh chỉnh động cơ bước dùng Arduino.

Hoạt rượu cồn của mạch

Động cơ bước được sử dụng trong bài xích hướng dẫn này là loại hộp động cơ bước lai nam châm vĩnh cửu (Permanent Magnet Hybrid). Bởi là bộ động cơ lưỡng cực nên chỉ 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 và tinh chỉnh động cơ L293D.

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

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

Hình ảnh sau đây mang đế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 pháp kích phù hợp một pha với hai pha.

*

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

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

Chúng ta sẽ thực hiện serial monitor để kiểm soát chuyển động quay của đụng cơ. Vào chương trình, cam kết hiệu ‘+’ được sử dụng để cho thấy thêm động cơ bước quay theo hướng kim đồng hồ, cùng ngược lại, khi hộp động cơ quay ngược hướng kim đồng hồ, vết ‘-’ sẽ được sử dụng.

Sau khi lựa chọn hướng, chúng ta cũng có thể nhập thẳng số bước ngẫu nhiên từ 1 đến 400.

Xem thêm: Bảng Tổng Xếp Huy Chương Seagame 27 /08/2017, Bảng Tổng Sắp Huy Chương Sea Games 27

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 xoay = “);

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 đến thấy hoạt động vui chơi của động cơ cách và điều khiển và tinh chỉnh động cơ bước bằng Arduino. Động cơ cách thường được thực hiện trong robot, trang bị CNC, auto hóa công nghiệp, các thiết bị nhỏ tuổi như vật dụng in, v.v.Do độ đúng chuẩn cao cùng mô-men xoắn lớn, hộp động cơ bước được áp dụng ở đều nơi cần điều khiển chính xác.