ESP8266 Động cơ bước 28BYJ-48, Bộ điều khiển ULN2003

Bài hướng dẫn này chỉ dẫn cho bạn cách sử dụng ESP8266 để điều khiển động cơ bước 28BYJ-48 bằng bộ driver ULN2003. Cụ thể, chúng ta sẽ tìm hiểu:

ESP8266 NodeMCU, uln2003, động cơ bước 28byj-48

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×28BYJ-48 stepper motor + ULN2003 Driver Module
1×5V Power Adapter
1×DC Power Jack
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về động cơ bước 28BYJ-48

Động cơ bước là lý tưởng cho điều khiển vị trí. Chúng phân chia một vòng quay đầy thành một tập hợp các bước bằng nhau. Những động cơ này được sử dụng trong nhiều thiết bị, bao gồm máy in, máy in 3D, máy CNC và tự động hóa công nghiệp.

Một trong những phương pháp tiết kiệm chi phí để tìm hiểu về động cơ bước là sử dụng động cơ bước 28BYJ-48. Chúng thường đi kèm với một bo mạch driver dựa trên ULN2003, giúp việc sử dụng chúng trở nên dễ dàng.

Như được ghi trong bảng dữ liệu, động cơ 28BYJ-48 hoạt động ở chế độ từng bước đầy đủ, mỗi bước đại diện cho một lượt quay 11,25°. Do đó, có 32 bước trong một vòng quay (360°/11,25° = 32).

Ngoài ra, động cơ có bộ truyền động giảm tốc 1/64. Điều này tương ứng với 32 x 64 = 2048 bước. Mỗi bước tương ứng với 360°/2048 = 0,1758°.

Kết luận: Nếu động cơ được thiết lập ở chế độ đầy bước, nó sẽ mất 2048 bước để hoàn thành một vòng quay.

Bố trí các chân của động cơ bước 28BYJ-48 sử dụng bộ điều khiển ULN2003

Động cơ bước 28BYJ-48 có 5 chân. Chúng ta không cần quan tâm đến chi tiết cụ thể của các chân này. Tất cả những gì chúng ta cần làm là cắm nó vào đầu nối của bộ điều khiển động cơ ULN2003.

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

Về Mô-đun Điều khiển Động cơ Bước ULN2003

ULN2003 là một mô-đun điều khiển động cơ được sử dụng rộng rãi cho động cơ bước.

  • Thiết bị có bốn đèn LED hiển thị hoạt động của bốn đường tín hiệu điều khiển, mang lại hiệu ứng ấn tượng khi động cơ đang hoạt động.
  • Ngoài ra, nó còn có một jumper BẬT/TẮT để ngắt nguồn cấp cho động cơ bước.

Bố trí chân ULN2003

sơ đồ chân của uln2003 – bộ điều khiển động cơ bước

Mô-đun ULN2003 có 6 chân và một đầu nối cái.

  • IN1: Đây là chân được sử dụng để điều khiển động cơ và nên được kết nối với một chân đầu ra trên ESP8266.
  • IN2: Đây là chân được sử dụng để điều khiển động cơ và nên được kết nối với một chân đầu ra trên ESP8266.
  • IN3: Đây là chân được sử dụng để điều khiển động cơ và nên được kết nối với một chân đầu ra trên ESP8266.
  • IN4: Đây là chân được sử dụng để điều khiển động cơ và nên được kết nối với một chân đầu ra trên ESP8266.
  • GND: Đây là chân nối đất chung và phải được nối với cả hai GND của ESP8266 và nguồn cấp ngoài.
  • VDD: Chân này cung cấp nguồn cho động cơ và nên được nối với nguồn cấp ngoài.
  • Đầu nối động cơ: Đây là nơi động cơ được cắm.

※ Lưu ý:

  • Điện áp của nguồn cấp ngoài phải khớp với điện áp của động cơ bước. Ví dụ, nếu một động cơ bước hoạt động ở 12V DC, nên dùng nguồn cấp 12V. Trong trường hợp động cơ bước 28BYJ-48, hoạt động ở 5V DC, nên dùng nguồn cấp 5V.
  • Tuy nhiên, ngay cả khi động cơ bước cần nguồn 5V, chân VDD KHÔNG được kết nối với chân 5V trên ESP8266. Thay vào đó, nó nên được kết nối với nguồn cấp ngoài 5V, vì động cơ bước tiêu thụ quá nhiều công suất.

Sơ đồ đấu dây

sơ đồ đấu dây động cơ bước với trình điều khiển uln2003 cho ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Không cần phải quan tâm đến màu dây của động cơ bước. Chúng ta chỉ cần cắm đầu nối nam của động cơ bước 28BYJ-48 vào đầu nối nữ của bộ điều khiển ULN2003.

Cách Lập Trình Để Điều Khiển Động Cơ Bước

Có ba cách để điều khiển một động cơ bước:

  • Bước đầy đủ
  • Nửa bước
  • Bước vi mô

Đối với các ứng dụng cơ bản, chúng ta có thể sử dụng phương pháp từng bước đầy đủ. Những chi tiết cụ thể của ba phương pháp sẽ được thảo luận ở phần sau của bài hướng dẫn này. Việc lập trình các phương pháp này có thể phức tạp. May mắn thay, có rất nhiều thư viện đã làm công việc cho chúng ta, vì vậy tất cả những gì chúng ta cần làm là sử dụng thư viện.

Arduino IDE bao gồm một thư viện Stepper. Tuy nhiên, chúng tôi không đề xuất sử dụng thư viện này vì các lý do sau:

  • Thư viện này bị chặn, có nghĩa là nó ngăn ESP8266 thực hiện các tác vụ khác trong khi điều khiển động cơ bước.
  • Nó không cung cấp đủ chức năng.

Thay vào đó, chúng tôi đề xuất bạn sử dụng thư viện AccelStepper. Thư viện này cung cấp:

  • Gia tốc
  • Giảm tốc
  • Điều khiển ở chế độ đầy bước và nửa bước
  • Khả năng điều khiển độc lập nhiều động cơ bước
  • Nhược điểm: Không hỗ trợ điều khiển vi bước.

Mã nguồn ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // The ESP8266 pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, D1, D5, D2, D6); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Hãy tham khảo hướng dẫn ESP8266 - Cài đặt phần mềm này nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các linh kiện như trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
  • Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “AccelStepper” và xác định thư viện AccelStepper do Mike McCauley phát triển.
  • Sau đó, nhấn nút Cài đặt để cài đặt thư viện AccelStepper.
thư viện accelstepper cho ESP8266 NodeMCU
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấp vào nút Tải lên để tải mã lên ESP8266.
  • Kiểm tra động cơ đang quay.
  • Nó sẽ quay một vòng theo chiều kim đồng hồ, tiếp theo là hai vòng ngược chiều kim đồng hồ, và sau đó hai vòng theo chiều kim đồng hồ.

Quá trình được thực hiện liên tục.

  • Theo dõi kết quả trong Serial Monitor.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Kiến thức bổ sung

1. Động cơ bước rung khi đang di chuyển

Đừng lo lắng nếu động cơ bước rung khi đang chuyển động. Đây là đặc tính điển hình của động cơ bước. Chúng ta có thể giảm rung bằng cách sử dụng kỹ thuật điều khiển vi bước.

Ngoài ra, do đặc tính này, nếu được điều khiển chính xác, động cơ bước có thể phát ra các nốt nhạc như một nhạc cụ. Một ví dụ về điều này có thể được tìm thấy tại đây trên Hackster.io (https://www.hackster.io/iot_lover/arduino-making-music-using-step-motors-a477d5).

2. Phương pháp điều khiển động cơ bước

  • Bước đầy đủ: Đơn vị di chuyển là một bước, bằng với giá trị độ được ghi trong bảng đặc tả kỹ thuật hoặc sách hướng dẫn của động cơ bước.
  • Bước nửa: Mỗi bước đầy đủ được chia thành hai bước nhỏ hơn. Đơn vị di chuyển bằng một nửa bước đầy đầy. Phương pháp này cho phép động cơ di chuyển với độ phân giải gấp đôi.
  • Bước vi mô: Mỗi bước đầy đủ được chia thành nhiều bước nhỏ hơn. Đơn vị di chuyển là một phần của bước đầy đủ. Phần có thể là 1/4, 1/8, 1/16, 1/32 hoặc thậm chí nhiều hơn. Phương pháp này cho phép động cơ di chuyển với độ phân giải cao hơn. Nó cũng làm cho động cơ di chuyển mượt mà hơn ở tốc độ thấp. Càng lớn tử số, độ phân giải càng cao và chuyển động sẽ càng mượt.

Nếu bảng thông số kỹ thuật của động cơ cho biết 1,8 độ mỗi bước:

  • Bước đầy đủ: Động cơ có thể di chuyển ở mức 1.8 độ mỗi bước, tạo ra 200 bước trên một vòng quay.
  • Bước nửa: Động cơ có thể di chuyển ở mức 0.9 độ cho mỗi bước, tạo ra 400 bước trên một vòng quay.
  • Bước vi mô: Động cơ có thể di chuyển ở mức 0.45, 0.225, 0.1125, 0.05625 độ mỗi bước, tạo ra 800, 1600, 3200, 6400... bước trên một vòng quay.

Mã ở trên đã sử dụng kỹ thuật điều khiển bước đầy đủ.

3. Vấn đề về cộng hưởng

Điều này dành cho người dùng nâng cao. Người mới bắt đầu không cần để ý đến điều này. Nó xảy ra ở một dải tốc độ, nơi tần suất bước bằng với tần số tự nhiên của động cơ. Có thể có sự thay đổi đáng chú ý về tiếng ồn do động cơ phát ra, cũng như tăng rung động. Trong các ứng dụng thực tế, các nhà phát triển nên lưu ý điều này.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.