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 และไดรเวอร์มอเตอร์ L293D ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังพร้อมความสามารถ Wi-Fi และ Bluetooth ในตัว ทำให้เหมาะสำหรับแอปพลิเคชัน IoT สามารถควบคุมส่วนประกอบฮาร์ดแวร์ต่างๆ รวมถึงมอเตอร์ ผ่านพิน GPIO ของมัน L293D เป็นไดรเวอร์มอเตอร์แบบ H-bridge คู่ที่ช่วยให้คุณควบคุมทิศทางและความเร็วของมอเตอร์ DC สองตัวได้ แต่ละ H-bridge สามารถขับมอเตอร์ได้ทั้งสองทิศทางโดยการกลับขั้วของแรงดันไฟฟ้าที่จ่ายให้กับขั้วมอเตอร์ นอกจากนี้ L293D ยังสามารถรองรับกระแสได้สูงถึง 600 mA ต่อช่องสัญญาณ ทำให้เหมาะสำหรับมอเตอร์ขนาดเล็กถึงขนาดกลาง
รายละเอียดจาก 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 และไดรเวอร์มอเตอร์ 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 การสาธิตความเร็วและทิศทาง
#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);
}
Common Course Links
Common Course Files
สิ่งที่คุณอาจต้องการ
-
อเมซอนPurchase L293D motor driver ICamzn.to
-
อีเบย์
-
อาลีเอ็กซ์เพรสPurchase L293D motor driver IC from AliExpresss.click.aliexpress.com
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารESP32 Tutorial 15/55 - SunFounder motor control documentationdocs.sunfounder.com
ไฟล์📁
แผ่นข้อมูล (pdf)
-
L293d_Quadruple_half_bridge_datasheet
l293d_Quadruple_half_bridge_datasheet.pdf0.34 MB