จากแบบจำลองดิจิทัลสู่ชิ้นงานจริง ด้วย FreeCAD

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


1. การสร้างแบบจำลอง 3 มิติแบบพาราเมตริก

ก่อนที่เราจะเริ่มการผลิตใดๆ สิ่งแรกที่ต้องมีคือพิมพ์เขียวดิจิทัลที่มีความแม่นยำสูง ในขั้นตอนนี้ เราจะใช้เทคนิคการออกแบบอันทรงพลังที่เรียกว่า “การออกแบบเชิงพาราเมตริก” (Parametric Design) เพื่อสร้างแบบจำลอง 3 มิติที่ยืดหยุ่นและปรับเปลี่ยนได้ง่าย

แนวคิดหลัก: การออกแบบพาราเมตริกคืออะไร?

แนวคิดหลักของการออกแบบเชิงพาราเมตริกคือการสร้างแบบจำลองโดยอ้างอิงกับตัวแปร (Variables) ที่เรากำหนดไว้ล่วงหน้า แทนที่จะกำหนดขนาดเป็นตัวเลขตายตัว เมื่อเราเปลี่ยนค่าของตัวแปร แบบจำลองทั้งหมดที่เชื่อมโยงกับตัวแปรนั้นจะปรับปรุงตัวเองโดยอัตโนมัติ

สำหรับโปรเจกต์สเตอร์จักรยานนี้ มีตัวแปรสำคัญ 2 ตัวคือ:

  • number_of_teeth (จำนวนฟัน): นี่คือตัวแปรหลักเพียงตัวเดียวที่เราต้องป้อนค่าด้วยตนเอง มันทำหน้าที่ควบคุมรูปทรงและขนาดโดยรวมทั้งหมดของสเตอร์จักรยาน
  • diameter_chain_ring (เส้นผ่านศูนย์กลางสเตอร์): ตัวแปรนี้เป็นค่าที่ถูกคำนวณโดยอัตโนมัติจาก number_of_teeth โดยใช้สูตรทางวิศวกรรมที่แม่นยำ ซึ่งอ้างอิงกับระยะพิทช์ (Pitch) มาตรฐานของโซ่จักรยานที่ 12.7 มม.

สรุปขั้นตอนการสร้างแบบจำลอง

  1. สร้างรูปทรงพื้นฐาน: เริ่มต้นด้วยการสร้างรูปทรงกระบอกง่ายๆ เพื่อกำหนดโครงสร้างหลักและความหนาของสเตอร์
  2. ออกแบบรูปทรงสำหรับร่องฟันสเตอร์ 1 ช่อง: ออกแบบรูปทรงของ “ช่องว่าง” หรือร่องสำหรับให้ลูกกลิ้งของโซ่จักรยานเข้ามาพอดีอย่างปราณีตเพียง 1 ช่อง
  3. ทำซ้ำด้วยเครื่องมือ Pattern: ใช้เครื่องมือ “Polar Pattern” เพื่อทำสำเนาร่องฟันสเตอร์ที่ออกแบบไว้รอบสเตอร์ทั้งหมดโดยอัตโนมัติ โดยอ้างอิงจากค่าของตัวแปร number_of_teeth
  4. เพิ่มรายละเอียด: ออกแบบรูตรงกลาง, รูสำหรับยึดน็อต, และช่องตกแต่งต่างๆ พร้อมเก็บรายละเอียดขั้นสุดท้าย เช่น การลบมุมโค้ง (fillets) และการลบมุมตัด (chamfers)
ประโยชน์สูงสุดของแนวทางนี้คือความยืดหยุ่น ลองนึกภาพว่าหากเราต้องการเปลี่ยนสเตอร์จาก 44 ซี่เป็น 50 ซี่ เราเพียงแค่เปลี่ยนค่าตัวแปร number_of_teeth จาก 44 เป็น 50 เท่านั้น แบบจำลอง 3 มิติทั้งหมดจะคำนวณและปรับปรุงรูปทรงใหม่ทั้งหมดให้เราโดยอัตโนมัติ

2. การเตรียมการสำหรับเครื่อง CNC

การมีแบบจำลอง 3 มิติที่สมบูรณ์นั้นยังไม่เพียงพอ ขั้นตอนต่อไปคือการเปลี่ยนไปสู่ส่วนงาน CAM (Computer-Aided Manufacturing) เพื่อเตรียมชุดคำสั่งสำหรับเครื่อง CNC ที่จะใช้กัดชิ้นงาน

การตั้งค่า: Job, Stock, และ Tools

ในการเตรียมงาน CAM เราต้องกำหนดองค์ประกอบพื้นฐาน 3 อย่างนี้ก่อน:

  • Job (จ็อบ): เปรียบเสมือนแฟ้มงานหลักที่รวบรวมการตั้งค่าและคำสั่งการผลิตทั้งหมดของโปรเจกต์นี้ไว้ในที่เดียว
  • Stock (สต็อก): คือการจำลอง “วัตถุดิบ” ที่เราจะใช้ ในที่นี้คือแผ่นอลูมิเนียมขนาด 200x200x4 มิลลิเมตร
  • Tools (เครื่องมือ): คือคลังเครื่องมือตัดดิจิทัลที่เครื่อง CNC จะใช้ ซึ่งสำหรับโปรเจกต์นี้เราต้องการเพียง 2 ดอกเท่านั้น:
    • ดอกกัด Endmill ขนาด 3.175 มม. — สำหรับการกัดงานส่วนใหญ่
    • ดอก Chamfer 90° — สำหรับการลบมุมโดยเฉพาะ

ความท้าทายของการกัดงานสองด้าน

เนื่องจากสเตอร์จักรยานมีรายละเอียดทั้งด้านหน้าและด้านหลัง เราจึงต้องเผชิญกับความท้าทายในการกัดชิ้นงานทั้งสองด้าน วิธีแก้คือ เราจะกัดงานด้านหนึ่งให้เสร็จก่อน จากนั้นจึงพลิกแผ่นวัตถุดิบกลับด้าน แล้วจึงเริ่มกัดอีกด้านหนึ่ง

สิ่งที่สำคัญที่สุดในขั้นตอนนี้คือการใช้ รูสำหรับกำหนดตำแหน่ง (Positioning Holes) ที่เจาะไว้ล่วงหน้าอย่างแม่นยำ รูเหล่านี้จะถูกใช้เพื่อยึดแผ่นอลูมิเนียมเข้ากับแท่นของเครื่อง CNC อย่างมั่นคง เพื่อให้แน่ใจว่าเมื่อพลิกชิ้นงานแล้ว ทุกอย่างจะยังคงอยู่ในตำแหน่งที่ถูกต้องสมบูรณ์


3. การสร้างเส้นทางเดินของเครื่องมือ

“Toolpath” หรือเส้นทางเดินของเครื่องมือ คือชุดคำสั่งดิจิทัลที่จะบอกเครื่อง CNC ว่าต้องเคลื่อนที่ดอกกัดไปที่ไหน, ด้วยความเร็วเท่าไหร่, และกัดลึกลงไปเท่าไหร่ ซึ่งเป็นหัวใจสำคัญของการผลิต

กล่องเครื่องมือสำหรับสร้าง Operation

Operation (คำสั่ง) หน้าที่หลัก
Profile (โพรไฟล์) ใช้สำหรับตัดตามแนวเส้นหรือขอบที่กำหนด คล้ายกับการใช้ที่ตัดคุกกี้ ใช้ในการเจาะรูและตัดชิ้นงานให้ออกจากแผ่นวัตถุดิบ
Pocket (พ็อกเก็ต) ใช้สำหรับกัดวัสดุทั้งหมดที่อยู่ “ข้างใน” ขอบเขตที่ปิดล้อม เพื่อสร้างเป็นช่องหรือโพรงที่มีพื้นเรียบ
3D Pocket (พ็อกเก็ต 3 มิติ) ใช้สำหรับกัดวัสดุออกจากรูปทรงที่ซับซ้อนและมีระดับความลึกที่แตกต่างกัน จำเป็นอย่างยิ่งสำหรับการสร้างรูยึดน็อตแบบมีบ่ารับ (Counterbore)

จำลองก่อนกัดจริง: การทดสอบเสมือนจริง

หนึ่งในเครื่องมือที่สำคัญที่สุดคือ CAM Simulator ซึ่งเปรียบเสมือนการ “ทดสอบเสมือนจริง” ที่จะแสดงภาพเคลื่อนไหวให้เราเห็นทีละขั้นตอนว่าวัสดุจะถูกกัดออกไปอย่างไรในทุกๆ คำสั่งที่เราสร้างขึ้น

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


4. บทสรุป: จากโค้ดสู่ชิ้นงาน

เราได้เห็นการเดินทางทั้งหมด ตั้งแต่การเริ่มต้นด้วยตัวแปรอัจฉริยะเพียงตัวเดียวในการออกแบบเชิงพาราเมตริก, ผ่านการตั้งค่าอย่างรอบคอบในสภาพแวดล้อมของ CAM, ไปจนถึงการสร้างเส้นทางเดินของเครื่องมือที่แม่นยำ และสิ้นสุดที่ชุดคำสั่งที่สมบูรณ์ซึ่งพร้อมจะถูกส่งไปยังเครื่อง CNC

นี่คือตัวอย่างที่ชัดเจนว่าการผลิตเชิงดิจิทัล (Digital Manufacturing) ได้เชื่อมโยงโลกแห่งความคิดสร้างสรรค์ในการออกแบบเข้ากับความเป็นจริงทางกายภาพได้อย่างไร้รอยต่อ

GRBLHAL : เวอร์ชันปรับปรุงของ GRBL

GRBLHAL เป็นเวอร์ชันที่ปรับปรุง และ ขยายความสามารถของ GRBL ซึ่งเป็นเฟิร์มแวร์ โอเพ่นซอร์สสำหรับควบคุมเครื่อง CNC โดย GRBLHAL ได้รับการพัฒนาเพื่อให้มีความยืดหยุ่นมากขึ้นในการรองรับฮาร์ดแวร์ที่หลากหลาย และ เพิ่มฟีเจอร์ใหม่ ๆ เพื่อตอบสนองความต้องการของผู้ใช้งานระดับสูง

คำสั่งพื้นฐานของ GRBLHAL

คำสั่งใน GRBLHAL ส่วนใหญ่จะคล้ายกับ GRBL แต่มีการเพิ่มเติมและปรับปรุงบางคำสั่งเพื่อรองรับฟีเจอร์ใหม่ ๆ ต่อไปนี้คือรายละเอียดของคำสั่งหลัก:

1. คำสั่งควบคุมการทำงาน (Real-time Commands)

  • ! : หยุดชั่วคราว (Feed Hold)
    หยุดการเคลื่อนที่ของเครื่องทันที แต่ยังคงเก็บตำแหน่งปัจจุบันไว้ เมื่อกดเริ่มใหม่ เครื่องจะกลับมาทำงานต่อจากตำแหน่งเดิม
  • ~ : เริ่มต่อ (Resume)
    ใช้เมื่อเครื่องอยู่ในสถานะ Feed Hold เพื่อเริ่มการทำงานต่อ
  • ? : สอบถามสถานะ (Status Report)
    แสดงข้อมูลสถานะปัจจุบัน เช่น ตำแหน่ง, สถานะเครื่อง, และโหมดการทำงาน
  • ^X : ยกเลิกงาน (Reset)
    ยกเลิกการทำงานทั้งหมดและรีเซ็ตระบบ

2. คำสั่ง G-code

  • G0/G1 : การเคลื่อนที่
    G0: เคลื่อนที่ด้วยความเร็วสูงสุด (Rapid Move)
    G1: เคลื่อนที่ด้วยความเร็วที่กำหนด (Linear Interpolation)
  • G2/G3 : การเคลื่อนที่โค้ง
    G2: เคลื่อนที่ตามแนวโค้งแบบตามเข็มนาฬิกา (Clockwise Arc)
    G3: เคลื่อนที่ตามแนวโค้งแบบทวนเข็มนาฬิกา (Counter-Clockwise Arc)
  • G4 : หน่วงเวลา (Dwell)
    ตัวอย่าง: G4 P1.5 (หน่วงเวลา 1.5 วินาที)

3. คำสั่ง M-code

  • M3/M4/M5 : การควบคุม Spindle
    M3: เปิด Spindle หมุนตามเข็มนาฬิกา
    M4: เปิด Spindle หมุนทวนเข็มนาฬิกา
    M5: ปิด Spindle
  • M7/M8/M9 : การควบคุม Coolant
    M7: เปิด Mist Coolant
    M8: เปิด Flood Coolant
    M9: ปิด Coolant

คำสั่งเฉพาะของ GRBLHAL

GRBLHAL เพิ่มคำสั่งใหม่ ๆ เพื่อรองรับฟีเจอร์ที่ขยายออกไป:

  • $# : แสดงตำแหน่งงานและออฟเซ็ต

    • แสดงค่าพิกัดปัจจุบันและออฟเซ็ตของ Work Coordinate Systems
  • $$ : แสดงการตั้งค่าปัจจุบัน

    • แสดงค่าพารามิเตอร์ทั้งหมด เช่น ความเร็วสูงสุด, Acceleration, Step/mm เป็นต้น
  • $x=val : แก้ไขการตั้งค่า

    • ตัวอย่าง: $110=3000 (ตั้งค่าความเร็วสูงสุดของแกน X เป็น 3000 mm/min)
  • $H : Homing Cycle

    • เริ่มกระบวนการหา Home Position
  • $I : แสดงข้อมูลระบบ

    • แสดงข้อมูลเกี่ยวกับเวอร์ชันและคุณสมบัติของ GRBLHAL
  • $N : แสดง/จัดการ Startup Blocks

    • ใช้สำหรับตั้งค่าคำสั่งที่จะรันทุกครั้งเมื่อเปิดเครื่อง
  • $C : เช็ค Connection

    • ตรวจสอบการเชื่อมต่อกับเครื่อง
  • $X : ปลดล็อกเครื่อง

    • ใช้เมื่อเครื่องถูก Lock จาก Alarm State

สรุป

GRBLHAL เป็นเวอร์ชันที่ปรับปรุงจาก GRBL โดยเพิ่มความสามารถในการรองรับฮาร์ดแวร์ที่หลากหลาย และเพิ่มคำสั่งใหม่ ๆ เพื่อตอบสนองความต้องการของผู้ใช้งานระดับสูง คำสั่งพื้นฐานยังคงเหมือน GRBL แต่มีการเพิ่มเติมคำสั่งเฉพาะและฟีเจอร์ใหม่ เช่น การจัดการ Startup Blocks, การตั้งค่าพารามิเตอร์ที่ละเอียดขึ้น และการรองรับฟังก์ชันเสริมอื่น ๆ

หากต้องการศึกษาเพิ่มเติม แนะนำให้ดูเอกสารประกอบของ GRBLHAL หรือทดลองใช้งานผ่านซอฟต์แวร์ควบคุม CNC เช่น Universal G-code Sender (UGS) หรือ CNCjs
หมายเหตุ: การใช้งาน GRBLHAL ควรศึกษาคู่มือและทดสอบการทำงานบนเครื่องจริงอย่างระมัดระวังเพื่อป้องกันความเสียหายต่อเครื่องหรือชิ้นงาน

เครื่อง CNC สำหรับตัดวัสดุเส้นใย

1. ความสำคัญของการพัฒนา CNC สำหรับวัสดุเส้นใย

การตัดวัสดุที่ไม่ใช่วัสดุแข็ง เช่น วัสดุเส้นใย (Fibrous Materials) ต้องอาศัยเทคนิคเฉพาะที่แตกต่างจากการตัดโลหะหรือไม้ เนื่องจากวัสดุเหล่านี้มักมีโครงสร้างที่ยืดหยุ่น และมีคุณสมบัติเชิงกลที่แตกต่างกันไป เช่น ความอ่อนตัว ความยืดหยุ่น และการฉีกขาดง่าย ดังนั้น การออกแบบเครื่อง CNC ที่เหมาะสมกับวัสดุประเภทนี้จึงต้องมีการพัฒนาเทคโนโลยีที่รองรับลักษณะเฉพาะของวัสดุ

2. ความท้าทายในการพัฒนาเครื่อง CNC สำหรับตัดวัสดุเส้นใย

การออกแบบ CNC สำหรับการตัดวัสดุเส้นใยจำเป็นต้องคำนึงถึงปัจจัยหลายอย่าง เช่น :

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

3. การออกแบบที่เป็นเอกลักษณ์ของเครื่อง CNC สำหรับวัสดุเส้นใย

ในฐานะผู้ผลิต CNC ตามความต้องการของลูกค้า เราได้พัฒนาโซลูชันเฉพาะสำหรับวัสดุเส้นใย โดยมีคุณสมบัติหลักดังนี้ :

  • โครงสร้างที่แข็งแรงแต่ลดแรงสั่นสะเทือน เพื่อให้ตัดวัสดุได้แม่นยำ
  • ระบบใบมีดตัดแบบพิเศษ ที่ลดแรงเสียดทานและการฉีกขาดของวัสดุ
  • การควบคุมแรงกดของหัวตัดแบบไดนามิก เพื่อรองรับวัสดุที่มีความหนาแน่นแตกต่างกัน
  • ซอฟต์แวร์ที่สามารถปรับแต่งค่าการตัดอัตโนมัติ ช่วยลดข้อผิดพลาดและเพิ่มประสิทธิภาพการผลิต

4. การแก้ปัญหาให้ลูกค้าในอุตสาหกรรมต่างๆ

เราไม่เพียงแต่ผลิตเครื่อง CNC ตามความต้องการ แต่ยังช่วยแก้ปัญหาการผลิตให้กับลูกค้าในหลากหลายอุตสาหกรรม เช่น :

  • อุตสาหกรรมบรรจุภัณฑ์: การตัดวัสดุเส้นใยสำหรับบรรจุภัณฑ์ที่เป็นมิตรต่อสิ่งแวดล้อม
  • อุตสาหกรรมสิ่งทอ: การตัดผ้าและวัสดุเส้นใยสำหรับการผลิตเสื้อผ้าและอุปกรณ์ตกแต่ง
  • อุตสาหกรรมยานยนต์: การตัดวัสดุฉนวนหรือวัสดุซับเสียงที่ใช้ในรถยนต์
  • อุตสาหกรรมเฟอร์นิเจอร์: การตัดวัสดุบุรองเพื่อใช้กับเฟอร์นิเจอร์แบบกำหนดเอง

5. ตัวอย่างเครื่อง CNC ที่เราพัฒนา

จากภาพที่แสดงด้านบน เป็นตัวอย่างเครื่อง CNC ที่ได้รับการออกแบบให้สามารถตัดวัสดุเส้นใยได้อย่างแม่นยำ โดยมีฟังก์ชันที่รองรับการผลิตชิ้นงานที่มีความซับซ้อนสูง นอกจากนี้ เราได้พัฒนาให้สามารถรองรับคำสั่งจากซอฟต์แวร์เฉพาะทาง เพื่อให้สามารถทำงานได้ตามข้อกำหนดของลูกค้า

6. บริการของเรา

  • ออกแบบและผลิตเครื่อง CNC ตามสเปคที่ลูกค้าต้องการ
  • ให้คำปรึกษาด้านการเลือกวัสดุและเทคนิคการตัด
  • พัฒนา และ ปรับแต่งซอฟต์แวร์สำหรับกระบวนการผลิตของลูกค้า
  • บริการติดตั้งและบำรุงรักษาเครื่องจักร

7. สรุป

การพัฒนาเครื่อง CNC สำหรับวัสดุเส้นใยต้องอาศัยความรู้ด้านวิศวกรรม ฟิสิกส์ และโปรแกรมมิ่ง เพื่อให้ได้โซลูชันที่เหมาะสมที่สุด ทีมงานของเราพร้อมช่วยให้ลูกค้าได้รับเครื่องจักรที่ตอบโจทย์ทุกความต้องการ ทั้งด้านคุณภาพ ความแม่นยำ และประสิทธิภาพการผลิต

การคำนวณค่าความเร็วรอบ (Spindle Speed), Feed Rate และ Step Down สำหรับการกัดด้วยเครื่อง CNC เราจำเป็นต้องพิจารณาปัจจัยหลายอย่าง เช่น ชนิดของวัสดุที่ใช้, ขนาดของดอกกัด, วัสดุของดอกกัด, และค่าพารามิเตอร์อื่นๆ

สูตรพื้นฐานที่ใช้ในการคำนวณ:

  1. Spindle Speed (RPM)

    โดยที่:

    • : Cutting Speed (เมตร/นาที) ขึ้นอยู่กับชนิดของวัสดุและดอกกัด
    • : เส้นผ่านศูนย์กลางของดอกกัด (มิลลิเมตร)
  2. Feed Rate (F)

    โดยที่:

    • : Feed per Tooth (มิลลิเมตร/ฟัน)
    • : จำนวนฟันของดอกกัด
  3. Step Down (Axial Depth of Cut)
    ค่า Step Down จะขึ้นอยู่กับความแข็งแรงของดอกกัดและชนิดของวัสดุ โดยทั่วไปจะกำหนดเป็น % ของเส้นผ่านศูนย์กลางของดอกกัด เช่น:

    • สำหรับงานหยาบ: 50-70% ของเส้นผ่านศูนย์กลาง
    • สำหรับงานละเอียด: 10-30% ของเส้นผ่านศูนย์กลาง
import math

def calculate_spindle_speed(vc, diameter):
    """
    Calculate spindle speed (RPM) based on cutting speed and tool diameter.
    :param vc: Cutting speed in meters per minute (m/min)
    :param diameter: Tool diameter in millimeters (mm)
    :return: Spindle speed in revolutions per minute (RPM)
    """
    return (vc * 1000) / (math.pi * diameter)

def calculate_feed_rate(rpm, fz, num_teeth):
    """
    Calculate feed rate (F) based on RPM, feed per tooth, and number of teeth.
    :param rpm: Spindle speed in revolutions per minute (RPM)
    :param fz: Feed per tooth in millimeters per tooth (mm/tooth)
    :param num_teeth: Number of teeth (Z)
    :return: Feed rate in millimeters per minute (mm/min)
    """
    return rpm * fz * num_teeth

def calculate_step_down(diameter, material_type):
    """
    Calculate step down (axial depth of cut) based on tool diameter and material type.
    :param diameter: Tool diameter in millimeters (mm)
    :param material_type: Type of material ('rough' or 'finish')
    :return: Step down in millimeters (mm)
    """
    if material_type == "rough":
        return diameter * 0.6  # 60% of diameter for roughing
    elif material_type == "finish":
        return diameter * 0.2  # 20% of diameter for finishing
    else:
        raise ValueError("Invalid material type. Use 'rough' or 'finish'.")

# Example usage:
if __name__ == "__main__":
    # Input parameters
    cutting_speed = 150  # Cutting speed in m/min (example for aluminum)
    tool_diameter = 10   # Tool diameter in mm
    feed_per_tooth = 0.1 # Feed per tooth in mm/tooth
    num_teeth = 4        # Number of teeth on the tool
    material_type = "rough"  # Material type ('rough' or 'finish')

    # Calculations
    rpm = calculate_spindle_speed(cutting_speed, tool_diameter)
    feed_rate = calculate_feed_rate(rpm, feed_per_tooth, num_teeth)
    step_down = calculate_step_down(tool_diameter, material_type)

    # Output results
    print(f"Spindle Speed (RPM): {rpm:.2f}")
    print(f"Feed Rate (mm/min): {feed_rate:.2f}")
    print(f"Step Down (mm): {step_down:.2f}")

เครื่องมือคำนวณพารามิเตอร์ CNC