สารบัญ:
- ขั้นตอนที่ 1: เนื้อหาชุดอุปกรณ์
- ขั้นตอนที่ 2: โครงการและการออกแบบ
- ขั้นตอนที่ 3: การประกอบฐาน
- ขั้นตอนที่ 4: การประกอบชิ้นส่วน Spool Motion Engine
- ขั้นตอนที่ 5: การประกอบ Motion Engine ให้เสร็จสิ้น
- ขั้นตอนที่ 6: โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
- ขั้นตอนที่ 7: การเดินสายไฟและการเชื่อมต่อกับ Arduino
- ขั้นตอนที่ 8: ชุดคำสั่งซอฟต์แวร์และการควบคุม
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ทำไมต้องใช้เครื่องมือที่ใช้เครื่องยนต์
ฟิลาเมนต์ของเครื่องพิมพ์ 3 มิติ - ปกติเกือบจะแข็งแกร่ง - ถูกดึงโดยเครื่องอัดรีดในขณะที่ม้วนวางอยู่ใกล้ ๆ กับเครื่องพิมพ์และหมุนได้ฟรี ฉันได้สังเกตเห็นความแตกต่างที่มีความหมายในพฤติกรรมของวัสดุโดยขึ้นอยู่กับระดับการใช้งาน ซึ่งอ้างถึงม้วนไส้หลอด 1 กก. หลอดไส้หลอดใหม่ (เต็ม) ไหลได้เกือบดี แต่แรงที่ใช้โดยเครื่องอัดรีดควรมีความเกี่ยวข้องค่อนข้างมาก: น้ำหนักอย่างน้อย 1.5 กก.
มอเตอร์ของเครื่องอัดรีด (ในกรณีส่วนใหญ่คือ Nema17 stepper) มีกำลังเพียงพอที่จะทำงาน แต่สองเกียร์ของเครื่องอัดรีดดันเส้นใยไปทางด้านร้อนในขณะที่ทำงานรวบรวมอนุภาคของเส้นใยเนื่องจากแรงที่ใช้ สิ่งนี้ต้องการการบำรุงรักษาเครื่องอัดรีดบ่อยครั้งเพื่อหลีกเลี่ยงการอุดตันของหัวฉีด อนุภาคเหล่านี้มีแนวโน้มที่จะแยกออกและผสมกับเส้นใยที่สะอาดในขณะที่ป้อน ทำให้ปัญหาหัวฉีดเพิ่มขึ้น และหัวฉีดสึกหรอบ่อยขึ้น สิ่งนี้เกิดขึ้นบ่อยขึ้นกับหัวฉีดขนาดเส้นผ่านศูนย์กลาง 0.3 มม.
เมื่อใช้ม้วนไส้หลอดครึ่งหนึ่งหรือมากกว่านั้น เกลียวของมันจะเล็กลง และในสภาพแวดล้อมบางอย่าง ไส้หลอดมักจะแตกหักบ่อยเกินไป งานพิมพ์ขนาดยาวมีความน่าเชื่อถือและเครียดน้อยลง ฉันไม่สามารถปล่อยให้เครื่องพิมพ์ทำงานคนเดียวตลอดทั้งคืนโดยไม่ได้ควบคุมมัน ดังนั้นการควบคุมการป้อนเส้นใยด้วยตัวเลขของมอเตอร์จึงช่วยแก้ปัญหาต่างๆ ได้
ชุดนี้มีอยู่ใน Tindie.com
ขั้นตอนที่ 1: เนื้อหาชุดอุปกรณ์
ชุดนี้ประกอบด้วยชิ้นส่วนและกลไกการพิมพ์ 3 มิติทั้งหมดเพื่อประกอบเครื่องจ่ายไส้หลอดแบบใช้มอเตอร์ มีชิ้นส่วนเสริมสองส่วนแทน: มอเตอร์และบอร์ดควบคุมมอเตอร์
ในการตั้งค่าของฉัน ฉันใช้มอเตอร์แปรงถ่านแบบมีเกียร์ของ McLennan ขนาด 12 V แต่มอเตอร์ที่มีเส้นผ่านศูนย์กลาง 37 มม. แบบมีเกียร์สามารถใส่เข้าไปด้านในส่วนรองรับมอเตอร์ได้อย่างเหมาะสม
การแสดงที่ดีที่สุดด้วย TLE94112LE Arduino shield โดย Infineon (ตรวจสอบฉบับเต็มที่นี่); บอร์ดควบคุมมอเตอร์ DC นี้สามารถรองรับชุดจ่ายหุ่นยนต์ได้ถึง 6 ชุดในเวลาเดียวกัน
ฉันได้ทดสอบทั้งระบบทั้งบน Arduino UNO R3 และบอร์ด XMC1100 Boot kit ที่เข้ากันได้กับ Arduino โดย Infineon และระบบตอบสนองได้ดีมากกับทั้งบอร์ดไมโครคอนโทรลเลอร์
แนะนำให้ใช้โล่ TLE94112LE แต่ไม่จำเป็น ตัวควบคุมมอเตอร์ DC สำหรับ Arduino - รวมถึงโครงการของคุณเอง! - สามารถทำงานได้ดีกับเครื่องมือนี้
ชุดนี้แบ่งออกเป็นสองชุดของส่วนประกอบเนื่องจากสองส่วนถูกสร้างขึ้นเพื่อทำงานร่วมกัน แพลตฟอร์มฐาน จะรองรับม้วนไส้หลอดที่หมุนบนตลับลูกปืนล้อฟรีสี่ตัว ฐานยึดกับเซ็นเซอร์น้ำหนักเพื่อควบคุมกลไกการหมุนที่กระตุ้นการเปิดใช้งานตลอดจนการตรวจสอบสภาพเส้นใย: น้ำหนัก เมตร และเปอร์เซ็นต์ ข้อมูลจำนวนมากรวมถึงชุดคำสั่งที่สมบูรณ์สามารถเข้าถึงได้จาก Arduino ผ่านเทอร์มินัลอนุกรม
เครื่องมือที่จำเป็น
เพื่อให้การประกอบเสร็จสมบูรณ์ คุณต้องใช้กาวพลาสติกที่ทนทานสำหรับชิ้นส่วนบางส่วน ไขควง และชุดสกรูอัลเลน
ขั้นตอนที่ 2: โครงการและการออกแบบ
โปรเจ็กต์นี้เป็นวิวัฒนาการครั้งที่สามของซีรีส์เครื่องจ่ายเส้นใยของเครื่องพิมพ์ 3 มิติ เมื่อครั้งก่อนฉันสร้างฐานหมุนเพื่อปรับการไหลของเส้นใยให้เหมาะสมเมื่อดึงด้วยเครื่องอัดรีดเครื่องพิมพ์ 3 มิติ
รุ่นที่สองมีเซ็นเซอร์น้ำหนักสำหรับตรวจสอบการใช้ไส้หลอดแบบเรียลไทม์ด้วยบอร์ด Arduino โปรเจ็กต์สุดท้ายนี้รวมถึงการปล่อยฟิลาเมนต์อัตโนมัติโดยขึ้นอยู่กับความต้องการของงานเครื่องพิมพ์ 3 มิติ มันขึ้นอยู่กับการเปลี่ยนแปลงน้ำหนักเสมือนเมื่อเครื่องอัดรีดเริ่มดึงเส้นใย เหตุการณ์นี้จะกระตุ้นไมโครคอนโทรลเลอร์ผ่านเซ็นเซอร์น้ำหนัก และม้วนไส้หลอดแบบใช้มอเตอร์จะเริ่มปล่อยวัสดุบางนิ้ว จากนั้นให้ช้าลงและหยุด
มีการส่งออกส่วนประกอบในรูปแบบ STL และการพิมพ์ 3 มิติ จากนั้นจึงปรับแต่งและประกอบเข้าด้วยกัน ฉันได้สร้างส่วนรองรับแบบกำหนดเองเพื่อจัดตำแหน่งส่วนที่เคลื่อนไหวกับฐาน รางอะลูมิเนียมที่ยาวขึ้นยังใช้เพื่อรองรับ Arduino และแผงป้องกันมอเตอร์เพื่อให้เครื่องมือทั้งหมดมีขนาดกะทัดรัดและเคลื่อนย้ายได้ง่าย
การสร้างการออกแบบ ฉันปฏิบัติตามสมมติฐานหลายข้อ:
- ทำให้เครื่องยนต์อัตโนมัติเกือบจะเรียบง่ายและง่ายต่อการทำซ้ำ
- ลดจำนวนส่วนประกอบที่พิมพ์ได้ที่ไม่ใช่ 3D ให้ได้มากที่สุด
- ลดความเครียดที่ใช้กับเครื่องอัดรีดขณะพิมพ์ให้มากที่สุด
- ใช้บอร์ดไมโครคอนโทรลเลอร์ต้นทุนต่ำและตั้งโปรแกรมได้ง่าย
- ใช้เซ็นเซอร์รับน้ำหนักเพื่อควบคุมการใช้เส้นใยและการป้อนเส้นใย จัดการเสียงรบกวนจากสิ่งแวดล้อมที่รบกวนมาตรการน้ำหนักของเส้นใย
นี่คือผลลัพธ์ที่ฉันบรรลุ
ขั้นตอนที่ 3: การประกอบฐาน
ขั้นตอนแรกคือการประกอบฐานด้วยเซ็นเซอร์น้ำหนัก
- ใส่ท่อแกนแบริ่งขนาดเล็กลงในรูแบริ่ง
- ใส่แผ่นแยกสองแผ่นที่ด้านข้างของลูกปืน
- แนะนำส่วนประกอบภายในตัวรองรับแบริ่งขนาด "U" ที่จัดตำแหน่งรู
- ใส่สกรูอัลเลนไปด้านหนึ่ง และแหวนรองกับน็อตไปอีกด้านหนึ่ง ปิดน็อตโดยไม่ต้องใช้ความพยายามมากเกินไป
คุณควรทำซ้ำการดำเนินการกับที่รองรับแบริ่งทั้งสี่ จากนั้นทดสอบการประกอบ: ตลับลูกปืนควรหมุนได้อย่างอิสระ
ตอนนี้ยึดด้วยสกรูอัลเลนซึ่งรองรับแบริ่งสี่ตัวที่ฐานด้านบนพร้อมรูควบคุมสี่รู จัดตำแหน่งรองรับแบริ่งให้ขนานกัน กำหนดระยะห่างตามความกว้างของม้วนไส้หลอดของคุณ
ขั้นตอนต่อไปคือการประกอบแถบเซ็นเซอร์น้ำหนักที่ยึดฐานด้านล่างและฐานด้านบนเข้าด้วยกัน เซ็นเซอร์น้ำหนักมีสกรูอัลเลน 2 ตัวที่ต่างกันทั้งสองด้าน และคุณควรปรับทิศทางเพื่อให้สามารถอ่านฉลากน้ำหนักสูงสุดได้เมื่อวางฐานอย่างถูกต้อง ฐานด้านล่างมีรูด้านข้างพิเศษสองรูเพื่อยึดแอมพลิฟายเออร์ A/D ของเซ็นเซอร์น้ำหนัก แอมพลิฟายเออร์ที่ใช้ HX711 IC จะถูกจ่ายไฟและเชื่อมต่อกับบอร์ด Arduino ผ่านสายสี่เส้นตามที่แสดงในแผ่นข้อมูลเซ็นเซอร์ที่แนบมา
ขั้นตอนสุดท้ายคือการประกอบฐานบนทั้งหมดเหนือเซ็นเซอร์น้ำหนักซึ่งจับจ้องไปที่ส่วนล่างแล้ว
ส่วนประกอบแรกได้รับการตั้งค่าแล้ว!
ขั้นตอนที่ 4: การประกอบชิ้นส่วน Spool Motion Engine
ขั้นตอนที่ง่ายกว่าในการประกอบเครื่องยนต์สปูลโมชั่นคือการประกอบส่วนประกอบที่สำคัญที่สุดสี่ส่วนแยกจากกัน จากนั้นจึงสร้างสิ่งปลูกสร้างสุดท้ายให้เสร็จสมบูรณ์:
มอเตอร์ DC แบบมีเกียร์ในกล่องเกียร์มอเตอร์
ควรติดตั้งมอเตอร์กระแสตรงที่ส่วนกลางของส่วนรองรับโครงสร้าง ก่อนขันสกรูมอเตอร์ คุณควรตัดสินใจว่าด้านไหนที่คุณต้องการจะวางด้านเกียร์เพื่อจัดตำแหน่งแขนทั้งสองข้างที่ยึดมอเตอร์และเฟืองขนาดใหญ่ไว้อย่างถูกต้อง
ขับเคลื่อนด้วยเกียร์ขนาดใหญ่
ควรขันสกรูเฟืองขนาดใหญ่ด้วยบล็อกทรงกรวยที่ถูกตัดทอนด้วยสกรูอัลเลนสี่ตัว เกียร์นี้จะถูกบล็อกบนแกนหมุนด้วยน็อต ส่วนรูปกรวยจะยึดหลอดไส้ซึ่งถูกล็อคไปอีกด้านหนึ่งโดยน็อตล็อคที่คล้ายกันภายในบล็อกทรงกรวยอีกอันที่ถูกตัดทอน โซลูชันนี้ไม่เพียงแต่ยึดกลไกการเคลื่อนที่เข้าที่ แต่ยังกำหนดทิศทางของน้ำหนักทั้งหมดไปยังฐาน และเป็นน้ำหนักเมื่อทดค่าของระบบ
ตัวล็อคสปูล
นี่คือบล็อกทรงกรวยที่ถูกตัดทอนซึ่งเมื่อรวมกับเฟืองขับเคลื่อนด้านล็อคที่คล้ายกันจะยึดกลไกการเคลื่อนที่ไว้กับหลอดไส้ เป็นเรื่องของไหวพริบ มันคือม้วนไส้หลอดที่ทำให้อาคารเสร็จสมบูรณ์ในขณะที่การเคลื่อนไหวรองรับแขนทั้งสองข้างนั้นสามารถเคลื่อนที่ไปอีกด้านหนึ่งได้อย่างอิสระ
ดังที่แสดงในภาพ ตัวยึดตัวล็อคสปูลถูกสร้างขึ้นในสองส่วน ขั้นแรกให้ใส่น็อต M4 ในส่วนที่ใหญ่กว่าของบล็อก จากนั้นทากาวส่วนที่สอง (ฝาครอบ) โดยยึดบล็อกเข้าด้วยกัน น็อตยังคงถูกขังอยู่ในที่ยึดล็อคซึ่งจะถูกขันให้เข้ากับแกนที่ขับเคลื่อนด้วยเกลียว
กล่องแบริ่ง
กล่องแบริ่งมีสองหน้าที่: ให้การสนับสนุนที่ดีกับเกียร์ส่งและการเคลื่อนไหวที่ราบรื่นและเงียบ ในการประกอบกล่องตลับลูกปืน ให้ทำตามขั้นตอนง่าย ๆ เหล่านี้:
- ขันน็อต M4 ตัวแรกเข้ากับปลายทั้งสองด้านของแกนขับเคลื่อนแกนยึดหลอดเกลียว
- ใส่แบริ่งแรก
- ใส่ตัวคั่น
- ใส่แบริ่งที่สอง
- ขันน็อตตัวที่สองแล้วล็อคในระดับปานกลาง ตัวแยกพลาสติกภายในจะต้านแรงที่เพียงพอเพื่อให้สิ่งของเข้าที่และใช้งานได้นาน
- ใส่แบริ่งที่ประกอบแล้วในกล่องแบริ่ง ควรทำโดยบังคับเพื่อให้ได้ผลลัพธ์ที่ดีกว่า ดังนั้นอย่าขยายภายในกล่องมากเกินไปเมื่อทำการกลั่นชิ้นส่วนพลาสติก
เราพร้อมแล้วสำหรับการประกอบชิ้นส่วนขั้นสุดท้าย!
ขั้นตอนที่ 5: การประกอบ Motion Engine ให้เสร็จสิ้น
เรากำลังจะเสร็จสิ้นการประกอบโครงสร้างแล้วเราสามารถย้ายไปทดสอบการเคลื่อนไหว ตอนนี้คุณต้องการกาวอีกเล็กน้อย ควรใส่กล่องแบริ่งที่ประกอบในขั้นตอนก่อนหน้าลงในรูยึดกล่องของส่วนรองรับเครื่องยนต์สองแขนและอาจติดกาวก่อนที่จะขันฝาครอบกล่อง
คำเตือน: ห้ามทากาวที่ฝาครอบกล่อง ให้ขันให้แน่นเท่านั้น ฝาครอบมีความสำคัญต่อการป้องกันฝุ่น และควรถอดออกเพื่อการบำรุงรักษาในอนาคต
เมื่อการตั้งค่านี้เสร็จสมบูรณ์ก่อนที่จะเพิ่มเฟืองขับ (ยิ่งใหญ่) ให้เพิ่มวงแหวนแยกขนาดเล็ก: ช่วยให้เฟืองขนาดใหญ่อยู่ในแนวเดียวกับเฟืองมอเตอร์ทำหน้าที่เป็นวงแหวนเพื่อยึดชุดขับเคลื่อนที่กำลังเคลื่อนที่
จากนั้นใส่เฟืองขับ (อันเล็ก) ลงในเพลามอเตอร์ โปรดทราบว่ามีด้านแบนในมอเตอร์เช่นกันในรูตรงกลางเฟืองเพื่อให้เฟืองหมุนด้วยมอเตอร์กระแสตรง
ขั้นตอนสุดท้าย ใส่เฟืองขับขนาดใหญ่ตามที่แสดงในภาพและล็อคเข้ากับแกนเกลียวด้วยน็อต M4 สองตัว
อาคารกลศาสตร์เสร็จสมบูรณ์!
ขั้นตอนที่ 6: โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
เพื่อให้ชุดอุปกรณ์อยู่กับที่ ฉันได้สร้างโครงสร้างที่เรียบง่ายโดยใช้ท่อสี่เหลี่ยมอะลูมิเนียมสองท่อเพื่อรองรับทั้งฐานและโครงสร้างการเคลื่อนไหว ฐานได้รับการแก้ไขด้วยสกรูสี่ตัวที่รางทั้งสองราง (ความยาวประมาณ 25 ซม.) และด้วยการพิมพ์ 3 มิติขนาดเล็กสองสามตัวรองรับ ฉันได้แก้ไขกลไกการเคลื่อนที่ให้เคลื่อนที่ได้ฟรีเพื่อให้ใส่และถอดม้วนไส้หลอดได้ง่าย
ทุกคนสามารถเลือกวิธีแก้ปัญหาของตัวเองได้ ขึ้นอยู่กับวิธีการจัดระเบียบโต๊ะทำงานของเขา
ขั้นตอนที่ 7: การเดินสายไฟและการเชื่อมต่อกับ Arduino
ตามที่อธิบายไว้ในขั้นตอนเนื้อหาของ Kit ฉันใช้มอเตอร์ชิลด์ Infineon TLE94112LE DC สำหรับ Arduino และทดสอบเครื่องยนต์บนทั้ง Arduino UNO R3 และ Infineon XMC110 Boot Kit
หากคุณจะควบคุมมอเตอร์ (ต้องการคุณสมบัติ PWM) ด้วยแผงควบคุม DC ที่คุณเลือก เพียงแค่ปรับคำแนะนำให้เข้ากับข้อกำหนดทางเทคนิคของโล่ของคุณ
หมายเหตุเกี่ยวกับ TLE04112LE Arduino Shield
ข้อ จำกัด อย่างหนึ่งที่ฉันได้พบกับแผงป้องกันมอเตอร์อื่น ๆ สำหรับ Arduino คือพวกเขาใช้คุณสมบัติของไมโครคอนโทรลเลอร์เดียวกัน (เช่นหมุด PWM และ GPIO); ซึ่งหมายความว่าบอร์ดของคุณจะทุ่มเทให้กับงานเหล่านี้ ในขณะที่มีทรัพยากรอื่นๆ (MPU และ GPIO) เพียงเล็กน้อยเท่านั้นที่พร้อมใช้งานสำหรับการใช้งานอื่นๆ
มีความเป็นไปได้ที่จะวางโล่ TLE94122LE Arduino สำหรับการทดสอบบนท้องถนน ข้อได้เปรียบที่ชัดเจนที่สุดของ IC ที่บอร์ดนั้นขึ้นอยู่กับความสมบูรณ์ของมัน บอร์ด Arduino สื่อสารกับโล่ผ่านโปรโตคอล SPI โดยใช้เพียงสองพิน ทุกคำสั่งที่คุณส่งไปยังเกราะจะถูกประมวลผลโดยอัตโนมัติโดย TLE94112LE IC โดยไม่ต้องใช้ทรัพยากร MPU คุณสมบัติที่โดดเด่นอีกประการของบอร์ด Infineon คือความสามารถในการควบคุมมอเตอร์แบบมีแปรงถ่านสูงสุดหกตัวพร้อมช่องสัญญาณ PWM ที่ตั้งโปรแกรมได้สามช่อง ซึ่งหมายความว่า Arduino สามารถติดตั้งมอเตอร์ได้ตั้งแต่หนึ่งตัวขึ้นไป สตาร์ทมอเตอร์ และทำงานอื่นๆ ต่อไปได้ โล่นี้เผยให้เห็นว่าสมบูรณ์แบบเพื่อรองรับม้วนไส้หลอดที่แตกต่างกันมากถึงหกม้วนในเวลาเดียวกัน การเคลื่อนไหวเป็นเพียงหนึ่งในหน้าที่รับผิดชอบของ MPU เมื่อพิจารณาถึงความเป็นไปได้ในการจัดการหลอดไส้หลอดที่แตกต่างกันหกตัวด้วย Arduino ตัวเดียว + ป้องกันผลกระทบต่อต้นทุนของตัวควบคุมไมโคร บนตัวควบคุมฟิลาเมนต์ทุกตัวในราคาต่ำกว่า 5 ยูโร
เซ็นเซอร์น้ำหนัก
หลังจากทำการทดลองบางอย่าง ฉันเห็นว่ามันเป็นไปได้ที่จะควบคุมทั้งระบบ - การตรวจสอบและการป้อนอัตโนมัติ - ด้วยเซ็นเซอร์ตัวเดียว โหลดเซลล์ (เซ็นเซอร์น้ำหนัก) สามารถวัดการเปลี่ยนแปลงน้ำหนักของหลอดด้ายแบบไดนามิกโดยให้ข้อมูลทั้งหมดที่เราต้องการ
ฉันใช้โหลดเซลล์ราคาไม่แพงในช่วง 0-5 กก. ร่วมกับบอร์ดขนาดเล็กที่ใช้แอมพลิฟายเออร์ HX711 AD ซึ่งเป็น IC เฉพาะสำหรับจัดการเซ็นเซอร์โหลดเซลล์ ไม่มีปัญหาในการเชื่อมต่อเนื่องจากมีห้องสมุด Arduino ที่ใช้งานได้ดี
สามขั้นตอนในการตั้งค่าฮาร์ดแวร์
- ใส่ชิลด์ที่ด้านบนของบอร์ด Arduino หรือ Infineon XMC110 Boot Kit
- ต่อสายมอเตอร์เข้ากับขั้วต่อแบบเกลียว Out1 และ Out2 ของตัวป้องกัน
- เชื่อมต่อพลังงานและสัญญาณจากแอมพลิฟายเออร์เซ็นเซอร์น้ำหนัก HX711 AD กับพิน Arduino ในกรณีนี้ฉันใช้พิน 2 และ 3 แต่พินว่างทั้งหมดนั้นใช้ได้
คำเตือน: p in 8 และ 10 สงวนไว้โดย TLE94113LE shield สำหรับการเชื่อมต่อ SPI
นั่นคือทั้งหมด! พร้อมติดตั้งซอฟต์แวร์แล้วหรือยัง? ไปข้างหน้า
ขั้นตอนที่ 8: ชุดคำสั่งซอฟต์แวร์และการควบคุม
สามารถดาวน์โหลดซอฟต์แวร์เอกสารฉบับเต็มได้จากที่เก็บ GitHub 3DPrinterFilamentDispenserAndMonitor
ที่นี่เราพิจารณาเฉพาะส่วนที่มีความหมายมากที่สุดและคำสั่งควบคุมเท่านั้น
มีเหตุผลที่กำหนดโดยจำนวนพินที่มีอยู่บน Arduino UNO ฉันตัดสินใจควบคุมระบบผ่านเทอร์มินัลอนุกรม USB; เนื่องจากทุกหน่วยที่ใช้มอเตอร์นั้นใช้เซ็นเซอร์น้ำหนัก การควบคุมเครื่องจ่ายไส้หลอดที่แตกต่างกันหกตัวจึงต้องอ่านข้อมูลจากเซ็นเซอร์น้ำหนักหกตัว โหลดเซลล์ทุกอัน "ใช้" สองพิน พิน 0 และ 1 สงวนไว้ (Tx/Rx) สำหรับซีเรียล และพิน 8 และ 10 สงวนไว้สำหรับแชนเนล SPI ที่เชื่อมต่อชิลด์ TLE94112LE
สถานะของระบบ
ซอฟต์แวร์ควบคุมทำงานผ่านสถานะต่างๆ สี่สถานะ ซึ่งกำหนดไว้ใน filament.h:
#define SYS_READY "พร้อม" // ระบบพร้อม
#define SYS_RUN "Running" // Filament in use #define SYS_LOAD "Load" // โหลดแบบม้วน #define SYS_STARTED "Started" // เริ่มแอปพลิเคชัน // รหัสสถานะ #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3
สถานะ: เริ่มแล้ว
สถานะนี้เกิดขึ้นหลังจากการรีเซ็ตฮาร์ดแวร์หรือเมื่อเปิดระบบ การเปิดเครื่อง (และการตั้งค่า () เมื่อสเก็ตช์เริ่มต้น) เริ่มต้นค่าเริ่มต้นภายในและควรเริ่มต้นโดยไม่มีน้ำหนักเพิ่มเติมบนแพลตฟอร์มเนื่องจากเป็นส่วนหนึ่งของลำดับการเริ่มต้นคือการได้มาซึ่งทดที่แน่นอนเพื่อให้ได้น้ำหนักเป็นศูนย์จริง.
สถานะ: พร้อมแล้ว
สถานะพร้อมเกิดขึ้นหลังจากซอฟต์รีเซ็ต (ส่งจากเทอร์มินัลอนุกรม) คล้ายกับการตัดทางกายภาพแต่ไม่มีการคำนวณทดน้ำหนัก สามารถเปิดใช้คำสั่งรีเซ็ตได้เมื่อระบบกำลังทำงาน
สถานะ: Load
สถานะการโหลดเกิดขึ้นเมื่อเครื่องปลายทางส่งคำสั่งโหลด ซึ่งหมายความว่ามีการโหลดม้วนไส้และคำนวณน้ำหนักแบบไดนามิกแล้ว น้ำหนักไส้หลอดที่แน่นอนได้มาจากชนิดของการตั้งค่าม้วนลบน้ำหนักของหน่วยมอเตอร์และม้วนเปล่า
สถานะ: วิ่ง
สถานะนี้ช่วยให้สามารถคำนวณน้ำหนักอัตโนมัติและเครื่องจ่ายไส้หลอดอัตโนมัติได้
ข้อความเทอร์มินัล
ซอฟต์แวร์เวอร์ชันปัจจุบันส่งคืนข้อความที่มนุษย์สามารถอ่านได้ไปยังเทอร์มินัลขึ้นอยู่กับคำสั่ง ข้อความสตริงถูกกำหนดในไฟล์ส่วนหัวสองไฟล์: commands.h (ข้อความที่เกี่ยวข้องกับคำสั่งและการตอบกลับ) และ filament.h (สตริงที่ parser ใช้เพื่อสร้างข้อความผสม)
คำสั่ง
ไฟล์ที่แตกต่างกันสองไฟล์เกี่ยวข้องกับการจัดการคำสั่ง: commands.h รวมถึงคำสั่งทั้งหมดและพารามิเตอร์ที่เกี่ยวข้องและ filament.h รวมถึงค่าคงที่และคำจำกัดความทั้งหมดที่ใช้โดยระบบการถ่วงน้ำหนักและโดย parser
ในขณะที่การคำนวณภายในทำโดยอัตโนมัติด้วยซอฟต์แวร์ ฉันได้ใช้ชุดคำสั่งต่างๆ เพื่อตั้งค่าการทำงานของระบบและควบคุมพารามิเตอร์บางอย่างด้วยตนเอง
คีย์เวิร์ดของคำสั่งต้องคำนึงถึงขนาดตัวพิมพ์และควรส่งจากเทอร์มินัลเท่านั้น หากคำสั่งไม่เหมาะสมกับสถานะปัจจุบันของคำสั่งนั้น ไม่รู้จัก ข้อความคำสั่งที่ไม่ถูกต้องจะถูกส่งคืน มิฉะนั้น คำสั่งจะถูกดำเนินการ
คำสั่งสถานะ
เปลี่ยนสถานะปัจจุบันของระบบและพฤติกรรมก็ปรับเช่นกัน
คำสั่งเส้นใย
การใช้คำสั่งแยกกันทำให้สามารถตั้งค่าลักษณะเส้นใยและม้วนตามน้ำหนักและขนาดทั่วไปที่มีในตลาดปัจจุบันได้
คำสั่งหน่วย
คำสั่งเหล่านี้เป็นคำสั่งสองสามคำสั่งในการตั้งค่าการแสดงภาพหน่วยวัดเป็นกรัมหรือเซนติเมตร ตามความเป็นจริง เป็นไปได้ที่จะกำจัดคำสั่งนี้และแสดงข้อมูลในทั้งสองหน่วยเสมอ
คำสั่งข้อมูล
แสดงกลุ่มข้อมูลตามสถานะของระบบ
คำสั่งมอเตอร์
ควบคุมมอเตอร์สำหรับการป้อนหรือดึงไส้หลอด
คำสั่งมอเตอร์ทั้งหมดเป็นไปตามเส้นทางเร่ง/ลดความเร็ว คำสั่ง feed และ pull สองคำสั่งดำเนินการลำดับสั้น ๆ ตามที่กำหนดไว้ใน motor.h โดยค่าคงที่ FEED_EXTRUDER_DELAY ในขณะที่คำสั่ง feedc และ pullc ทำงานอย่างไม่มีกำหนดจนกว่าจะไม่ได้รับคำสั่งหยุด
คำสั่งโหมดการทำงาน
สถานะการทำงานยอมรับสองโหมด; โหมดคนเพิ่งอ่านน้ำหนักเป็นระยะและมอเตอร์เคลื่อนที่จนกว่าจะไม่มีการส่งคำสั่งควบคุมมอเตอร์ โหมดอัตโนมัติจะรันคำสั่งฟีดสองคำสั่งแทนเมื่อเครื่องอัดรีดต้องการเส้นใยมากขึ้น
หลักการนี้ขึ้นอยู่กับการอ่านน้ำหนักตามบริบทในสภาพแวดล้อมเฉพาะนี้ เราคาดว่าการใช้เส้นใยจะค่อนข้างช้า เครื่องพิมพ์ 3D เกือบจะช้า และการสั่นของน้ำหนักปกติขึ้นอยู่กับการสั่นสะเทือนของสภาพแวดล้อม (ดีกว่าถ้าคุณไม่ใส่เนื้อหาทั้งหมดบนเครื่องพิมพ์ 3D)
เมื่อเครื่องอัดรีดดึงเส้นใยแทน ความแตกต่างของน้ำหนักจะเพิ่มขึ้นอย่างมาก (50 กรัมหรือมากกว่า) ในเวลาเพียงไม่กี่ครั้ง โดยทั่วไปแล้วจะอยู่ระหว่างการอ่านค่าสองหรือสามค่า ข้อมูลนี้ถูกกรองโดยซอฟต์แวร์ที่ "หัก" ที่จำเป็นต้องใช้เส้นใยใหม่ เพื่อหลีกเลี่ยงการอ่านค่าความผันแปรของน้ำหนักที่ผิดในขณะที่มอเตอร์กำลังทำงานอยู่จะถูกละเลยเลย
ตรรกะของแอปพลิเคชัน
ตรรกะของแอปพลิเคชันถูกแจกจ่ายใน.ino main (ร่าง Arduino) พร้อมฟังก์ชันสามอย่าง: setup(), loop() และ parseCommand(commandString)
ร่างนี้ใช้สองคลาสแยกกัน: คลาส FilamentWeight เพื่อจัดการการคำนวณฟิลาเมนต์ทั้งหมดและการอ่านเซ็นเซอร์ผ่านคลาส HX711 IC และ MotorControl ที่เชื่อมต่อวิธีการระดับต่ำของ TLE94112LE Arduino shield
ติดตั้ง()
เปิดตัวครั้งเดียวเมื่อเปิดเครื่องหรือหลังจากการรีเซ็ตฮาร์ดแวร์เริ่มต้นอินสแตนซ์ของคลาส ตั้งค่าฮาร์ดแวร์และการสื่อสารเทอร์มินัล
วน ()
ฟังก์ชันลูปหลักจัดการสามเงื่อนไขที่แตกต่างกัน
แม้ว่าเซ็นเซอร์น้ำหนักและมอเตอร์จะค่อนข้างซับซ้อนสองประเภท แต่ก็มีข้อดีตรงที่ภาพร่างที่ได้นั้นง่ายต่อการเข้าใจและจัดการ
- ตรวจสอบ (ในโหมดอัตโนมัติ) หากเครื่องอัดรีดต้องการเส้นใยมากขึ้น
- หากมอเตอร์กำลังทำงาน ให้ตรวจสอบข้อผิดพลาดของฮาร์ดแวร์ (ส่งคืนโดย TLE94112LE)
- หากมีข้อมูลอนุกรมให้แยกวิเคราะห์คำสั่ง
parseCommand (คำสั่งสตริง)
ฟังก์ชันการแยกวิเคราะห์จะตรวจสอบสตริงที่มาจากอนุกรม และเมื่อคำสั่งเป็นที่รู้จัก คำสั่งนั้นจะถูกประมวลผลทันที
ทุกคำสั่งทำหน้าที่เป็นเครื่องสถานะที่ส่งผลกระทบต่อพารามิเตอร์บางอย่างของระบบ ตามตรรกะนี้ คำสั่งทั้งหมดจะลดลงเหลือสามการดำเนินการตามลำดับ:
- ส่งคำสั่งไปยังคลาส FilamentWeight (คำสั่งน้ำหนัก) หรือไปยังคลาส MotorControl (คำสั่งมอเตอร์)
- ดำเนินการคำนวณเพื่ออัปเดตค่าน้ำหนักหรืออัปเดตพารามิเตอร์ภายในตัวใดตัวหนึ่ง
- แสดงบนเทอร์มินัลและเอาต์พุตข้อมูลเมื่อการดำเนินการเสร็จสิ้น
ติดตั้งไลบรารี HX711 Arduino ดาวน์โหลดซอฟต์แวร์จาก GitHub และอัปโหลดไปยังบอร์ด Arduino ของคุณแล้วสนุกได้เลย!