Thứ Tư, 5 tháng 8, 2020

Hướng dẫn điều khiển động cơ bước 28BYJ-48 với ULN2003

Động cơ bước là gì?


Có rất nhiều tài liệu trên mạng nói về động cơ bước. Bạn có thể google để tìm ra nó.



Nôm na, động cơ bước là một loại động cơ mà ở đó bạn sẽ có thể quy định chính xác số góc quay và động cơ bước sẽ phải quay. Không giống như Servo, động cơ bước có thể quay bao nhiêu độ tùy ý và mỗi lần quay nó sẽ quay được 1 step, 1 step ở đây là bao nhiêu còn phụ thuộc vào động cơ bước của bạn. Ví dụ, động cơ bước của bạn có 72 step thì nó sẽ cần quay 72 step để hoàn thành một vòng quay. Số step này là hằng số, nhưng bạn có thể dùng công nghệ micro step để "cải thiện" số vòng quay động cơ bước của bạn.
2

Động cơ bước 28BYJ-48

Động cơ bước sử dụng trong bài toán là động cơ bước 4 pha (thực ra là 2 pha được chia ra làm 2 ở mỗi pha ngay tại vị trí giữa) (gồm 5 dây), 4 trong 5 dây này được kết nối với 2 cuộn dây trong động cơ và 1 dây là dây nguồn chung cho cả 2 cuộn dây. Mỗi bước của động cơ quét 1 góc 5.625 độ, vậy để quay 1 vòng động cơ phải thực hiện 64 bước.



Các bạn có thể tra thêm datasheet ở đây.
3

Cần chuẩn bị

Arduino Board
BYJ48 Stepper Motor 5v
ULN2003 Board
Dây breadboard cái-cái

4 Nối mạch





5 Cùng lập trình


Arduino IDE có một thư viện hỗ trợ điều khiển động cơ bước tên là Stepper Motor, nó cực kì dễ sử dụng, chỉ việc kết nối như trên rồi nạp code, thế là xong! Nhưng mọi việc không dễ dàng như thế, chúng ta cần phải quan tâm một số điều sau:

Động cơ BYJ48 Stepper chỉ có sẵn bộ hộp số và nó cho ta đến *64 (tỉ lệ bánh răng) => nó có đến 64 * 64 = 4096 bước. Quá đã phải không nào!
sCông thức tính số bước

Số bước thật = Số bước lý thuyết * tỉ lệ bánh răng

Trong trường hợp này: Số bước thật = 64 * 64 = 4096.

Vì vậy, hãy kiểm tra datasheet để có thêm thông tin nhé!

  1. #include <Stepper.h>
  2.  
  3. const int stepsPerRevolution = 4096; // hehe
  4.  
  5. Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
  6.  
  7. void setup() {
  8.  
  9. myStepper.setSpeed(5);
  10. Serial.begin(9600);
  11. }
  12.  
  13. void loop() {
  14.  
  15. Serial.println("clockwise");
  16. myStepper.step(stepsPerRevolution);
  17. delay(500);
  18.  
  19. Serial.println("counterclockwise");
  20. myStepper.step(-stepsPerRevolution);
  21. delay(500);
  22. }

 

Không có nhận xét nào:

DBS M05479
Quang Cao