วิธีใช้ไดรเวอร์มอเตอร์ L298N กับ Arduino

How to Use the L298N Motor Driver with Arduino

L298N Motor Driver เป็นโมดูลยอดนิยมสำหรับการควบคุมมอเตอร์ DC และมอเตอร์สเต็ปเปอร์ ช่วยให้คุณสามารถควบคุมความเร็วและทิศทางของมอเตอร์โดยใช้สัญญาณ PWM จาก Arduino ทำให้เหมาะสำหรับโครงการหุ่นยนต์และระบบอัตโนมัติ บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ L298N กับ Arduino


สิ่งที่คุณต้องการ

  1. โมดูลไดรเวอร์มอเตอร์ L298N
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. มอเตอร์ดีซีหรือมอเตอร์สเต็ปเปอร์
  4. แหล่งพลังงานภายนอก (เช่นแบตเตอรี่ 9V หรือ 12V)
  5. เครื่องหั่นขนมปังและสายจัมเปอร์
  6. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: ทำความเข้าใจกับไดรเวอร์มอเตอร์ L298N

โมดูล L298N เป็นไดรเวอร์มอเตอร์คู่ H-Bridge ซึ่งหมายความว่าสามารถควบคุมความเร็วและทิศทางของมอเตอร์ DC สองตัวได้อย่างอิสระหรือมอเตอร์สเต็ปเปอร์หนึ่งตัว

l298n pinout

เข็มหมุด การทำงาน
in1, in2 มอเตอร์อินพุตควบคุมทิศทาง
ใน 3, in4 อินพุตการควบคุมทิศทางของมอเตอร์ b
ena มอเตอร์ควบคุมความเร็ว (อินพุต PWM)
enb การควบคุมความเร็วของมอเตอร์ B (อินพุต PWM)
Out1, Out2 มอเตอร์ A เอาต์พุต
Out3, Out4 เอาท์พุทมอเตอร์ B
12V (VCC) แหล่งจ่ายไฟภายนอกสำหรับมอเตอร์
5V (ไม่บังคับ) แหล่งจ่ายไฟลอจิก (ถ้าจัมเปอร์ถูกลบออก)
gnd พื้น

หมายเหตุ:

  • โมดูลรวมถึงตัวควบคุม 5V ออนบอร์ดที่ให้อำนาจวงจรลอจิกถ้าจัมเปอร์อยู่ในสถานที่และ VCC คือ 7-12V
  • การถอดจัมเปอร์ต้องให้คุณจัดหาอุปทาน 5V ลอจิกแยกต่างหาก

ขั้นตอนที่ 2: เดินสาย L298N ไปยัง Arduino

นี่คือวิธีเชื่อมต่อ L298N กับ Arduino Uno และมอเตอร์ DC สองตัว:

l298n pin พิน Arduino
ena PIN 10 (PWM)
ใน 1 พิน 8
ใน 2 พิน 9
enb PIN 11 (PWM)
ใน 3 พิน 6
ใน 4 พิน 7
gnd Arduino Gnd
12V (VCC) พลังงานภายนอก (9V/12V)
Out1, Out2 มอเตอร์เทอร์มินัล
Out3, Out4 ขั้วมอเตอร์ B

ขั้นตอนที่ 3: อัปโหลดรหัส

นี่คือตัวอย่างร่างเพื่อควบคุมมอเตอร์ DC สองตัว:

รหัสตัวอย่าง

// Motor A connections
#define ENA 10
#define IN1 8
#define IN2 9

// Motor B connections
#define ENB 11
#define IN3 6
#define IN4 7

void setup() {
  // Set all pins as outputs
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  // Move Motor A forward
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 150); // Set speed (0-255)

  // Move Motor B backward
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENB, 150); // Set speed (0-255)

  delay(2000); // Run for 2 seconds

  // Stop both motors
  digitalWrite(ENA, LOW);
  digitalWrite(ENB, LOW);

  delay(1000); // Pause for 1 second

  // Move both motors in reverse
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENA, 200);
  analogWrite(ENB, 200);

  delay(2000); // Run for 2 seconds

  // Stop both motors
  digitalWrite(ENA, LOW);
  digitalWrite(ENB, LOW);
  delay(1000); // Pause for 1 second
}

ขั้นตอนที่ 4: ทดสอบการตั้งค่า

  1. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  2. เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
  3. อัปโหลดรหัสไปยัง Arduino โดยคลิก อัพโหลด.
  4. สังเกตมอเตอร์หมุนไปข้างหน้าหยุดและย้อนกลับตามลำดับที่ตั้งโปรแกรมไว้

เป็นทางเลือก: การควบคุมความเร็วแบบไดนามิก

คุณสามารถปรับความเร็วมอเตอร์แบบไดนามิกได้โดยการเปลี่ยนค่า PWM ที่ส่งไปยัง ENA และ ENB พินที่ใช้ analogWrite () ตัวอย่างเช่น:

analogWrite(ENA, 100); // Slow speed
analogWrite(ENA, 255); // Full speed

Applications of the L298N

  1. Building motorized robots
  2. การควบคุมสายพานลำเลียง
  3. ขับมอเตอร์ Stepper
  4. ระบบอัตโนมัติด้วยมอเตอร์ DC

การแก้ไขปัญหา

  • มอเตอร์ไม่หมุน: ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟภายนอกเชื่อมต่อและให้กระแสเพียงพอ
  • ทิศทางมอเตอร์ไม่ถูกต้อง: ตรวจสอบการเดินสายของหมุดและการเชื่อมต่อย้อนกลับหากจำเป็น
  • พฤติกรรมมอเตอร์ที่ไม่เสถียร: ใช้แหล่งจ่ายไฟที่เสถียรและหลีกเลี่ยงการเชื่อมต่อที่หลวม

บทสรุป

คุณสามารถเชื่อมต่อไดรเวอร์มอเตอร์ L298N กับ Arduino เพื่อควบคุมมอเตอร์ DC ได้สำเร็จ โมดูลอเนกประสงค์นี้ช่วยให้คุณจัดการความเร็วและทิศทางมอเตอร์ได้อย่างง่ายดาย ทดลองเพิ่มเติมโดยการรวมเซ็นเซอร์การควบคุมระยะไกลหรือโมดูลอื่น ๆ เข้ากับโครงการที่ใช้เครื่องยนต์ของคุณ!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.