L298N Motor Driver Module คืออะไร? วิธีควบคุมมอเตอร์ด้วย Arduino
L298N Motor Driver คือโมดูลขับมอเตอร์ประสิทธิภาพสูงที่นิยมใช้ในโปรเจกต์หุ่นยนต์และระบบควบคุมต่างๆ สามารถใช้ควบคุมความเร็วและทิศทางการหมุนของมอเตอร์กระแสตรง (DC Motor) ได้พร้อมกัน 2 ตัว หรือควบคุม Stepper Motor ได้ 1 ตัว โดยรับคำสั่งจากบอร์ดไมโครคอนโทรลเลอร์ เช่น Arduino
หัวใจหลักของโมดูลนี้คือชิป L298N ซึ่งภายในเป็นวงจรแบบ H-Bridge ทำให้สามารถสลับขั้วไฟฟ้าที่จ่ายให้มอเตอร์ได้ ส่งผลให้เราสั่งให้มอเตอร์หมุนเดินหน้าหรือถอยหลังได้อย่างอิสระ
สเปคของ L298N
ชิปควบคุมหลัก |
L298N Dual H-Bridge Driver |
แรงดันสำหรับมอเตอร์ |
5V – 35V DC |
แรงดันลอจิกควบคุม |
5V (เหมาะกับ Arduino โดยตรง) |
กระแสสูงสุดต่อช่อง |
2A (ต่อเนื่องแนะนำไม่เกิน 1.5A) |
จำนวนมอเตอร์ |
DC Motor 2 ตัว หรือ Stepper Motor 1 ตัว |
Regulator 5V ในตัว |
มี (สามารถจ่ายไฟ 5V ให้ Arduino ได้) |
ช่องอินพุตควบคุม |
IN1, IN2, IN3, IN4, ENA, ENB |
ช่องเอาต์พุตมอเตอร์ |
OUT1, OUT2, OUT3, OUT4 |
การใช้งานกับ Arduino
✅ การต่อสายควบคุมมอเตอร์ DC 2 ตัว
ขาบน L298N |
หน้าที่ / ต่อกับอะไร |
ENA |
ควบคุมความเร็วมอเตอร์ A (ต่อกับขา PWM ของ Arduino เช่น D5) |
IN1, IN2 |
ควบคุมทิศทางมอเตอร์ A (ต่อกับขา Digital เช่น D8, D9) |
ENB |
ควบคุมความเร็วมอเตอร์ B (ต่อกับขา PWM ของ Arduino เช่น D6) |
IN3, IN4 |
ควบคุมทิศทางมอเตอร์ B (ต่อกับขา Digital เช่น D10, D11) |
OUT1, OUT2 |
ต่อกับขั้วของมอเตอร์ A |
OUT3, OUT4 |
ต่อกับขั้วของมอเตอร์ B |
12V (VCC) |
ต่อกับแหล่งจ่ายไฟสำหรับมอเตอร์ (เช่น แบตเตอรี่ 7V-12V) |
GND |
ต่อกับกราวด์ของแหล่งจ่ายไฟมอเตอร์ และต่อร่วมกับ GND ของ Arduino |
5V |
เป็น Output 5V จาก Regulator (เมื่อใส่ Jumper 5V-EN) |
การใช้งาน Jumper 5V-EN:
-
ใส่ Jumper ไว้ (ค่าเริ่มต้น): เมื่อใช้แหล่งจ่ายไฟมอเตอร์ มากกว่า 7V วงจร Regulator บนบอร์ดจะทำงานและสร้างไฟ 5V ออกมาที่ขา 5V ซึ่งเราสามารถนำไฟนี้ไปเลี้ยงบอร์ด Arduino ได้เลย
-
ถอด Jumper ออก: เมื่อใช้แหล่งจ่ายไฟมอเตอร์ เท่ากับ 5V หรือเมื่อต้องการจ่ายไฟ 5V ให้บอร์ด L298N และ Arduino แยกกัน
✅ ตัวอย่างโค้ดควบคุมมอเตอร์ A
โค้ดนี้จะทำให้มอเตอร์ A หมุนไปข้างหน้า 2 วินาที, ถอยหลัง 2 วินาที, และหยุด 2 วินาที วนไปเรื่อยๆ
// กำหนดขาสำหรับควบคุมมอเตอร์ A
const int ena = 5; // ขา PWM สำหรับควบคุมความเร็ว
const int in1 = 8; // ขาควบคุมทิศทาง 1
const int in2 = 9; // ขาควบคุมทิศทาง 2
void setup() {
// ตั้งค่าทุกขาเป็น OUTPUT
pinMode(ena, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
}
void loop() {
// --- หมุนเดินหน้า ---
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, 200); // กำหนดความเร็ว (ค่าระหว่าง 0-255)
delay(2000);
// --- หมุนถอยหลัง ---
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, 150); // ลดความเร็วลง
delay(2000);
// --- หยุดหมุน ---
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// analogWrite(ena, 0); // หรือจะใช้คำสั่งนี้เพื่อหยุดก็ได้
delay(2000);
}
🛠️ การประยุกต์ใช้งาน
- สร้างหุ่นยนต์อัตโนมัติ เช่น หุ่นยนต์หลบหลีกสิ่งกีดขวาง, หุ่นยนต์เดินตามเส้น
- สร้างรถบังคับวิทยุที่ควบคุมผ่าน Bluetooth หรือ Wi-Fi
- ระบบควบคุมความเร็วและทิศทางของพัดลม DC
- โปรเจกต์แขนกลที่ควบคุมด้วย DC Motor หรือ Stepper Motor
- ระบบเปิด-ปิดประตูหรือหน้าต่างอัตโนมัติ
⭐ ข้อดีของ L298N
- รองรับแรงดันและกระแสไฟได้สูง เหมาะกับมอเตอร์หลากหลายขนาด
- ใช้งานง่าย มีไลบรารีและตัวอย่างโค้ดให้ศึกษามากมาย
- มีวงจร Regulator 5V ในตัว ช่วยลดความซับซ้อนในการจ่ายไฟให้วงจร
- ราคาถูกและเป็นที่นิยม หาซื้อง่าย