Hướng dẫn điều khiển stepper 28BYJ-48 bằng mạch điều khiển động cơ bước ULN2003

Mô tả dự án: 

Động cơ bước 28BYJ-48 có đến 5 dây chứ không phải thuộc loại 4 dây hoặc 6 dây như ta thường thấy. Nhưng thật may mắn, chúng ta lại có board điều khiển động cơ bước ULN2003 với 5 giây vừa khít với con động cơ bước này luôn. Vì vậy, bộ động cơ bước + stepper driver này thường được dùng trong các dự án DIY. Hôm nay, mình sẽ chỉ các bạn cách sử dụng thư viện để sử dụng bộ combo này cho dễ nhé.

Độ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ó. Tuy nhiên, mình xin đề xuất cho các bạn một số tài liệu sau để tham khảo.

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.

Độ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.

Thống số kỹ thuật

Điện thế hoạt động 5V
Số pha 4
Tỉ lệ bánh răng *64
Một bước tương đương 5.625° (64 bước)
Tần số  100Hz
Điện trở trong 50Ω±7%(25℃)

Cần chuẩn bị

Nối mạch

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é!

 

#include <Stepper.h>

const int stepsPerRevolution = 4096;  // hehe

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {

  myStepper.setSpeed(60);
  Serial.begin(9600);
}

void loop() {

  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

 

Kết luận

Mọi người thấy hay thì ratenode cho mình nhé!

Youtube: 
lên
30 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Hướng dẫn sử dụng cảm biến nhiệt độ TMP36 - Khoảng đo từ -40 đến 125 độ C

Mình thấy cảm biến nhiệt độ LM35 rất rẻ và hoạt động cũng tương đối chính xác. Tuy nhiên, độ bền của nó không cao vì mình thấy mình chỉ dùng cảm biến LM35 trong khoảng thời gian 3 tháng, sau đó phải thay cảm biến khác (để đo nhiệt độ luộc gà). Bản thân mình không thích điều đó nên thử dùng một cảm biến khác cũng có chức năng tương tự là TMP36 và thấy nó hoạt động bền hơn (đã đến tháng thứ 4 nhưng chưa hư). Mình xin chia sẻ với các bạn nhé. Loại này hơi khó tìm và không thông dụng, nhưng nó bền hơn hẳn LM35 các bạn nhé.

lên
10 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Software Serial - Giao tiếp giữa Arduino và nhiều mạch Serial khác - Truyền tải trung gian giữa một mạch khác qua giao tiếp Serial

Có thể nói Serial là một trong những phương thức giao tiếp đơn giản nhất trong môi trường Serial. Vì bạn chỉ cần 2 dây và cách thức truyền dữ liệu của nó lại giống hệt stream trong các ngôn ngữ lập trình. Nhưng thật đáng tiết, con Arduino Uno chỉ có duy nhất một cổng Serial được phần cứng hỗ trợ sẵn (Mega thì 3). Vì vậy, nếu bạn muốn giao tiếp với nhiều module Serial thì đó là một chuyện không thể. Và đó chính là lý do vì sao thư viện Software Serial ra đời. Hôm nay, chúng ta sẽ tìm cách giao tiếp giữa 2 mạch Arduino thông qua Serial và một ví dụ về chuyển tiếp giá trị của một module giao tiếp qua Serial với thư viện này.

lên
21 thành viên đã đánh giá bài viết này hữu ích.

Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

lên
17 thành viên đã đánh giá bài viết này hữu ích.