Điều khiển động cơ bước Stepper Motor bằng IC L293D và Arduino

Điều khiển động cơ bước Stepper Motor bằng IC L293D và Arduino

Trong những bài viết trước đó, mình đã hướng dẫn cho các bạn cách điều khiển động cơ bước bằng IC L298N, trong bài biết hôm nay mình sẽ sử dụng một IC tương tự là L293D để điều khiển động cơ bước 28BYJ-48 và NEMA 17.

Để nắm rõ hơn về cấu tạo cũng như cách thức hoạt động của IC điều khiển động cơ L293D này, các bạn nên xem trước bài viết bên dưới.

Xem ngay: Điều khiển động cơ DC bằng IC L293D và Arduino

Linh kiện cần thiết cho dự án

TÊN LINH KIỆN SỐ LƯỢNG NƠI BÁN
Arduino Uno R3 1 Shopee | Cytron
IC điều khiển động cơ bước L293D 1 Shopee | Cytron
Động cơ bước NEMA 17 1 Shopee | Cytron
Động cơ bước 28BYJ-48 1 Shopee | Cytron
Breadboard 1 Shopee | Cytron
Dây cắm 10-20 Shopee | Cytron

Điều khiển động cơ bước Stepper Motor bằng mạch cầu H

IC L293D có hai mạch cầu H. Mỗi mạch cầu H được sử dụng để điều khiển một trong các cuộn dây điện từ của động cơ bước (Step Motor).

Mạch cầu H có cấu tạo đơn giản bao gồm các công tắc để đóng mở dòng điện chạy qua. Việc đóng mở từng công tắc giúp cho cuộn dây có thể chuyển động theo ý muốn như chuyển động theo hướng thẳng, chuyển động lùi và dừng động cơ bước.

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

Trong bài viết này, mình sẽ sử dụng L293D Arduino để điều khiển động cơ bước 28BYJ-48, là một động cơ hoạt động ở điện áp 5V.

Như hình bên dưới, các bạn sẽ thấy động cơ bước có 4 cuộn dây và 5 dây ra: Các cuộn dây được ký hiệu là: A+ (Màu cam), A- (Màu hồng), và B+ (Xanh dương), B- (Màu vàng).

Đọc thêm: Hướng dẫn làm cánh tay Robot 4 bậc sử dụng Arduino + Code

Bây giờ mình sẽ đấu nối theo sơ đồ bên dưới. Đầu tiên các chân nguồn của IC L293D (Vcc1 và Vcc2) được nối vào chân 5V trên Arduino, chân GND được nối với GND.

Hai chân ENA & ENB với được nối với nguồn 5V để động cơ bước luôn được hoạt động.

Các chân đầu vào (IN1, IN2, IN3 và IN4) của IC L293D sẽ nối tương ứng với bốn chân đầu ra Digital (12, 11, 10 và 9) trên Arduino.

Các cuộn dây của động cơ bước A+ (Cam), A- (Hồng), B- (Vàng) và B+ (Xanh dương) được nối với các chân đầu ra của L293D (Out4, Out3, Out2 & Out1).

Điều khiển động cơ bước Stepper Motor bằng IC L293D và Arduino

Điều khiển động cơ bước NEMA 17

Trong phần tiếp theo, mình sẽ sử dụng L293D Arduino để điều khiển động cơ bước NEMA 17, là một động cơ hoạt động ở điện áp 12V.

Như hình bên dưới, các bạn sẽ thấy động cơ bước có 4 cuộn dây và 4 dây ra: Các cuộn dây được ký hiệu là: A+ (Màu đỏ), A- (Màu xanh lá cây), và B+ (Xanh dương), B- (Màu vàng).

Đọc thêm: Điều khiển động cơ bước (Step Motor) bằng Module L298N và Arduino

Bây giờ mình sẽ đấu nối theo sơ đồ bên dưới. Đầu tiên các chân nguồn của IC L293D (Vcc1 và Vcc2) được nối vào chân 5V trên Arduino, chân GND được nối với GND.

Hai chân ENA & ENB với được nối với nguồn 5V để động cơ bước luôn được hoạt động.

Các chân đầu vào (IN1, IN2, IN3 và IN4) của IC L293D sẽ nối tương ứng với bốn chân đầu ra Digital (12, 11, 10 và 9) trên Arduino.

Các cuộn dây của động cơ bước A+ (Đỏ), A- (Xanh lá), B- (Vàng) và B+ (Xanh dương) được nối với các chân đầu ra của L293D (Out4, Out3, Out2 & Out1).

Điều khiển động cơ bước Stepper Motor bằng IC L293D và Arduino

Code điều khiển động cơ bước

Ở đoạn code này, sẽ hướng dẫn cho các bạn cách điều khiển động cơ bước 28BYJ-48 và NEMA 17 sử dụng IC L293D, đoạn code này sẽ điều khiển cho cả hai động cơ trên, lưu ý các bạn cần thay đổi tham số stepsPerRevolution là số bước (steps) cho mỗi vòng quay của động cơ.

  • Động cơ bước 28BYJ-48: stepsPerRevolution = 48
  • Động cơ bước NEMA 17: stepsPerRevolution = 200
// Include the Arduino Stepper Library
#include <Stepper.h>

// Number of steps per output rotation
const int stepsPerRevolution = 200;

// Create Instance of Stepper library
Stepper myStepper(stepsPerRevolution, 12, 11, 10, 9);


void setup()
{
	// set the speed at 20 rpm:
	myStepper.setSpeed(20);
	// initialize the serial port:
	Serial.begin(9600);
}

void loop() 
{
	// step one revolution in one direction:
	Serial.println("clockwise");
	myStepper.step(stepsPerRevolution);
	delay(500);

	// step one revolution in the other direction:
	Serial.println("counterclockwise");
	myStepper.step(-stepsPerRevolution);
	delay(500);
}

Giải thích code

// Include the Arduino Stepper Library
#include <Stepper.h>

Khai báo thư viện Stepper để điều khiển động cơ bước.

// Number of steps per output rotation
const int stepsPerRevolution = 200;

Khai báo biến stepsPerRevolution là số bước (steps) cho mỗi vòng quay của động cơ. Trong trường hợp sử dụng động cơ bước NEMA 17 là 200 và 28BYJ-48 là 48.

void setup()
{
	// set the speed at 20 rpm:
	myStepper.setSpeed(20);
	// initialize the serial port:
	Serial.begin(9600);
}

Trong hàm setup(), tốc độ quay của động cơ được đặt là 20 vòng mỗi phút bằng cách sử dụng hàm setSpeed(20).

void loop() 
{
	// step one revolution in one direction:
	Serial.println("clockwise");
	myStepper.step(stepsPerRevolution);
	delay(500);

	// step one revolution in the other direction:
	Serial.println("counterclockwise");
	myStepper.step(-stepsPerRevolution);
	delay(500);
}

Trong hàm loop(), đầu tiên động cơ được di chuyển một vòng quay theo chiều kim đồng hồ bằng cách gọi myStepper.step(stepsPerRevolution). Số bước cần di chuyển được truyền vào hàm step() và động cơ sẽ di chuyển một bước tại mỗi lần gọi hàm này. Sau đó, chương trình dừng lại trong 500ms bằng cách sử dụng delay(500).

Tiếp theo, động cơ được di chuyển một vòng quay ngược chiều kim đồng hồ bằng cách gọi myStepper.step(-stepsPerRevolution). Số bước truyền vào là số âm để di chuyển động cơ theo chiều ngược lại. Sau đó, chương trình dừng lại trong 500ms.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments