Search…

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

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.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, 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

©IO Stream, 2013 - 2024