Mạch Motor Shield L298P Với Arduino

L298P-2

Mạch Motor Shield L298P là một module điều khiển động cơ mạnh mẽ được thiết kế để sử dụng với các loại động cơ đường kính từ 4 đến 35mm và dòng điện lên đến 2A. Mạch này có thể được sử dụng để điều khiển động cơ DC hoặc stepper motor và là một phần của bộ điều khiển Arduino.

Mạch Motor Shield L298P được tích hợp một chip L298P của hãng STMicroelectronics, cho phép nó cung cấp khả năng điều khiển hai động cơ DC hoặc một động cơ bước (stepper motor) với tốc độ và hướng chạy có thể được điều chỉnh.

Mạch còn có các tính năng bảo vệ như chống quá dòng, quá nhiệt và đảo chiều cực của động cơ, giúp bảo vệ mạch và động cơ khỏi hỏng hóc.

Thông số kỹ thuật

  • Diện áp cấp: 5 VDC
  • Điện áp điều khiển động cơ: 4,8 ~ 35V
  • Dòng tĩnh Iss: <36mA
  • Dòng ra tải Iout: <2A mỗi kênh
  • Công suất: 25W
  • Mức tín hiệu điều khiển: High: 2.3VDC, Low: 0.3VDC
  • Loại điều khiển: Điều khiển cầu H đôi

Sơ đồ khối chức năng


Gán chân I/O điều khiển động cơ Arduino

Chức năng Động cơ A Động cơ B
Hướng điều khiển D12 (Mức 0 quay chiều thuận, mức 1 quay chiều ngược) D13 (Mức 0 quay chiều thuận, mức 1 quay chiều ngược)
Điều khiển PWM D10 (cấp xung PWM điều tốc motor) D11 (cấp xung PWM điều tốc motor)
Điều khiển Buzzer D4 (Mức 1 Loa ON)

Bạn có thể sử dụng 2 động cơ DC có chổi than bằng cách kết nối chúng với các đầu nối của Động cơ A và Động cơ B trên Termial. Bằng cách đặt các chân Điều khiển hướng A (D12) và Điều khiển hướng B (D13) ở mức CAO hoặc THẤP, bạn có thể điều khiển hướng của động cơ. Bằng cách thay đổi tốc độ PWM-A (D10) và PWM-B (D11), bạn có thể kiểm soát tốc độ của động cơ.

Ví dụ kết nối với Arduino

Điều khiển 2 động cơ DC với nguồn điện bên ngoài +12V:

Dưới đây là đấu nối mạch sử dụng nguồn ngoài +12V, và nên thực hiện với Jumper
chèn vào như hình. Kết nối này có thể điều khiển đồng thời hai động cơ DC 12V



Code mẫu

const int MT1=12;
const int MT2=13;
const int PWMA=10;
const int PWMB=11;
const int BUZZER=4;
void setup() {
 pinMode(MT1, OUTPUT);
 pinMode(MT2, OUTPUT);
 pinMode(PWMA, OUTPUT);
 pinMode(PWMB, OUTPUT);
 pinMode(BUZZER, OUTPUT);
 digitalWrite(BUZZER,HIGH);
 delay(300);
 digitalWrite(BUZZER,LOW);
 delay(300);
 digitalWrite(BUZZER,HIGH);
 delay(300);
 digitalWrite(BUZZER,LOW);
 delay(300);
}
void loop() {
Motor1_Brake();
Motor2_Brake();
delay(100);
Motor1_Forward(200);
Motor2_Forward(200);
delay(1000);
Motor1_Brake();
Motor2_Brake();
delay(100);
Motor1_Backward(200);
Motor2_Backward(200);
delay(1000);
}
void Motor1_Forward(int Speed)
{
 digitalWrite(MT1,LOW);
 analogWrite(PWMA,Speed);
}

void Motor1_Backward(int Speed)
{
 digitalWrite(MT1,HIGH);
 analogWrite(PWMA,Speed);
}
void Motor1_Brake()
{
 digitalWrite(MT1,LOW);
 digitalWrite(MT1,LOW);
}
void Motor2_Forward(int Speed)
{
 digitalWrite(MT2,LOW);
 analogWrite(PWMB,Speed);
}

void Motor2_Backward(int Speed)
{
 digitalWrite(MT2,HIGH);
 analogWrite(PWMB,Speed);
}
void Motor2_Brake()
{
 digitalWrite(MT2,LOW);
 digitalWrite(MT2,LOW);
}

Video

 

Nhận xét

Mới hơn Cũ hơn