โปรเจกต์ สร้าง CNC Plotter Machine แบบ 3D Printed อย่างง่าย
machine นี้ประกอบด้วย linear rails สองตัว และ Nema 17 stepper motors สองตัว สำหรับ X และ Y axes
machine นี้ประกอบด้วย linear rails สองตัว และ Nema 17 stepper motors สองตัว สำหรับ X และ Y axes
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
Project Supporter Team
โพสต์โดย
สวัสดีครับเพื่อนๆ ยังจำเครื่อง Mini CNC Plotter machine ที่ใช้ Hobby Stepper Motor และชิ้นส่วนกลไก 3D ไม่กี่ชิ้นได้ไหมครับ ตอนนี้มาพบกับรุ่นที่ใหญ่กว่าของมันกันครับ เครื่องใหม่นี้ประกอบด้วย Linear Rail สองตัว และ Stepper Motor Nema 17 สองตัวสำหรับแกน X และ Y นอกจากนี้ยังใช้ Mini Servo Motor สำหรับแกน Z เพื่อยกปากกาขึ้นลง มีการใช้ล้อพร้อม Mini Bearing เพื่อรองรับ Linear Rail ในแกน Y ส่วนในด้านวงจร ผมใช้แผ่น PCB พื้นฐาน Atmega ที่ผมออกแบบเอง ซึ่งสามารถควบคุมได้ทั้ง 3 แกน, Limit Switch 3 ตัว และ Servo Motor และแน่นอนว่าชิ้นส่วนกลไกทั้งหมดประกอบเข้าด้วยกันโดยใช้ชิ้นส่วนที่ออกแบบมาสำหรับ 3D Print เรามาเริ่มโปรเจกต์นี้ด้วยการประกอบชิ้นส่วน 3D และ Hardware ทั้งหมดไปทีละขั้นตอนกันครับ

ก่อนอื่น มาตรวจสอบการออกแบบของเครื่อง CNC นี้กันครับ ส่วนประกอบหลักสองส่วนคือ MGN15H Linear Rail พร้อมกับ Sliding Block การเคลื่อนที่ของแกน X และ Y ทำงานผ่าน GT2 Belt สองเส้นและ GT2 Pulley ส่วนแกน Z เรามีการเคลื่อนที่แบบไป-กลับอย่างง่าย โดยส่วนที่เคลื่อนที่ได้จะเลื่อนขึ้นและลงผ่าน Linear Rod ขนาด 6mm สองแท่งและสปริงที่เหมาะสม โดยมี Hobby Servo ขนาดเล็กเป็นตัวส่งกำลัง มีการใช้ Limit Switch สำหรับแต่ละแกนเพื่อทำ Homing และเพื่อความปลอดภัยในการเคลื่อนที่ ไฟล์ 3D Model ได้แนบไว้ให้แล้ว โดยรุ่นที่ต้องพิมพ์สองชิ้นจะมีเครื่องหมาย ‘2x’ กำกับไว้
นี่คือรายการอุปกรณ์ที่จำเป็นสำหรับการประกอบ ส่วนรายการอุปกรณ์ Electronic สามารถดูได้ในส่วนของ Circuit Diagram ในบทความนี้ครับ

เราสามารถเริ่มขั้นตอนแรกของการประกอบเครื่องได้เลยครับ ยึดแผ่นฐาน (Base plate) 2 แผ่นสำหรับแกน X และตัวยึด Linear Rail (Bracket) 2 ตัวเข้าด้วยกันโดยใช้ M3 Bolt เมื่อเตรียมทั้งสองด้านเสร็จแล้ว ให้สอด X-axis Linear Rail เข้าไปใน Bracket ทั้งสองด้านแล้วยึดให้แน่นด้วย M5 Bolt ตัว Linear Rail รุ่น MGN15H มีจำหน่ายหลายรูปแบบในบางตลาด ตามชื่อรุ่นคือความกว้างของทุกประเภทจะเป็นมาตรฐาน 15mm แต่บางรุ่นอาจมีความสูง ความกว้างของรู และระยะห่างระหว่างรูที่แตกต่างกัน ในกรณีนี้ คุณสมบัติของ Linear Rail ที่ผมใช้คือ:
โดยสรุปคือ Linear Rail บางตัวอาจแตกต่างกัน ดังนั้นคุณอาจต้องเจาะชิ้นส่วน 3D Bracket ด้วยสว่านตาม ‘Hole Pitch (P)’ หรืออาจต้องแก้ไข 3D Model ใหม่ ส่วนความแตกต่างอื่นๆ ในด้านมิติไม่น่าจะมีปัญหาครับ



ตอนนี้มาถึงการประกอบ Y-axis Linear Rail ครับ แกน Y จะต้องวิ่งอยู่เหนือ Linear Block ของแกน X และใช้ชิ้นส่วน 3D ที่เรียกว่า Mounting plate ในการเชื่อมต่อทั้งสองแกนเข้าด้วยกัน ขั้นแรกเราสามารถติดตั้ง Stepper Motor NEMA 17 สองตัว โดยตัวหนึ่งติดตั้งที่ด้านบนของแผ่นเพลทและอีกตัวอยู่ที่ด้านล่างด้วย M3 Bolt จากนั้นยึด M5 Bolt และ Nut สองชุดเข้ากับแผ่นเพลทเพื่อติดตั้ง GT2 Pulley เข้าที่ Idler Pulley สองตัวที่นี่ใช้เพื่อให้ GT2 Belt ของแกน X และ Stepper motor pulley ทำงานร่วมกันได้ แนะนำให้เฟืองของ Stepper motor และ Idler Pulley อยู่ในระนาบเดียวกัน ผมใช้ Nut หลายตัวเพื่อจัดตำแหน่ง Idler Pulley ให้ตรงกัน
ต่อไป ผมวาง Y-axis Linear Rail ลงบนแผ่นเพลทและยึดด้วย M5 Bolt สองตัว ระยะห่างของรู Linear Rail ในแกน X ก็ใช้กับแกน Y เช่นกัน หากความกว้างและระยะห่างของรูไม่ตรงกัน คุณสามารถเจาะรูใหม่ด้วยสว่านได้ หลังจากติดตั้ง Y-axis Linear Rail แล้ว ทั้งสองแกนจะถูกเชื่อมต่อเข้าด้วยกันโดยยึด Mounting plate เข้ากับ X-axis Linear Block โดยใช้ M4 Bolt สี่ตัว
เมื่อเครื่องเริ่มเป็นรูปเป็นร่างแล้ว เราจะเพิ่ม Pulley ไปที่อีกด้านหนึ่งของ Y-axis Linear Rail ซึ่งเป็นด้านที่ปล่อยอิสระ Pulley ตัวนี้จะช่วยให้สามารถติดตั้งสายพานสำหรับแกน Y แบบวนรอบได้ คุณสามารถเลือก Pulley นี้เป็นแบบมีฟันหรือ Idler Pulley ก็ได้ ผมเลือกใช้แบบมีฟัน สำหรับการประกอบ ผมติดตั้งชิ้นส่วน 3D ที่ชื่อ ‘Y-axis Pulley’ เข้ากับ Linear Rail ด้วย M3 Bolt นอกจากนี้ผมยังออกแบบชิ้นส่วน Support เนื่องจากความยาวของ Y-axis Linear Rail และน้ำหนักของชุดยกปากกา ด้วยวิธีนี้ผมจึงแก้ปัญหาอาการแกว่ง (Wobble) ของแกนนี้ได้ ผมยังออกแบบล้อพร้อม Bearing เพื่อให้ชิ้นส่วน Support เคลื่อนที่ได้อย่างราบรื่น ผมยึดล้อพร้อม Bearing เข้ากับชิ้นส่วน Support ด้วย M5 Bolt และยึดชิ้นส่วน Support เข้ากับชิ้นส่วน Pulley ด้วย M3 Bolt ตอนนี้ Linear Block ของแกน Y ก็สามารถเคลื่อนที่ไปยังตำแหน่งใดก็ได้ในพื้นที่ทำงานแล้วครับ


ตอนนี้ก่อนจะไปถึงชุดยกปากกา มาประกอบสายพานแกน X กันก่อนครับ สายพานแกน X จะถูกคล้องผ่าน Stepper motor pulley และ Idler Pulley เพื่อให้เกิดความตึง มี Connector เชื่อมต่อที่ปลายแต่ละด้านของสายพาน และยึด Connector เหล่านี้เข้ากับแผ่นฐานด้านข้างด้วย M3 Bolt หากคุณต้องการความตึงมากขึ้น สามารถใช้ Tension spring ช่วยได้
ตอนนี้เราสามารถดำเนินการประกอบส่วนชุดยกปากกาได้แล้ว กลไกนี้ประกอบด้วย 3D Model สองส่วน; ส่วนหนึ่งสำหรับยึดเข้ากับ Y axis Linear Block และอีกส่วนหนึ่งสำหรับเคลื่อนยึดปากกาขึ้นและลง ขั้นแรกผมตั้งค่า Servo Motor ไปที่มุม 180 องศา และติดตั้งเข้ากับส่วนที่ยึดอยู่กับที่โดยใช้สกรูที่มาพร้อมกับ Servo Motor จากนั้นผมวางส่วนเคลื่อนที่ของตัวยึดปากกาพร้อมกับสปริงสองตัวและ Rod ขนาด 6 mm สองแท่งเข้ากับส่วนที่ยึดอยู่กับที่ เมื่อ Servo Motor อยู่ที่มุม 180 องศา ปากกาจะอยู่ในตำแหน่งลง และเมื่อ Servo Motor อยู่ที่มุม 150 องศา ปากกาจะอยู่ในตำแหน่งขึ้น สปริงจะทำหน้าที่ให้แรงกดกลไกปากกาลงด้านล่าง
หลังจากประกอบชุดยกปากกาเข้ากับ Y axis Linear Block โดยใช้ M4 Bolt แล้ว เราสามารถดำเนินการเชื่อมต่อสายพานแกน Y ได้เลย เชื่อมต่อ Connector เข้ากับปลายทั้งสองด้านของสายพาน จากนั้นยึดสายพานเข้ากับชุดยกปากกาโดยใช้ M3 Bolt โดยคล้องสายพานผ่าน Stepper motor pulley และปลายอีกด้านของ Linear Rail คุณสามารถใช้ช่องสไลด์สำหรับ Bolt เพื่อปรับความตึงของสายพานในขณะที่ยึดได้ และสามารถเพิ่มความตึงได้โดยการใส่ Tension spring
จริงๆ แล้วนี่คือทั้งหมดในส่วนของ Hardware สุดท้ายผมได้ติดตั้ง Limit Switch สำหรับแกน X และ Y ในตำแหน่งต่างๆ โดยใช้ 2M Bolt ครับ


คุณสามารถเลือกใช้บอร์ด Arduino UNO และ CNC shield ในส่วนของวงจรได้ แต่ผมเลือกออกแบบ PCB ที่รวมส่วนประกอบทั้งหมดเข้าด้วยกัน ผมใช้บริการผลิตแผ่นวงจรจาก PCBWay คุณสามารถเลือกใช้ PCBWay สำหรับ PCB คุณภาพสูงในราคาประหยัด คุณสามารถเข้าถึงรายละเอียดและไฟล์ต่างๆ เกี่ยวกับวงจรได้ฟรีจาก https://www.pcbway.com/project/shareproject/Build_a_simple_3D_printed_CNC_plotter_machine_dfd8b2d7.html
บนบอร์ดจะมีเพียงชิปสื่อสาร CH340 USB เท่านั้นที่เป็นแบบ SMD คุณอาจต้องระมัดระวังเล็กน้อยในขณะบัดกรี การสัมผัสกันระหว่างขาชิปอาจทำให้เกิดไฟฟ้าลัดวงจรได้ ส่วนประกอบอื่นๆ ทั้งหมดบัดกรีได้ง่าย หากคุณไม่มีประสบการณ์ในการบัดกรี คุณสามารถสั่งประกอบบอร์ดจาก PCBWay ได้เลย เพียงแค่เลือกตัวเลือก ‘PCB+Assembly’ ในหน้าสั่งซื้อ PCB ครับ
Note: วงจรนี้อยู่ในโหมด 1/16 micro-stepping นั่นหมายความว่า ในโหมด Full-step มอเตอร์ 17HS4401 Nema 17 จะหมุน 1.8° ต่อ Step หรือ 200 Step ต่อการหมุนหนึ่งรอบ (360° / 1.8° = 200 Step) เมื่อใช้ 1/16 Microstepping: 200 full steps × 16 = 3200 micro-steps/revolution
แผ่นวงจรนี้ใช้พื้นฐาน Atmega328P และให้การควบคุม 3 แกน, Limit Switch 3 ตัว และ Servo Motor โปรเจกต์นี้ประกอบด้วย Stepper motor 2 แกน ซึ่งเพียงพอต่อการติดตั้ง Stepper motor driver A4988 มาตรฐาน 2 ตัว จาก Datasheet ของ Stepper Motor ที่ใช้ ควรตั้งค่ากระแสไฟที่ต้องการด้วยสกรูปรับกระแสบน Driver ในขณะวัดค่า คุณต้องจ่ายไฟ 5 โวลต์ให้กับบอร์ดผ่าน USB
ถ้าบอร์ดพร้อมแล้ว มาทำการเชื่อมต่อกันครับ เชื่อมต่อแกน X, แกน Y และ Servo Motor จากนั้นเชื่อมต่อ Limit Switch สองตัว สุดท้ายเชื่อมต่อแหล่งจ่ายไฟ 12 โวลต์ ประมาณ 3 แอมป์ ตอนนี้เรามาต่อกันที่ส่วนของ Software ครับ

ขั้นแรก เราต้องเพิ่มและใช้ Library ที่ชื่อว่า ‘grbl-mi’ ซึ่งเป็นรุ่นเฉพาะสำหรับ Servo Motor คุณสามารถเข้าถึง Library ได้จากลิงก์ GitHub นี้ - https://github.com/DIY-Machines/CNC-DrawingMachine

หลังจากติดตั้ง Library เสร็จเรียบร้อยแล้ว ให้หา grbl-mi จากหัวข้อ Examples และ Upload Code grblUpload ลงในบอร์ด หลังจาก Upload Code ลงบอร์ดแล้ว ให้เปิด Serial monitor เลือก Baud rate เป็น 115200 จากนั้นป้อนคำสั่ง $$ เพื่อแสดงรายการ Parameter ของ GRBL ซึ่ง Parameter ที่แสดงจะเป็นค่าเฉพาะสำหรับเครื่องนี้ แต่ไม่ต้องกังวลครับ Parameter หลายตัวเป็นค่ามาตรฐานและมีคำอธิบายสั้นๆ กำกับไว้ จุดสำคัญที่นี่คือต้องแน่ใจว่าคุณใส่ค่าที่ถูกต้องสำหรับ ‘stepper motor steps in millimeters’ และ ‘device dimensions’

ข้อมูลสั้นๆ เกี่ยวกับ Step:
17HS4401 Nema 17 หมุน 1.8° ต่อ Step คือ 200 Step ต่อรอบ (360° / 1.8° = 200 Step)
1/16 Microstepping: 200 full steps × 16 = 3200 micro-steps/revolution
แต่ละฟันของสายพาน GT2 ที่ใช้จะมีระยะห่าง 2 mm (tooth pitch คือ 2 mm)
เมื่อใช้ GT2 pulley ที่มี 20 ฟัน หมายความว่าเมื่อ Pulley หมุนครบหนึ่งรอบ สายพานจะเคลื่อนที่ไป 20 ฟัน x 2 mm/ฟัน = 40 mm
ในกรณีนี้ ผมได้ตั้งค่าไว้ที่ 80 steps/mm ซึ่งหมายความว่าสำหรับการเคลื่อนที่ 1.0 mm มอเตอร์ต้องก้าวไป 80 Step ซึ่งจะทำให้ได้การเคลื่อนที่ 1 mm พอดี
GRBL Parameters:
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=0 (dir port invert mask:00000000)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=2 (status report mask:00000010)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=1 (hard limits, bool)
$22=1 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=750.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=5.000 (homing pull-off, mm)
$100=80.000 (x, step/mm)
$101=80.000 (y, step/mm)
$102=250.000 (z, step/mm)
$110=4000.000 (x max rate, mm/min)
$111=4000.000 (y max rate, mm/min)
$112=4000.000 (z max rate, mm/min)
$120=30.000 (x accel, mm/sec^2)
$121=30.000 (y accel, mm/sec^2)
$122=30.000 (z accel, mm/sec^2)
$130=300.000 (x max travel, mm)
$131=250.000 (y max travel, mm)
$132=200.000 (z max travel, mm)











หลังจาก Upload Code ลงบอร์ดแล้ว ให้ดาวน์โหลดและติดตั้ง Software Universal G-Code Sender (https://winder.github.io/ugs_website/) สำหรับการควบคุมเครื่อง คุณสามารถคิดว่า Software นี้เป็น Interface สำหรับควบคุมเครื่องจักรได้เลยครับ
หลังจากเปิด Software ให้เลือก USB Port ที่บอร์ดเชื่อมต่ออยู่ หลังจากเชื่อมต่อกับบอร์ดได้แล้ว คุณจะเห็น Parameter ของเครื่องบนหน้าจอ Console อีกครั้ง ทุกการเปลี่ยนแปลงที่คุณทำใน Software จะไป Update Parameter เหล่านี้ นอกจากนี้ เมื่อเชื่อมต่อกับเครื่องแล้ว Software จะเปลี่ยนเป็น Alarm mode และล็อคเครื่องไว้เพื่อความปลอดภัย คุณสามารถเปลี่ยนเป็นโหมดปกติได้โดยคลิก Unlock
จากนั้นเปิดส่วน ‘Setup Wizard’ ของ Software ในส่วน Motor Wiring ให้ตรวจสอบว่ามอเตอร์ของคุณหมุนไปในทิศทางที่ถูกต้องหรือไม่ โดยลองขยับเล็กน้อยและใช้ตัวเลือก Reverse motion หากต้องการ ในส่วน Step Calibration คุณสามารถกำหนดจุดศูนย์ของเครื่องได้โดยการเลื่อนแกนของเครื่อง จะดีกว่าหากคุณนำเครื่องมาที่จุดศูนย์ด้วยตนเองทุกครั้งที่เปิดเครื่องแล้วคลิก ‘reset to zero’ จำไว้ว่าเมื่อเคลื่อนที่ด้วยมือ คุณต้องตัดไฟเลี้ยงมอเตอร์ก่อน หากต้องการ คุณสามารถตรวจสอบ Limit Switch ในส่วนนี้และลองกดสวิตช์ดู ในการทดสอบ Limit Switch ตัว Software จะเปิดใช้งาน Alarm mode และหยุดการทำงานของเครื่อง
จากนั้นมาทำ ‘Homing’ จุดสำคัญที่นี่คือต้องแน่ใจว่ามอเตอร์เคลื่อนที่ไปในทิศทางที่ถูกต้องก่อนเริ่มกระบวนการ Homing และเตรียมพร้อมที่จะตัดไฟเลี้ยงมอเตอร์ในกรณีฉุกเฉิน เมื่อกระบวนการ Homing เสร็จสิ้น ให้ตัดไฟเลี้ยงมอเตอร์และนำเครื่องกลับมาที่จุดศูนย์ด้วยตนเอง ตอนนี้เครื่องพร้อมแล้ว ทุกครั้งที่คุณเปิด Software ให้นำเครื่องมาที่จุดศูนย์แล้วคลิกปุ่ม ‘reset to zero’ ครับ



ในการใช้งาน Software เราจำเป็นต้องมี G-Code และสำหรับขั้นตอนนี้เราจะใช้ Inkscape ขั้นแรกให้ดาวน์โหลด Inkscape เวอร์ชั่นนี้ และติดตั้งให้เสร็จสิ้น จากนั้นดาวน์โหลด Extension ยอดนิยม ‘4-xi Draw’ ที่พัฒนาขึ้นสำหรับ Inkscape (ผมไม่สามารถเพิ่มไฟล์ ZIP Extension ที่นี่ได้เนื่องจากไม่รองรับ คุณสามารถเข้าถึงไฟล์ Extension ได้โดยไปที่ลิงก์ ที่แชร์ไฟล์ PCB) จากนั้นแตกไฟล์ ZIP และคัดลอกไฟล์ทั้งหมดในโฟลเดอร์ นำไฟล์ที่คัดลอกไปวางในโฟลเดอร์ extensions ของ Inkscape
เปิด Inkscape และไปที่ Page settings เพื่อตั้งค่าอัตราส่วนภาพให้ใกล้เคียงกับขนาดของเครื่องในหน่วยมิลลิเมตร จากนั้นนำเข้ารูปภาพที่คุณต้องการและวางลงบนหน้า เลือกรูปภาพแล้วเปิด Trace Bitmap ในส่วนนี้คุณเพียงแค่กดปุ่ม ‘OK’ แล้วลบรูปภาพแรกที่นำเข้ามาออก จากส่วน Extensions ให้ไปที่ 4-xi Draw และเปิดเครื่องมือ ‘Create Pen’ ในส่วนนี้ให้ Update มุมตำแหน่งขึ้นและลงของ Servo Motor กำหนดชื่อไฟล์ แล้วคลิกที่ปุ่ม ‘Apply’ ในไม่กี่วินาที รูปภาพจะถูกสร้างขึ้นด้วย G-Code และโอนไปยัง Directory ที่ระบุไว้ ตอนนี้กลับไปที่ Universal G-Code Sender เคลื่อนเครื่องไปยังจุดศูนย์ด้วยตนเอง เลือก Port ที่เครื่องเชื่อมต่ออยู่ เลือก "reset to zero" แล้วจึงนำเข้า G-Code กดปุ่ม Run และการวาดภาพจะเริ่มขึ้น เท่านี้ก็เรียบร้อยครับ เรามาถึงตอนท้ายของอีกหนึ่งโปรเจกต์แล้ว ขอบคุณที่ติดตามอ่านครับ
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้
ประเมิน Project
เอาฟอร์มยาวออกจากท้ายหน้า Project แล้ว เหลือเป็นปุ่มให้กดไปกรอกหน้าเดียว ตัวใหญ่ เว้นบรรทัดเยอะ อ่านง่ายกว่า
รีวิวจากคนใช้งานจริง
ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย
ยังไม่มีรีวิวบนหน้านี้ ถ้าเคยใช้งานหรือมีข้อเสนอแนะ เขียนเป็นคนแรกได้เลย