ESP8266 Động cơ DC

Bài hướng dẫn này sẽ hướng dẫn bạn cách sử dụng ESP8266 để điều khiển động cơ DC. Cụ thể, chúng ta sẽ tìm hiểu:

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×L298N Motor Driver Module
1×5V DC Motor
1×(Tùy chọn) 12V DC Motor
1×5V Power Adapter for 5V DC motor
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)

Về động cơ điện một chiều

Sơ đồ chân động cơ DC

Một động cơ điện một chiều có hai dây, dây dương thường đỏ và dây âm đen.

sơ đồ chân của động cơ dc

Cách hoạt động

Khi mua một động cơ một chiều, điều cần thiết là xác định điện áp mà nó hoạt động. Ví dụ, hãy xem xét một động cơ một chiều 12V.

Khi bạn cấp nguồn cho động cơ DC 12V bằng nguồn 12V:

  • Kết nối 12V và GND với dây dương và dây âm, tương ứng: động cơ DC quay với tốc độ tối đa theo chiều kim đồng hồ
  • Kết nối 12V và GND với dây âm và dây dương, tương ứng: động cơ DC quay với tốc độ tối đa theo chiều ngược kim đồng hồ

Như đã đề cập trước đây, bằng cách đổi cực giữa hai dây của động cơ DC, hướng quay sẽ bị đảo ngược. Đây là một phương pháp được sử dụng để điều khiển hướng quay của động cơ DC, không phải bằng tay mà thông qua lập trình.

Nếu nguồn cấp cho động cơ DC nhỏ hơn 12V, động cơ sẽ vẫn quay nhưng không ở tốc độ tối đa của nó. Điều này cho thấy bằng cách điều chỉnh điện áp của nguồn cấp, chúng ta có thể thay đổi tốc độ của động cơ DC. Tuy nhiên, phương pháp này không được sử dụng phổ biến do độ phức tạp của việc kiểm soát điện áp của nguồn cấp. Do đó, điện áp của nguồn cấp được giữ cố định và tốc độ của động cơ DC được điều chỉnh thông qua tín hiệu PWM. Tỷ lệ đóng/mở (duty cycle) của PWM càng lớn, động cơ DC quay càng nhanh.

cách điều khiển động cơ một chiều

Cách điều khiển động cơ DC bằng ESP8266

Điều khiển một động cơ DC bao gồm hai thành phần: tốc độ và hướng. ESP8266 có thể tạo tín hiệu PWM, nhưng nó có điện áp và dòng điện thấp, nên nó không thể được dùng để điều khiển động cơ DC. Để nối ESP8266 với động cơ DC, cần một bộ driver phần cứng. Bộ driver này thực hiện hai nhiệm vụ:

  • Khuếch đại tín hiệu PWM từ ESP8266 về mặt dòng điện và điện áp để điều khiển tốc độ
  • Nhận tín hiệu điều khiển từ ESP8266 để đổi cực nguồn cấp cho điều khiển hướng
Điều khiển động cơ dc bằng ESP8266 NodeMCU

※ Lưu ý:

  • Hướng dẫn này có thể được sử dụng cho bất kỳ động cơ DC nào. Động cơ DC 12V chỉ là một ví dụ.
  • Khi bạn điều khiển một động cơ DC 5V, mặc dù chân ESP8266 cấp ra 5V (giống như điện áp của động cơ DC), bạn vẫn cần có một bộ driver ở giữa ESP8266 và động cơ DC vì chân ESP8266 không cung cấp đủ dòng cho động cơ DC.

Có nhiều loại chip khác nhau, và các module như L293D và L298N có thể được sử dụng làm bộ điều khiển động cơ DC. Trong bài hướng dẫn này, chúng ta sẽ sử dụng bộ điều khiển L298N.

Về bộ điều khiển L298N

Bộ điều khiển L298N có thể được sử dụng để điều khiển động cơ DC và động cơ bước. Bài hướng dẫn này sẽ hướng dẫn bạn cách sử dụng nó để điều khiển một động cơ DC.

Bố trí các chân của L298N

sơ đồ chân của bộ điều khiển l298n

Bộ điều khiển L298N có khả năng điều khiển hai động cơ DC độc lập đồng thời, được gọi là động cơ A và động cơ B. Bộ điều khiển này có tổng cộng 13 chân.

Các chân chung cho cả hai động cơ:

  • Chân VCC: Chân này cấp nguồn cho động cơ, với dải điện áp từ 5 đến 35V.
  • Chân GND: Đây là một chân đất chung, cần được kết nối với 0V (GND).
  • Chân 5V: Chân này cấp nguồn cho module L298N, và có thể được cấp nguồn bằng 5V từ ESP8266.

Các chân của Động cơ A (Kênh A):

  • Các chân ENA: Chân này có thể được sử dụng để điều khiển tốc độ của Động cơ A. Bằng cách tháo jumper và kết nối nó với một đầu vào PWM, chúng ta có thể điều chỉnh tốc độ của Động cơ A.
  • Các chân IN1 và IN2: Các chân này được dùng để điều khiển hướng quay của Động cơ A. Khi một trong hai chân này được đặt ở mức HIGH và chân còn lại ở mức LOW, Động cơ A sẽ quay. Nếu cả hai chân đều ở mức HIGH hoặc LOW, Động cơ A sẽ không quay.
  • Các chân OUT1 và OUT2: Các chân này được kết nối với Động cơ A.

Các chân của Motor B (Kênh B):

  • Các chân này được dùng để cấp nguồn cho Động cơ B.
  • Chân ENB: Chân này có thể được kết nối với một đầu vào PWM để điều khiển tốc độ của Động cơ B. Việc tháo jumper sẽ kích hoạt điều này.
  • Các chân IN3 và IN4: Các chân này được dùng để xác định hướng quay của Động cơ B. Khi một trong chúng ở mức HIGH và chân kia ở mức LOW, Động cơ B sẽ quay. Nếu cả hai đầu vào đều ở mức HIGH hoặc đều ở mức LOW, Động cơ B sẽ dừng.
  • Các chân OUT3 và OUT4: Các chân này được nối với Động cơ B và cấp nguồn cho nó.

Bộ driver L298N có hai nguồn cấp điện vào:

  • Một phần dành cho động cơ DC, với phạm vi điện áp từ 5 đến 35V, được kết nối với các chân VCCGND.
  • Một phần dành cho hoạt động nội bộ của mô-đun L298N, với phạm vi điện áp từ 5 đến 7V, được kết nối với các chân 5V và GND.

Loại bỏ tất cả các jumper khỏi bộ điều khiển L298N để đơn giản hóa. Điều này là cần thiết vì các jumper được sử dụng cho các mục đích nâng cao hoặc các mục đích khác.

Chúng ta có thể điều khiển hai động cơ DC độc lập cùng lúc bằng cách sử dụng ESP8266 và bộ driver L298N. Để điều khiển mỗi động cơ, chúng ta chỉ cần ba chân từ ESP8266.

※ Lưu ý:

Phần còn lại của bài hướng dẫn này sẽ tập trung vào việc điều khiển động cơ DC bằng kênh A. Các bước tương tự có thể được áp dụng để điều khiển động cơ DC khác.

Cách Điều Khiển Tốc Độ Động Cơ DC Thông Qua Bộ Điều Khiển L298N

Việc điều chỉnh tốc độ của một động cơ DC bằng cách phát tín hiệu PWM cho chân ENA của L298N là rất dễ. Điều này có thể được thực hiện bằng:

  • Kết nối một chân ESP8266 với ENA của L298N
  • Tạo tín hiệu PWM cho chân ENA bằng cách sử dụng hàm analogWrite(). Driver L298N sẽ khuếch đại tín hiệu PWM để điều khiển động cơ DC.
analogWrite(ENA_PIN, speed); // speed is a value from 0 to 255

Tốc độ có thể dao động từ 0 đến 255. Khi tốc độ bằng 0, động cơ sẽ ngừng chuyển động. Ở tốc độ 255, động cơ sẽ quay ở vận tốc tối đa của nó.

Cách Điều Khiển Hướng Quay Của Động Cơ DC Bằng Driver L298N

Vòng quay của động cơ có thể được điều chỉnh bằng cách cấp tín hiệu logic HIGH/LOW cho các chân IN1 và IN2. Bảng dưới đây cho thấy cách điều khiển hướng ở cả hai kênh.

IN1 pin IN2 pin Direction
LOW LOW Motor A stops
HIGH HIGH Motor A stops
HIGH LOW Motor A spins Clockwise
LOW HIGH Motor A spins Anti-Clockwise

Do đó:

  • Mã ESP8266 để quay theo chiều kim đồng hồ.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Mã ESP8266 cho quay theo hướng ngược chiều kim đồng hồ.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Lưu ý:

Độ quay của động cơ DC có thể đảo ngược bằng cách nối ngược các chân OUT1 và OUT2.

Cách Dừng Động Cơ DC Đang Quay

Có hai phương pháp để dừng động cơ DC:

  • Giảm tốc độ xuống 0
analogWrite(ENA_PIN, 0);
  • Đặt hai chân IN1 và IN2 cùng một giá trị, có thể là LOW hoặc HIGH.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • Hoặc
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Cách điều khiển động cơ DC bằng bộ điều khiển L298N

Sơ đồ đấu dây

Việc tháo tất cả ba jumper khỏi mô-đun L298N trước khi kết nối các dây là rất cần thiết.

sơ đồ nối dây cho ESP8266 NodeMCU, động cơ dc và bộ điều khiển l298n

This image is created using Fritzing. Click to enlarge image

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

Mã ESP8266

Đoạn mã sau đây thực hiện điều gì:

  • Tăng tốc độ của động cơ DC.
  • Đổi hướng.
  • Giảm tốc độ của động cơ DC.
  • Dừng động cơ.
/* * 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-dc-motor */ #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N // The setup function runs once on reset or power-up void setup() { // initialize digital pins as outputs. pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // The loop function repeats indefinitely void loop() { digitalWrite(PIN_IN1, HIGH); // control the motor's direction in clockwise digitalWrite(PIN_IN2, LOW); // control the motor's direction in clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(PIN_ENA, speed); // speed up delay(10); } delay(2000); // rotate at maximum speed 2 seconds in clockwise direction // change direction digitalWrite(PIN_IN1, LOW); // control the motor's direction in anti-clockwise digitalWrite(PIN_IN2, HIGH); // control the motor's direction in anti-clockwise delay(2000); // rotate at maximum speed for 2 seconds in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(PIN_ENA, speed); // speed down delay(10); } delay(2000); // stop motor 2 second }

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:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn dùng ESP8266.
  • Nối các thành phần như được mô tả trong sơ đồ.
  • Kết nối 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 board ESP8266 đúng, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Lấy ra toàn bộ ba jumper khỏi module L298N.
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấp vào nút Tải lên trên Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Bạn sẽ thấy:
    • Động cơ DC sẽ tăng tốc và quay ở tốc độ tối đa của nó trong 1 giây.
    • Hướng quay của động cơ DC sẽ được thay đổi.
    • Động cơ DC sẽ quay ở tốc độ tối đa theo hướng ngược lại trong 1 giây.
    • Động cơ DC sẽ giảm tốc.
    • Động cơ DC sẽ dừng trong 1 giây.
    • Quá trình này sẽ lặp lại.

    ※ Lưu ý:

    Hướng dẫn này chỉ cho bạn cách kiểm soát tốc độ của động cơ DC liên quan đến tốc độ tối đa của nó. Để kiểm soát tốc độ tuyệt đối (tính bằng vòng quay mỗi giây), chúng ta sẽ cần sử dụng một bộ điều khiển PID và một bộ mã hóa. Việc kiểm soát tốc độ tuyệt đối của động cơ DC sẽ được thảo luận trong một hướng dẫn riêng.

Cách Điều khiển hai động cơ DC bằng bộ điều khiển L298N

Sắp ra mắt!

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.