ค้นหาโค้ด

ESP32 บทเรียน 15/55 - การควบคุมความเร็วมอเตอร์ DC ด้วย ESP32 L293D | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 15/55 - การควบคุมความเร็วมอเตอร์ DC ด้วย ESP32 L293D | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

บทช่วยสอน ESP32 15/55 - การควบคุมความเร็วมอเตอร์ DC ด้วย ESP32 L293D | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

การควบคุมมอเตอร์ DC ด้วย ESP32 อาจดูน่ากังวล แต่ก็จัดการได้ไม่ยากหากมีส่วนประกอบและความเข้าใจที่ถูกต้อง ในบทช่วยสอนนี้ เราจะสร้างโปรเจกต์ที่ช่วยให้เราควบคุมความเร็วและทิศทางของมอเตอร์ DC โดยใช้ไดรเวอร์มอเตอร์ L293D เมื่อเสร็จสิ้น คุณจะได้ชุดอุปกรณ์ที่ทำงานได้ ซึ่งสามารถหมุนมอเตอร์ไปข้างหน้าและถอยหลังพร้อมกับปรับความเร็วได้ สำหรับการอ้างอิงภาพ โปรดดูวิดีโอที่ (ในวิดีโอที่ 00:00)

แผนผังวงจร ESP32-15_L293D_motor

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยไมโครคอนโทรลเลอร์ ESP32 และไดรเวอร์มอเตอร์ L293D ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังพร้อมความสามารถ Wi-Fi และ Bluetooth ในตัว ทำให้เหมาะสำหรับแอปพลิเคชัน IoT สามารถควบคุมส่วนประกอบฮาร์ดแวร์ต่างๆ รวมถึงมอเตอร์ ผ่านพิน GPIO ของมัน L293D เป็นไดรเวอร์มอเตอร์แบบ H-bridge คู่ที่ช่วยให้คุณควบคุมทิศทางและความเร็วของมอเตอร์ DC สองตัวได้ แต่ละ H-bridge สามารถขับมอเตอร์ได้ทั้งสองทิศทางโดยการกลับขั้วของแรงดันไฟฟ้าที่จ่ายให้กับขั้วมอเตอร์ นอกจากนี้ L293D ยังสามารถรองรับกระแสได้สูงถึง 600 mA ต่อช่องสัญญาณ ทำให้เหมาะสำหรับมอเตอร์ขนาดเล็กถึงขนาดกลาง

ไอซีไดรเวอร์มอเตอร์ L293D

รายละเอียดจาก Datasheet

ผู้ผลิต Texas Instruments
หมายเลขชิ้นส่วน L293D
แรงดันไฟฟ้าลอจิก/IO 2.5 – 7 V
แรงดันไฟฟ้าจ่าย 4.5 – 36 V
กระแสเอาต์พุต (ต่อช่องสัญญาณ) 600 mA (ทั่วไป)
กระแสสูงสุด (ต่อช่องสัญญาณ) 1.2 A (สูงสุด)
คำแนะนำความถี่ PWM 20 kHz (ทั่วไป)
เกณฑ์ลอจิกอินพุต 0.8 V (สูง), 2.0 V (ต่ำ)
แรงดันตกคร่อม / RDS(on) / อิ่มตัว 1.5 V (สูงสุด)
ขีดจำกัดความร้อน 150 °C (สูงสุด)
แพ็กเกจ 16-DIP
หมายเหตุ / รุ่นต่างๆ ไดรเวอร์ครึ่ง H สี่ชุด

 

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

คำแนะนำการเดินสายไฟ

ESP32-15_L293D_motor_wiring

ในการเดินสายไฟ ESP32 และไดรเวอร์มอเตอร์ L293D ให้เริ่มต้นด้วยการเชื่อมต่อแหล่งจ่ายไฟ เชื่อมต่อพิน 16 ของ L293D เข้ากับขั้วบวกของแหล่งจ่ายไฟ และพิน 4 เข้ากับกราวด์ จากนั้นเชื่อมต่อมอเตอร์: ขั้วหนึ่งเข้ากับพิน 3 และอีกขั้วหนึ่งเข้ากับพิน 6 บน L293D สำหรับสัญญาณควบคุม ให้เชื่อมต่อพิน GPIO 13 ของ ESP32 เข้ากับพิน 2 บน L293D และพิน GPIO 14 เข้ากับพิน 7 สุดท้าย ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อกราวด์ของ ESP32 เข้ากับกราวด์ของ L293D เพื่อให้มีจุดอ้างอิงร่วมกัน หากวิดีโอพูดถึงการเดินสายไฟแบบอื่น (ในวิดีโอที่ 05:00) โปรดปฏิบัติตามการเปลี่ยนแปลงเฉพาะที่แสดงไว้

ตัวอย่างโค้ดและคำอธิบาย

โค้ดสำหรับควบคุมมอเตอร์ประกอบด้วยการกำหนดพินสำหรับมอเตอร์และการตั้งค่าโหมดของพินเหล่านั้น นี่คือส่วนหนึ่งจากฟังก์ชัน setup:

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

ในส่วนโค้ดนี้ เรากำหนดพินควบคุมมอเตอร์เป็นค่าคงที่และตั้งค่าเป็นเอาต์พุตในฟังก์ชัน setup ซึ่งสำคัญมากเพราะเป็นการเตรียมพินสำหรับควบคุมมอเตอร์ ฟังก์ชัน loop คือส่วนที่ควบคุมพฤติกรรมของมอเตอร์ นี่คือส่วนสำคัญของ loop:

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

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

การสาธิต / สิ่งที่คาดหวัง

เมื่อเดินสายไฟและอัปโหลดโค้ดสำเร็จ คุณควรเห็นมอเตอร์หมุนในทิศทางหนึ่งเป็นเวลา 2 วินาที จากนั้นเปลี่ยนทิศทางอีก 2 วินาที และหยุดเป็นเวลา 3 วินาที หากมอเตอร์ไม่ตอบสนองตามที่คาดหวัง ให้ตรวจสอบปัญหาทั่วไป เช่น การกลับขั้วหรือการเชื่อมต่อพินที่ไม่ถูกต้อง (ในวิดีโอที่ 08:00) ชุดอุปกรณ์นี้เป็นวิธีที่ตรงไปตรงมาในการควบคุมความเร็วและทิศทางของมอเตอร์ DC โดยใช้ ESP32 และ L293D

ไทม์สแตมป์ในวิดีโอ

  • 00:00 เริ่มต้น
  • 2:01 แนะนำมอเตอร์ DC
  • 6:14 ตัวขับมอเตอร์ L293D
  • 9:17 เอกสารโครงการ
  • 11:04 อธิบายการเดินสายไฟ
  • 14:41 การควบคุมมอเตอร์ Arduino ด้วย ESP32
  • 17:10 การเลือกพอร์ต Arduino สำหรับบอร์ด ESP32
  • 18:52 การสาธิตโครงการ
  • 22:08 การควบคุมความเร็วมอเตอร์โดยใช้ ESP32
  • 26:22 การสาธิตการควบคุมความเร็ว
  • 28:01 โค้ด Arduino สำหรับควบคุมความเร็วและทิศทาง
  • 29:05 การสาธิตความเร็วและทิศทาง

ภาพ

L293D-Motor-Driver-IC
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_wiring
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
ภาษา: C++
#define motor1A 13
#define motor2A 14

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin as an output.
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

// the loop function runs over and over again forever
void loop() {
  
  // Rotate
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  // Rotate in the opposite direction
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

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

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

แผ่นข้อมูล (pdf)