การควบคุมเครื่องกัด CNC ด้วย Arduino โดยใช้ ODrive Brushless DC Motors
ในการพัฒนาโปรเจกต์ Power Unit สำหรับรถยนต์ MG F ของผม มีหลายขั้นตอนที่ต้องใช้การกลึงชิ้นส่วนโลหะ เดิมทีผมใช้เครื่องกัดขนาดเล็กสำหรับงานอดิเรกที่บ้าน โดยการควบคุมด้วยมือในช่วงเวลาว่างหลังเลิกงาน อย่างไรก็ตาม การควบคุมเครื่องด้วยมือเป็นเวลาหลายชั่วโมงติดต่อกันทำให้ทั้งแขนและขาของผมอ่อนล้า ดังนั้น ผมจึงตัดสินใจอัปเกรดเครื่องมือนี้ให้เป็นระบบ CNC (Computer Numerical Control) เพื่อเพิ่มทั้งความแม่นยำและความสะดวกในการทำงาน
แรงบันดาลใจในการเลือกระบบขับเคลื่อนนี้มาจากโปรเจกต์ OpenDog ของ James Bruton ซึ่งทำให้ผมรู้จัก O-Drive ซึ่งเป็นบอร์ดควบคุม Brushless DC Motor ประสิทธิภาพสูง แตกต่างจากเครื่อง CNC ทั่วไปที่มักใช้ Stepper Motors, O-Drive ช่วยให้เราสามารถใช้ BLDC motors ที่ให้แรงบิดสูง, ช่วงความเร็วที่กว้าง และทำงานได้อย่างสมบูรณ์ในระบบ closed-loop
สำหรับการออกแบบและผลิต ผมเลือกใช้ Alibre Design สำหรับ CAD (Computer-Aided Design) ในการสร้างโมเดล 3D ของชิ้นส่วนต่างๆ และใช้ Fusion 360 สำหรับ CAM (Computer-Aided Manufacturing) ในการสร้าง G-Code สำหรับกำหนดเส้นทางเดินของเครื่องมือ

Hardware Architecture
คอนโทรลเลอร์หลักของโปรเจกต์นี้คือ Arduino Mega ซึ่งรับคำสั่งและประมวลผลเพื่อส่งไปยัง O-Drive ผ่านการสื่อสารแบบ Serial ส่วนประกอบหลักที่ผมเลือกใช้ได้แก่:
- Brushless DC Motors: ให้กำลังที่เหนือกว่าเมื่อเทียบกับ Stepper motors ขนาดเดียวกัน ลดการสูญเสีย Step เนื่องจากทำงานร่วมกับ Encoder
- AMT 102 Rotary Encoder: นี่คือ capacitive encoder ที่ทนทานต่อฝุ่นและเศษโลหะในสภาพแวดล้อมทางอุตสาหกรรมได้สูง ให้ความละเอียดที่แม่นยำสำหรับการระบุตำแหน่ง Spindle
- HTD Drive Belts & Pulleys: สายพานไทม์มิ่งแบบ High Torque Drive (HTD) ใช้ในการส่งกำลังจาก Motor ไปยังแกนของเครื่องจักร เพื่อให้การเคลื่อนไหวราบรื่นและลดการลื่นไถล

ภาพด้านล่างแสดงโครงสร้างแบบ exploded view ซึ่งเผยให้เห็นการจัดเรียงของส่วนประกอบต่างๆ เช่น motor mounts, bearing blocks และ mechanical connections ที่ผมออกแบบมาเพื่อให้เข้ากันได้กับโครงสร้างเดิมของเครื่อง Axminster Sieg X1 ซึ่งผมใช้งานมานานกว่า 10 ปี

System Testing and Joypad Control
ในช่วงเริ่มต้นของการทดสอบ ผมได้ติดตั้งระบบบนแกน Y ก่อน เพื่อทดสอบ Sketch และตรวจสอบความเสถียรของระบบ ผมดัดแปลง Joypad จากเฮลิคอปเตอร์ RC เก่ามาใช้เป็นตัวควบคุมแบบ Manual วิธีนี้ช่วยให้ผมสามารถเคลื่อนที่แกนต่างๆ ได้อย่างอิสระเหมือนกับการใช้ joystick ก่อนที่จะเปลี่ยนไปใช้การควบคุมด้วยคอมพิวเตอร์อย่างเต็มรูปแบบ
ผลลัพธ์จากการทดสอบแกน Y ด้วย Joypad นั้นน่าประทับใจมาก ผมสามารถกลึงชิ้นงานชิ้นแรกได้สำเร็จโดยใช้ระบบขับเคลื่อนใหม่นี้
Software Logic & Backlash Compensation
หัวใจสำคัญของโค้ดควบคุมคือการจัดการสัญญาณจาก Joypad (Analog Input) เพื่อแปลงเป็นคำสั่ง Velocity หรือ Position สำหรับ O-Drive ในวิดีโอสาธิต ผมได้อธิบายวิธีการตั้งค่าและอ่านค่าจาก Joypad ผ่าน Arduino เพื่อให้การควบคุมเป็นไปอย่างราบรื่นและตอบสนองได้ดี
นอกจากนี้ ปัญหาสำคัญของเครื่องกัดราคาประหยัดคือ Backlash ซึ่งเกิดจากช่องว่างระหว่าง Lead screw threads กับ Nut เมื่อ Motor เปลี่ยนทิศทาง แกนจะไม่เคลื่อนที่จนกว่าช่องว่างนั้นจะถูกเติมเต็ม ดังนั้น โค้ดของผมจึงมีฟังก์ชัน Backlash Compensation โดยเมื่อมีการเปลี่ยนทิศทาง ระบบจะสั่งให้ Motor หมุนเพิ่มระยะทางเท่ากับค่า backlash ที่วัดได้ ก่อนที่จะเริ่มนับระยะการเคลื่อนที่จริง วิธีนี้ช่วยให้ชิ้นส่วนที่กลึงมีความแม่นยำตามมิติมากที่สุดเท่าที่จะเป็นไปได้
Next Steps for the Project
ในอนาคตอันใกล้ ผมวางแผนที่จะเขียน Sketch โดยเฉพาะสำหรับการประมวลผล G-Code เพื่อให้เครื่องสามารถทำงานได้โดยอัตโนมัติจากไฟล์ที่ส่งออก (exported) จาก Fusion 360 ผมจะแบ่งปันไฟล์ CAD ทั้งหมด, โค้ดโปรแกรม และขั้นตอนการติดตั้งโดยละเอียดบนเว็บไซต์ส่วนตัวและ GitHub ของผม เพื่อให้ผู้ที่สนใจสามารถนำไปพัฒนาต่อได้
คุณสามารถติดตามความคืบหน้าเพิ่มเติมได้ที่นี่:
ผมหวังว่าโปรเจกต์นี้จะเป็นแรงบันดาลใจให้กับวิศวกรและ makers ทุกคน หากคุณมีคำถามหรือข้อเสนอแนะเกี่ยวกับส่วนใดส่วนหนึ่งของระบบควบคุมหรือกลไก โปรดสอบถามได้ตลอดเวลา!