STDIO

Tìm kiếm theo nội dung bài viết, tác giả, board, ...

  • Content
  • Share
  • Content
  • Share

Điều Khiển Động Cơ Bằng IC L298

07/08/20204 min read
Hướng dẫn sử dụng IC L298 đã tích hợp sẵn mạch cầu H, ứng dụng trong việc điều khiển cùng lúc 2 động cơ theo chiều quay bất kì, kết hợp với điều xung PWM có thể điều chỉnh tốc độ xoay của động cơ.
Điều Khiển Động Cơ Bằng IC L298

Việc đầu tiên khi bắt tay vào làm là cho xe chạy thẳng, nhưng vấn đề giữa lý thuyết và thực tế rất khác nhau, vì không phải trong điều kiện lý tưởng nên các linh kiện như: bánh xe, động cơ,.. hoạt động công suất không đều nhau, thực tế sẽ có trường hợp bánh xe to, nhỏ hoặc động cơ xoay nhanh, chậm, ...

Tại sao không sử dụng một động cơ cho 2 bánh sẽ giúp cho bánh chạy đều, nhưng điều đó thật ngớ ngẩn khi không thể nào đổi hướng khi xe quẹo trái - phải.

Để giải quyết vấn đề đó, có thể sử dụng IC L298 vừa để điều khiển 2 động cơ cùng lúc vừa có thể điều xung PWM để cân bằng độ chênh lệch giữa 2 bánh xe.

Chuẩn bị

  • Arduino Uno.
  • IC L298.
  • 2 Pin sạc 18650 Panasonic 4.2V 4200mAh.
  • Động cơ DC giảm tốc V1.

IC L298N

Mạch cầu H
Mạch cầu H

Điện áp điều khiển: +5V - +12V.

L298 gồm các chân:

  • 12V power, 5V power: bên trong mạch cầu H có sử dụng IC L298N điều hướng dòng điện, hoạt động với điện áp 5V, khi nối nguồn 12V mạch sẽ hoạt động với nguồn 12V, tuy nhiên mạch sẽ điều hướng dòng điện.
    • Dòng 12V đẩy vào động cơ để hoạt động.
    • Hạ dòng điện xuống thành 5V và cấp nguồn cho IC.
  • Như vậy khi cấp nguồn 9V: động cơ hoạt động với dòng 9V và IC của mạch sẽ hoạt động với dòng điện 5V. Việc thiết kế có nhằm điều hướng thành 2 dòng điện khác nhau giúp IC hoạt động ổn định và tách nguồn riêng biệt với động cơ.
  • Power GND chân này là GND của nguồn cấp cho Động cơ.
  • 2 Jump A enable và B enable, nếu bạn dùng Board để điều khiển động cơ bước thì giữa nguyên. Nếu điều khiển động cơ bình thường thì nối với chân PWM để điều khiển tốc độ.
  • Gồm có 4 chân Input. IN1, IN2, IN3, IN4. Chức năng các chân này tôi sẽ giải thích ở bước sau.
  • Output A: nối với động cơ giảm tốc V1. bạn chú ý chân +, -. Nếu bạn nối ngược thì động cơ sẽ chạy ngược.
Động cơ và mạch cầu H
Động cơ và mạch cầu H

Sơ đồ nối dây

Sơ đồ nối dây mạch cầu H và động cơ - Arduino.

Điều khiển động cơ A

  • Khai báo chân ENA nối với chân số 8 của mạch Arduino.
  • Chân In1 - In2 lần lượt nối với chân số 7 - 6 của mạch Arduino.
  • Hàm chạy động cơ A theo chiều kim đồng hồ:
    • Chân In1 trạng thái HIGH.
    • Chân In2 trạng thái LOW.
  • Hàm chạy động cơ A theo chiều ngược kim đồng hồ:
    • Chân In1 trạng thái LOW.
    • Chân In2 trạng thái HIGH.
  • Tắt động cơ:
    • Chân In1 trạng thái LOW.
    • Chân In2 trạng thái LOW.
 //Motor A
int enA = 8; 
int in1 = 7; 
int in2 = 6;  

void setup() 
{
   pinMode(enA, OUTPUT);
   pinMode(in1, OUTPUT);
   pinMode(in2, OUTPUT);
} 

void motorA() 
{
    //Running motor A
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    analogWrite(enA, 200); 

    //Speed PWM 0~255     
    //Reverse 2s.
    delay(2000);
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);

    //STOP 2s.
   delay(2000);
   digitalWrite(in1, LOW);
   digitalWrite(in2, LOW);    
} 

void loop() 
{
   motorA();
   delay(1000);   
}

Điều khiển động cơ A - B cùng lúc

//Motor A
int enA = 8;
int in1 = 7;
int in2 = 6; 

//Motor B
int in3 = 5; 
int in4 = 4; 
int enB = 3;  

void setup()
{
	pinMode(enA, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT); 
	pinMode(enB,OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
}

void MotorRunning()
{
	//Running motor A
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	analogWrite(enA, 200); 
	
	//Speed PWM: 0~255 
	//Running motor B
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	analogWrite(enB, 200); 
	
	//Speed PWM: 0~255
	//Reverse 2s.
	delay(2000);
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);  
	
	//STOP 2s.
	delay(2000);
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
} 

void loop() 
{
	MotorRunning();
	delay(1000);
}

Lưu ý

Việc điều khiển 2 động cơ tuy dễ dàng nhưng vấn đề phát sinh trong thực tế, 2 động cơ hoạt động không đều nhau, do đó trong quá trình băm xung PWM phải thay đổi giá trị analogWrite để động cơ hoạt động có vận tốc phù hợp và truyền giá trị PWM vào.

Hướng giải quyết là đo được vận tốc của từng motor, sau đó điều chỉnh, thông qua việc sử dụng cảm biến IR FC-03 có tích hợp IC LM-393 để đo được vận tốc.

Điện Tử Ứng Dụng

Điện Tử Ứng Dụng

Kiến thức điện tử, Arduino, Raspberry Pi, giới thiệu sản phẩm.

Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Read more.
STDIO

STDIO Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, district Tan Phu, Ho Chi Minh city, Vietnam
+84 28.36205514
[email protected]

383/1 Quang Trung, ward 10, district Go Vap, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©STDIO, 2013 - 2021