Chuyên đề arduino – Giao tiếp arduino với module L298N điều khiển động cơ

     Giao tiếp arduino với module L298N điều khiển động cơ với 2 kênh. Module L298N có khả năng điều khiển 2 động cơ cùng lúc. Bản chất của module này là có 2 mạch cầu H để điều khiển động cơ. Chúng ta hãy xem nội dung bài viết bên dưới để hiểu được cách điều khiển 2 động cơ bằng L298N như thế nào.

  NỘI DUNG BÀI VIẾT 

  • Cấu tạo module L298N
  • Nguyên tắc điều khiển động cơ
  • Ứng dụng điều khiển 2 động cơ bằng L298N

  CẤU TẠO MODULE L298N 

     Cấu tạo của module L298N là 2 mạch cầu H để có thể điều khiển 2 động cơ cùng lúc. Trong module có sử dụng IC công suất L298N, với dòng điều khiển động cơ là 2A. 

     Module này có thể được sử dụng điều khiển động cơ bước và động cơ DC. Động cơ bước có thể điều khiển được là loại 4 dây hoặc 6 dây.

  • Điện áp sử dụng để điều khiển 5V (36mA).
  • Điện áp hoạt động của động cơ từ 5VDC – 32VDC
  • Nhiệt độ hoạt động từ -20oC đến 135oC
  • Công suất cho tín hiệu điều khiển động cơ là 25W
  • Trọng lượng: 30g.
  • Kích thước: 43mm x 43mm x 27mm.

    Sơ đồ chân của module gồm có 8 chân. Chức năng của các chân được mô tả như sau:

  • 2 chân điều khiển IN1, IN2 điều khiển động cơ số 1.
  • 2 chân điều khiển IN3, IN4 điều khiển động cơ số 2.
  • Chân Vcc là chân cấp nguồn 5VDC và 12VDC (chân cấp nguồn cho động cơ, chúng ta chỉ chọn 1 trong 2)
  • Chân GND nối với GND.
  • Jump ENA là chân cho phép động cơ 1 hoạt động. Thường kết nối với arduino để điều khiển tốc độ động cơ số 1 bằng xung PWM. Khi kết nối arduino thì rút jump ra, còn khi không điều khiển tốc độ mà chỉ cho phép chạy 1 tốc độ thì gắn jump vào lại như hình trên.
  • Jump ENB là chân cho phép động cơ 2 hoạt động. Thường kết nối với arduino để điều khiểm tốc độ động cơ số 2 bằng xung PWM. Khi kết nối arduino thì rút jump ra, còn khi không điều khiển tốc độ mà chỉ cho phép chạy 1 tốc độ thì gắn jump vào lại như hình trên.
  • Jump 5V Enable sử dụng để chọn nguồn 5V cấp cho động cơ. Nếu không sử dụng Jump này thì sẽ cấp nguồn 12V cho động cơ. Khi ta chỉ cần cấp 12V tại chân 12V và sử gắn jump này vào thì sẽ có nguồn 5V điều khiển động cơ và 5V tại chân +5V Power luôn.

  Những lưu ý khi giao tiếp arduino với module L298N 

  •   Trong quá trình điều khiển động cơ, các bạn cần lưu ý dòng cần cấp cho động cơ. Nếu chúng ta cần cấp nguồn điều khiển cho động cơ DC có dòng dưới 1A thì bạn có thể sử dụng nguồn từ bo mạch arduino cấp vào cho L298N. Ngược lại, nếu bạn cần sử dụng điều khiển với động cơ công suất cao hơn. Chúng ta cần nguồn cấp riêng biệt là 12V hoặc 9V tại chân 12V của module. Vì sử dụng điều khiển động cơ với công suất lớn hơn thì bo arduino không đủ dòng cấp, dễ gây hỏng bo arduino.
  •   Khi kết nối các động cơ với module thì các bạn cần chú ý cực +/- của động cơ với các ngõ +/- của ngõ OUTPUT.

  NGUYÊN TẮC ĐIỀU KHIỂN ĐỘNG CƠ 

  • Để điều khiển động cơ số 1 chúng ta cần kết nối vào chân ngõ ra OUTPUT A, và tín hiệu điều khiển là IN1, IN2. Nếu IN1 là 5V, IN2 là 0V thì động cơ quay theo chiều số 1. Nếu chúng ta đổi lại tín hiệu điều khiển IN1 là 0V, IN2 là 5V thì động cơ quay theo chiều số 2. 
  • Tương tự như cách điều khiển động cơ số 1 thì động cơ số 2 cũng được điều khiển bằng các tín hiệu IN3 và IN4. Ngõ ra OUTPUT B sẽ kết nối đến động cơ số 2.
  • Khi sử dụng phương pháp điều khiển như trên thì động cơ sẽ hoạt động với tốc độ cao nhất. Động cơ chỉ thay đổi chiều quay khi thay đổi tín hiệu ở chân điều khiển. Nếu các bạn muốn thay đổi được tốc độ thì các bạn cần phải sử dụng xung PWM để điều khiển các chân IN1, IN2, IN3, IN4.

   ỨNG DỤNG ĐIỀU KHIỂN 2 ĐỘNG CƠ BẰNG L298N 

  Linh kiện cần thiết

Linh kiện Số lượng
Bo arduino UNO 01
Module L298N 01
Động cơ DC 02
Pin 9V 01

 Sơ đồ mạch

 Đoạn code chương trình

int enA = 9;
int IN1 = 8;
int IN2	= 7;
int enB = 3;
int IN3	= 5;
int IN4	= 4;

void setup()
{
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

// Tắt cả 2 động cơ
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}
 
//Tăng tốc 2 động cơ
void tangtoc(){
  for(tocdo = 0; tocdo < 256, tocdo ++)
    {
    digitalWrite(enA, tocdo);
    digitalWrite(enB, tocdo);
    delay(20);
    }
}

//Giảm tốc 2 động cơ
void giamtoc(){
   for(tocdo = 255; tocdo >= 0, tocdo --)
    {
    digitalWrite(enA, tocdo);
    digitalWrite(enB, tocdo);
    delay(20);
    }
}

//Quay theo chiều tiến 2 động cơ
void tien(){
   digitalWrite(IN1, LOW);
   digitalWrite(IN2, HIGH);
   digitalWrite(IN3, LOW);
   digitalWrite(IN4, HIGH);
   tangtoc();
}

//Quay theo chiều lùi 2 động cơ
void lui(){
   digitalWrite(IN1, HIGH);
   digitalWrite(IN2, LOW);
   digitalWrite(IN3, HIGH);
   digitalWrite(IN4, LOW);
   tangtoc();
}

//Dừng 2 động cơ
void dung(){
   giamtoc();
   digitalWrite(IN1, LOW);
   digitalWrite(IN2, LOW);
   digitalWrite(IN3, LOW);
   digitalWrite(IN4, LOW);
}

void loop()
{
  tien(); //2 motor tiến
  delay(1000);
  lui(); //2 motor lùi
  delay(1000);
  dung(); //2 động cơ dừng
  delay(1000);
}

 


Categories:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *