เขียนโปรแกรมควบคุม DC Motor ด้วย Arduino
nextbackseo@gmail.com | Posted on |
สารบัญ
Toggleเขียนโปรแกรมควบคุม DC Motor ด้วย Arduino
เขียนโปรแกรมควบคุม DC Motor ด้วย Arduino DC Motors run when powered by an Arduino connected to a computer but not a battery เกิดจากอะไร? พร้อมวิธีแก้ ทดลองเขียนโปรแกรมควบคุม DC Motor ด้วย Arduino บนโต๊ะแล้วทุกอย่างทำงานปกติ แต่พอถอดสาย USB จากคอมพิวเตอร์และเปลี่ยนมาใช้แบตเตอรี่ มอเตอร์กลับไม่หมุน หรือบางครั้งหมุนเพียงเล็กน้อยแล้วหยุด เป็นปัญหาที่ผู้เริ่มต้นพัฒนา Arduino และระบบ Automation สามารถพบได้บ่อย อาการที่มักถูกค้นหาด้วยคำถามว่า “DC Motors run when powered by an Arduino connected to a computer but not a battery” ไม่ได้หมายความว่า Arduino หรือ DC Motor เสียเสมอไป สาเหตุอาจมาจากแหล่งจ่ายไฟที่ให้กระแสไม่เพียงพอ แรงดันตกเมื่อมอเตอร์เริ่มหมุน การต่อ Ground ไม่ร่วมกัน การเลือก Motor Driver ไม่เหมาะสม หรือการต่อวงจรไฟเลี้ยงผิดตำแหน่ง การแก้ปัญหาจึงไม่ควรเริ่มจากการเปลี่ยนโค้ดทันที แต่ควรตรวจสอบระบบไฟตั้งแต่ Arduino, Motor Driver, DC Motor ไปจนถึงแบตเตอรี่ อธิบายสาเหตุ วิธีตรวจสอบ และแนวทางเลือกอุปกรณ์สำหรับระบบ Arduino DC Motor พร้อมแนะนำอุปกรณ์ที่เกี่ยวข้องจาก Autoworks24 สำหรับผู้ที่ต้องการประกอบวงจร ทดลอง Prototype หรือพัฒนาต่อยอดเป็นระบบ Automation ทำไม DC Motor ทำงานตอน Arduino ต่อคอมพิวเตอร์ แต่ไม่ทำงานเมื่อใช้แบตเตอรี่? ก่อนอื่นต้องเข้าใจว่าตอน Arduino เชื่อมต่อกับคอมพิวเตอร์ผ่านสาย USB ตัวบอร์ดได้รับแหล่งจ่ายไฟจาก USB ขณะเดียวกันคอมพิวเตอร์ยังเชื่อมต่อกับ Arduino สำหรับ Upload โปรแกรมและ Serial Communication เมื่อถอด USB แล้วเปลี่ยนเป็นแบตเตอรี่ เงื่อนไขของแหล่งจ่ายไฟเปลี่ยนไปทันที หากแบตเตอรี่มีแรงดันหรือความสามารถในการจ่ายกระแสไม่เหมาะสม Arduino อาจเปิดติดแต่ระบบไม่สามารถจ่ายพลังงานให้มอเตอร์ได้ตามต้องการ โดยเฉพาะช่วงเริ่มหมุนที่ DC Motor สามารถต้องการกระแสมากกว่าช่วงหมุนตามปกติ ดังนั้นอาการ Arduino เปิด แต่ Motor ไม่หมุน ไม่ได้ยืนยันว่าแบตเตอรี่เพียงพอสำหรับระบบทั้งหมด
- สาเหตุที่ 1 แบตเตอรี่จ่ายกระแสให้ DC Motor ไม่เพียงพอ
นี่เป็นหนึ่งในจุดแรกที่ควรตรวจสอบ DC Motor เป็นโหลดที่แตกต่างจาก LED หรือ Sensor อย่างมาก เนื่องจากต้องใช้พลังงานในการสร้างแรงบิดเพื่อทำให้เพลาเริ่มหมุน โดยเฉพาะตอน Startup หรือเมื่อมีโหลดอยู่บนเพลา สมมติ Arduino และวงจร Logic ใช้พลังงานได้ตามปกติจากแบตเตอรี่ แต่เมื่อ Motor Driver สั่งให้มอเตอร์เริ่มหมุน กระแสที่ระบบต้องการเพิ่มขึ้นอย่างรวดเร็ว หากแบตเตอรี่จ่ายไม่ไหว แรงดันอาจตกลงจน Motor Driver หรือ Arduino ทำงานผิดปกติ อาการที่พบได้ เช่น มอเตอร์กระตุกแล้วหยุด Arduino Restart ไฟ LED บนบอร์ดหรี่ลง หรือระบบทำงานไม่เหมือนตอนเสียบ USB วิธีแก้จึงไม่ใช่ดูเฉพาะจำนวนโวลต์ของแบตเตอรี่ แต่ต้องตรวจสอบ Voltage, Current Capability และความต้องการของมอเตอร์ ร่วมกัน
- สาเหตุที่ 2 นำ DC Motor ต่อกับ Arduino โดยตรง
ข้อผิดพลาดที่สำคัญอีกประการคือการพยายามให้ขา I/O ของ Arduino ขับ DC Motor โดยตรง Arduino มีหน้าที่หลักในการประมวลผลและส่งสัญญาณควบคุม ไม่ได้ออกแบบให้ Digital Pin เป็นแหล่งกำลังสำหรับขับมอเตอร์ที่ต้องใช้กระแสสูง ทางเลือกที่เหมาะสมคือใช้ Motor Driver เป็นตัวกลาง โครงสร้างระบบจะเป็นลักษณะดังนี้ Arduino → Control Signal → Motor Driver → DC Motor ขณะที่พลังงานสำหรับมอเตอร์มาจากแหล่งจ่ายไฟที่เหมาะสม Battery / Power Supply → Motor Driver → DC Motor เว็บไซต์ Autoworks24 มีบทความตัวอย่างการควบคุม DC Motor ด้วย L298 โดยระบุการใช้ Arduino, L298N Motor Driver, DC Motor และแหล่งจ่ายไฟสำหรับมอเตอร์แยกเป็นองค์ประกอบของระบบ ซึ่งเป็นแนวทางที่เหมาะกว่าการพยายามขับมอเตอร์จาก I/O ของ Arduino โดยตรง
- สาเหตุที่ 3 ต่อ Ground ไม่ร่วมกัน
กรณีที่ Arduino และ Motor Driver ใช้แหล่งจ่ายไฟคนละชุด สิ่งที่มักถูกลืมคือ Common Ground Arduino ส่งสัญญาณ HIGH, LOW หรือ PWM ไปยัง Driver แต่สัญญาณเหล่านั้นต้องมีจุดอ้างอิงทางไฟฟ้าร่วมกัน โดยทั่วไปจึงต้องเชื่อม GND ของ Arduino → GND ของ Motor Driver หากไม่มี Common Ground ตัว Driver อาจตีความสัญญาณจาก Arduino ไม่ถูกต้อง ทำให้มอเตอร์ไม่ทำงาน ทำงานไม่สม่ำเสมอ หรือเกิดอาการที่ดูเหมือนโปรแกรมมีปัญหา ในตัวอย่างการต่อ L298N ของ Autoworks24 ก็ระบุให้เชื่อม GND ของ Arduino กับ GND ของ L298N Motor Driver เช่นกัน
- สาเหตุที่ 4 แรงดันแบตเตอรี่ไม่เหมาะกับ Arduino หรือ Motor
คำว่า “ใช้แบตเตอรี่” ยังไม่เพียงพอที่จะบอกว่าระบบจะทำงาน เพราะแบตเตอรี่แต่ละชนิดมีแรงดันและคุณสมบัติแตกต่างกัน Arduino UNO R3 ที่ Autoworks24 จำหน่ายมี Operating Voltage 5V และระบุ Input Voltage ที่แนะนำสำหรับบอร์ดไว้ที่ 7–12V ดังนั้นจุดที่ป้อนไฟและแรงดันที่ใช้ต้องสัมพันธ์กับข้อกำหนดของบอร์ด ในฝั่งมอเตอร์ก็เช่นเดียวกัน หากใช้ DC Motor 12V แต่แหล่งจ่ายให้แรงดันต่ำเกินไป มอเตอร์อาจเริ่มหมุนไม่ได้เมื่อมีโหลด ในทางกลับกัน การจ่ายแรงดันเกินสเปกของมอเตอร์หรืออุปกรณ์ก็มีความเสี่ยงต่อความเสียหาย ก่อนซื้ออุปกรณ์จึงควรจับคู่สเปกตั้งแต่ต้น ได้แก่ Arduino + Motor Driver + DC Motor + Power Supply/Battery
- สาเหตุที่ 5 Motor Driver มี Voltage Drop
หากใช้ L298N หรือ Motor Driver อื่น ต้องเข้าใจว่าแรงดันที่เข้าสู่ Driver ไม่จำเป็นต้องเท่ากับแรงดันที่ออกไปถึง Motor แบบสมบูรณ์ Driver สามารถมีแรงดันตกคร่อมตามลักษณะวงจรและสภาวะการทำงาน ดังนั้นระบบที่มีแรงดันต้นทางค่อนข้างต่ำอยู่แล้วอาจเหลือแรงดันที่มอเตอร์ได้รับน้อยกว่าที่คาด นี่เป็นอีกเหตุผลที่ไม่ควรเลือกแบตเตอรี่โดยคิดเพียงว่า “Motor เป็น 6V ดังนั้นใช้ Battery 6V ก็จบ” แต่ควรตรวจสอบ Datasheet ของ Driver และ Motor รวมถึงวัดแรงดันจริงขณะที่มอเตอร์กำลังทำงาน
- สาเหตุที่ 6 แบตเตอรี่ดูเหมือนมีแรงดัน แต่แรงดันตกเมื่อมีโหลด
การใช้ Multimeter วัดแบตเตอรี่โดยไม่ได้ต่อโหลดอาจแสดงแรงดันที่ดูปกติ แต่ไม่ได้หมายความว่าแบตเตอรี่สามารถรักษาแรงดันดังกล่าวได้เมื่อ DC Motor เริ่มดึงกระแส วิธีตรวจสอบที่มีประโยชน์คือวัดแรงดันในสองสถานการณ์ ได้แก่ ขณะที่มอเตอร์ยังไม่ทำงาน และขณะสั่งให้มอเตอร์เริ่มหมุน หากแรงดันลดลงอย่างมากทันทีที่ Motor Start ควรตรวจสอบความสามารถของแหล่งจ่ายไฟ สภาพแบตเตอรี่ สายไฟ Connector และกระแสที่มอเตอร์ต้องการ
วิธีต่อ Arduino + L298N + DC Motor ให้เป็นระบบ
สำหรับผู้เริ่มต้น สามารถมองระบบเป็น 3 ส่วนเพื่อช่วยลดความสับสน ส่วนควบคุม Arduino UNO R3 ทำหน้าที่ประมวลผลโปรแกรมและส่งคำสั่ง ส่วนขับกำลัง L298N Motor Driver รับสัญญาณจาก Arduino แล้วควบคุมพลังงานที่ส่งไปยังมอเตอร์ ส่วนกำลัง Battery หรือ Power Supply จ่ายพลังงานให้กับมอเตอร์ตาม Voltage และ Current ที่ต้องการ สำหรับ L298N สามารถต่อ DC Motor ตัวแรกเข้ากับ OUT1/OUT2 และอีกตัวเข้ากับ OUT3/OUT4 ส่วน ENA/ENB สามารถใช้กับสัญญาณ PWM เพื่อควบคุมความเร็ว และ IN1-IN4 ใช้กำหนดสถานะหรือทิศทางตามการออกแบบวงจร สิ่งสำคัญคือ GND ของ Arduino และ Motor Driver ต้องมี Reference ร่วมกัน ตามรูปแบบการต่อวงจรที่เหมาะสม
- ทำไมตอนต่อ USB แล้วเหมือนทุกอย่างแก้ตัวเองได้?
กรณีนี้อาจทำให้ผู้พัฒนาเข้าใจผิดว่า Code ทำงานเฉพาะเมื่อเชื่อมต่อคอมพิวเตอร์ ความจริงต้องแยกให้ออกว่า USB กำลังทำหน้าที่อะไรในระบบ หาก Arduino ใช้โปรแกรมที่ Upload เข้าไปแล้ว โปรแกรมโดยทั่วไปสามารถทำงานได้หลังจากถอดคอมพิวเตอร์ ตราบใดที่บอร์ดได้รับไฟและไม่มีส่วนของโปรแกรมที่จำเป็นต้องรอการเชื่อมต่อจากคอมพิวเตอร์ ดังนั้นหากถอด USB แล้วระบบหยุด ควรตรวจสอบ Power Architecture ก่อนสงสัย Code ให้ลองถามทีละข้อว่า Arduino ได้รับแรงดันถูกต้องหรือไม่ Motor Driver ได้รับไฟหรือไม่ Battery จ่ายกระแสเพียงพอหรือไม่ GND ต่อร่วมกันหรือไม่ และ Motor ได้รับแรงดันเท่าไรตอนเริ่มหมุน การ Troubleshoot แบบนี้มักช่วยค้นหาปัญหาได้เร็วกว่าการแก้โปรแกรมแบบสุ่ม
- อยากประกอบ Arduino DC Motor ควรเตรียมอะไรบ้าง?
สำหรับการทดลองระบบพื้นฐาน อุปกรณ์ที่ควรเตรียมประกอบด้วย Arduino UNO หรือบอร์ด Microcontroller ที่เหมาะสม, DC Motor, Motor Driver, Battery หรือ DC Power Supply, Jumper Wire และอุปกรณ์สำหรับวัดแรงดัน/กระแสตามความจำเป็น หากต้องการควบคุมความเร็ว ควรเลือก Driver ที่รองรับ PWM หากต้องการกลับทิศทางการหมุน ควรเลือกวงจรที่รองรับ H-Bridge และหากระบบต้องรับโหลดสูง ต้องตรวจสอบกระแสสูงสุดของ Driver อย่างละเอียด Autoworks24 มีหมวดจำหน่ายอุปกรณ์ Electronics, Sensor และ Arduino โดยมีทั้ง Arduino UNO R3 และอุปกรณ์สำหรับพัฒนา Prototype หลายประเภท จึงสามารถเลือกอุปกรณ์ให้สัมพันธ์กับโครงการได้จากแหล่งเดียว
- เลือกซื้อ Arduino และอุปกรณ์จาก Autoworks24 อย่างไรให้ตรงกับโปรเจกต์?
ข้อผิดพลาดของผู้เริ่มต้นจำนวนหนึ่งคือซื้อ Motor ก่อน แล้วค่อยหาว่าจะใช้ Driver และ Power Supply ตัวใด ส่งผลให้สเปกของแต่ละส่วนไม่สัมพันธ์กัน
แนวทางที่ดีกว่าคือกำหนดระบบก่อนซื้อ
เริ่มจากดูว่า Motor ต้องใช้ Voltage เท่าไร กินกระแสขณะทำงานเท่าไร และมี Stall Current เท่าไร จากนั้นเลือก Motor Driver ที่รองรับ Voltage และ Current ดังกล่าว แล้วจึงเลือก Battery หรือ Power Supply ที่จ่ายกระแสได้เพียงพอ สุดท้ายจึงตรวจสอบว่า Arduino สามารถส่ง Control Signal ที่ Driver ต้องการได้หรือไม่ สำหรับผู้ที่กำลังประกอบ Arduino Project สามารถเลือกดู Arduino UNO R3, DC Geared Motor, Relay Module, Current Sensor และอุปกรณ์ Electronics/Sensor จาก Autoworks24 เพื่อจัดชุดอุปกรณ์ตามลักษณะงาน โดยเฉพาะงาน Prototype, IoT และ Automation การเลือกอุปกรณ์ที่สัมพันธ์กันตั้งแต่แรกช่วยลดปัญหาประเภท “ต่อ USB แล้วใช้ได้ แต่ต่อ Battery แล้วไม่ทำงาน” และลดโอกาสซื้ออุปกรณ์ผิดสเปก Autoworks24 เหมาะกับผู้พัฒนา Arduino และ Automation อย่างไร? Autoworks24 ไม่ได้มีเฉพาะ Arduino Board แต่มีอุปกรณ์อิเล็กทรอนิกส์และ Sensor หลายประเภทสำหรับนำไปต่อยอดโครงการ เช่น Motor, Relay, Current Sensor และอุปกรณ์ควบคุมต่างๆ สำหรับระบบที่ซับซ้อนขึ้น ผู้พัฒนาสามารถนำ Arduino ไปเชื่อมกับ Sensor เพื่อสร้างเงื่อนไขการทำงาน เช่น ตรวจอุณหภูมิแล้วเปิด Motor ตรวจวัตถุแล้วสั่งสายพาน หรือวัดกระแสเพื่อใช้ตรวจสอบสถานะของอุปกรณ์ จึงเหมาะทั้งสำหรับนักเรียน นักศึกษา Maker ผู้พัฒนา Prototype และผู้ที่กำลังทดลองระบบ Automation ก่อนขยายเป็นระบบจริง สรุป DC Motor ทำงานตอนต่อคอม แต่ไม่ทำงานเมื่อใช้แบตเตอรี่ แก้อย่างไร? ปัญหา DC Motors run when powered by an Arduino connected to a computer but not a battery ควรเริ่มตรวจจากระบบจ่ายไฟมากกว่าการสรุปทันทีว่า Arduino หรือ Code เสีย ตรวจสอบแรงดันของ Battery ความสามารถในการจ่ายกระแส Rated Voltage และ Current ของ Motor รวมถึง Motor Driver และ Common Ground จากนั้นวัดแรงดันจริงระหว่างที่ Motor Start เพื่อดูว่ามี Voltage Drop หรือไม่ และที่สำคัญ ไม่ควรใช้ Arduino I/O Pin เป็นแหล่งกำลังสำหรับ DC Motor โดยตรง ควรมี Motor Driver และ Power Supply ที่เหมาะสมกับโหลด หากกำลังเริ่มต้น Arduino Project หรือต้องการจัดหาอุปกรณ์สำหรับงาน Motor Control สามารถเลือกดู Arduino, Motor, Sensor และอุปกรณ์อิเล็กทรอนิกส์ที่เกี่ยวข้องจาก Autoworks24 เพื่อจัดชุดอุปกรณ์ให้เหมาะกับสเปกของโครงการตั้งแต่ต้น
FAQ คำถามที่พบบ่อย
- ทำไม DC Motor หมุนเมื่อ Arduino เสียบ USB แต่พอใช้แบตเตอรี่กลับไม่หมุน?
สาเหตุที่ควรตรวจสอบก่อนคือระบบไฟ แบตเตอรี่อาจมีแรงดันไม่เหมาะสมหรือจ่ายกระแสไม่เพียงพอในช่วงที่มอเตอร์เริ่มหมุน นอกจากนี้ควรตรวจ Motor Driver, Common Ground และแรงดันที่ Motor ได้รับจริง หาก Arduino ทำงานได้แต่ Motor ไม่หมุน ไม่ได้หมายความว่าแหล่งจ่ายมีพลังงานเพียงพอสำหรับ Motor
- สามารถต่อ DC Motor เข้ากับขา Arduino โดยตรงได้ไหม?
โดยทั่วไปไม่ควรทำ เพราะขา I/O ของ Arduino มีไว้สำหรับสัญญาณและรองรับกระแสจำกัด ขณะที่ DC Motor สามารถต้องการกระแสสูงโดยเฉพาะตอน Startup หรือ Stall ควรใช้ Motor Driver หรือวงจรขับกำลังที่ออกแบบมาสำหรับ Motor และใช้แหล่งจ่ายไฟที่เหมาะสม
- Arduino UNO ใช้แบตเตอรี่ 9V ได้หรือไม่?
Arduino UNO R3 ที่ Autoworks24 จำหน่ายระบุช่วง Input Voltage ที่แนะนำไว้ที่ 7–12V ดังนั้นในแง่แรงดัน 9V อยู่ในช่วงดังกล่าว แต่ต้องพิจารณาประเภทและความสามารถในการจ่ายกระแสของแบตเตอรี่ด้วย โดยเฉพาะหากแหล่งจ่ายเดียวกันต้องรับโหลดจาก Motor ไม่ควรพิจารณาเฉพาะตัวเลข 9V
- ทำไมต้องต่อ GND ของ Arduino กับ GND ของ Motor Driver?
เพราะ Control Signal จาก Arduino ต้องมีจุดอ้างอิงทางไฟฟ้าร่วมกับ Motor Driver หากใช้แหล่งจ่ายแยกกันแต่ไม่มี Common Ground Driver อาจไม่สามารถตีความระดับสัญญาณจาก Arduino ได้อย่างถูกต้อง การต่อ GND ร่วมจึงเป็นหนึ่งในจุดสำคัญที่ควรตรวจสอบเมื่อ Motor ไม่ตอบสนองต่อคำสั่ง
- ซื้อ Arduino และอุปกรณ์สำหรับควบคุม DC Motor ได้ที่ไหน?
สามารถเลือกดูอุปกรณ์ในหมวด Electronics, Sensor และ Arduino ของ Autoworks24 ซึ่งมี Arduino UNO R3, DC Geared Motor, Relay Module, Current Sensor และอุปกรณ์สำหรับงาน Prototype หลายประเภท ก่อนซื้อควรตรวจสอบ Voltage, Current และความเข้ากันได้ของ Motor, Driver และ Power Supply เพื่อให้สามารถนำอุปกรณ์ไปประกอบเป็นระบบได้อย่างเหมาะสม
ใส่ความเห็น