สารบัญ:

Robotic Filament Dispenser สำหรับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
Robotic Filament Dispenser สำหรับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Robotic Filament Dispenser สำหรับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Robotic Filament Dispenser สำหรับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Arduino project 😎^ Arduino #arduino #2022 #2021 #2023 #dc #arduinoproject #diy #foryou 2024, กรกฎาคม
Anonim
Image
Image

ทำไมต้องใช้เครื่องมือที่ใช้เครื่องยนต์

ฟิลาเมนต์ของเครื่องพิมพ์ 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: การประกอบฐาน

การประกอบฐาน
การประกอบฐาน
การประกอบฐาน
การประกอบฐาน
การประกอบฐาน
การประกอบฐาน

ขั้นตอนแรกคือการประกอบฐานด้วยเซ็นเซอร์น้ำหนัก

  1. ใส่ท่อแกนแบริ่งขนาดเล็กลงในรูแบริ่ง
  2. ใส่แผ่นแยกสองแผ่นที่ด้านข้างของลูกปืน
  3. แนะนำส่วนประกอบภายในตัวรองรับแบริ่งขนาด "U" ที่จัดตำแหน่งรู
  4. ใส่สกรูอัลเลนไปด้านหนึ่ง และแหวนรองกับน็อตไปอีกด้านหนึ่ง ปิดน็อตโดยไม่ต้องใช้ความพยายามมากเกินไป

คุณควรทำซ้ำการดำเนินการกับที่รองรับแบริ่งทั้งสี่ จากนั้นทดสอบการประกอบ: ตลับลูกปืนควรหมุนได้อย่างอิสระ

ตอนนี้ยึดด้วยสกรูอัลเลนซึ่งรองรับแบริ่งสี่ตัวที่ฐานด้านบนพร้อมรูควบคุมสี่รู จัดตำแหน่งรองรับแบริ่งให้ขนานกัน กำหนดระยะห่างตามความกว้างของม้วนไส้หลอดของคุณ

ขั้นตอนต่อไปคือการประกอบแถบเซ็นเซอร์น้ำหนักที่ยึดฐานด้านล่างและฐานด้านบนเข้าด้วยกัน เซ็นเซอร์น้ำหนักมีสกรูอัลเลน 2 ตัวที่ต่างกันทั้งสองด้าน และคุณควรปรับทิศทางเพื่อให้สามารถอ่านฉลากน้ำหนักสูงสุดได้เมื่อวางฐานอย่างถูกต้อง ฐานด้านล่างมีรูด้านข้างพิเศษสองรูเพื่อยึดแอมพลิฟายเออร์ A/D ของเซ็นเซอร์น้ำหนัก แอมพลิฟายเออร์ที่ใช้ HX711 IC จะถูกจ่ายไฟและเชื่อมต่อกับบอร์ด Arduino ผ่านสายสี่เส้นตามที่แสดงในแผ่นข้อมูลเซ็นเซอร์ที่แนบมา

ขั้นตอนสุดท้ายคือการประกอบฐานบนทั้งหมดเหนือเซ็นเซอร์น้ำหนักซึ่งจับจ้องไปที่ส่วนล่างแล้ว

ส่วนประกอบแรกได้รับการตั้งค่าแล้ว!

ขั้นตอนที่ 4: การประกอบชิ้นส่วน Spool Motion Engine

การประกอบชิ้นส่วน Spool Motion Engine
การประกอบชิ้นส่วน Spool Motion Engine
การประกอบชิ้นส่วน Spool Motion Engine
การประกอบชิ้นส่วน Spool Motion Engine
การประกอบชิ้นส่วน Spool Motion Engine
การประกอบชิ้นส่วน Spool Motion Engine

ขั้นตอนที่ง่ายกว่าในการประกอบเครื่องยนต์สปูลโมชั่นคือการประกอบส่วนประกอบที่สำคัญที่สุดสี่ส่วนแยกจากกัน จากนั้นจึงสร้างสิ่งปลูกสร้างสุดท้ายให้เสร็จสมบูรณ์:

มอเตอร์ DC แบบมีเกียร์ในกล่องเกียร์มอเตอร์

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

ขับเคลื่อนด้วยเกียร์ขนาดใหญ่

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

ตัวล็อคสปูล

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

ดังที่แสดงในภาพ ตัวยึดตัวล็อคสปูลถูกสร้างขึ้นในสองส่วน ขั้นแรกให้ใส่น็อต M4 ในส่วนที่ใหญ่กว่าของบล็อก จากนั้นทากาวส่วนที่สอง (ฝาครอบ) โดยยึดบล็อกเข้าด้วยกัน น็อตยังคงถูกขังอยู่ในที่ยึดล็อคซึ่งจะถูกขันให้เข้ากับแกนที่ขับเคลื่อนด้วยเกลียว

กล่องแบริ่ง

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

  1. ขันน็อต M4 ตัวแรกเข้ากับปลายทั้งสองด้านของแกนขับเคลื่อนแกนยึดหลอดเกลียว
  2. ใส่แบริ่งแรก
  3. ใส่ตัวคั่น
  4. ใส่แบริ่งที่สอง
  5. ขันน็อตตัวที่สองแล้วล็อคในระดับปานกลาง ตัวแยกพลาสติกภายในจะต้านแรงที่เพียงพอเพื่อให้สิ่งของเข้าที่และใช้งานได้นาน
  6. ใส่แบริ่งที่ประกอบแล้วในกล่องแบริ่ง ควรทำโดยบังคับเพื่อให้ได้ผลลัพธ์ที่ดีกว่า ดังนั้นอย่าขยายภายในกล่องมากเกินไปเมื่อทำการกลั่นชิ้นส่วนพลาสติก

เราพร้อมแล้วสำหรับการประกอบชิ้นส่วนขั้นสุดท้าย!

ขั้นตอนที่ 5: การประกอบ Motion Engine ให้เสร็จสิ้น

เสร็จสิ้นการประกอบ Motion Engine
เสร็จสิ้นการประกอบ Motion Engine
เสร็จสิ้นการประกอบ Motion Engine
เสร็จสิ้นการประกอบ Motion Engine
เสร็จสิ้นการประกอบ Motion Engine
เสร็จสิ้นการประกอบ Motion Engine

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

คำเตือน: ห้ามทากาวที่ฝาครอบกล่อง ให้ขันให้แน่นเท่านั้น ฝาครอบมีความสำคัญต่อการป้องกันฝุ่น และควรถอดออกเพื่อการบำรุงรักษาในอนาคต

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

จากนั้นใส่เฟืองขับ (อันเล็ก) ลงในเพลามอเตอร์ โปรดทราบว่ามีด้านแบนในมอเตอร์เช่นกันในรูตรงกลางเฟืองเพื่อให้เฟืองหมุนด้วยมอเตอร์กระแสตรง

ขั้นตอนสุดท้าย ใส่เฟืองขับขนาดใหญ่ตามที่แสดงในภาพและล็อคเข้ากับแกนเกลียวด้วยน็อต M4 สองตัว

อาคารกลศาสตร์เสร็จสมบูรณ์!

ขั้นตอนที่ 6: โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร

โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร
โบนัส: ฉันจะปรับแต่งการสนับสนุนเพื่อจัดการ Kit ได้อย่างไร

เพื่อให้ชุดอุปกรณ์อยู่กับที่ ฉันได้สร้างโครงสร้างที่เรียบง่ายโดยใช้ท่อสี่เหลี่ยมอะลูมิเนียมสองท่อเพื่อรองรับทั้งฐานและโครงสร้างการเคลื่อนไหว ฐานได้รับการแก้ไขด้วยสกรูสี่ตัวที่รางทั้งสองราง (ความยาวประมาณ 25 ซม.) และด้วยการพิมพ์ 3 มิติขนาดเล็กสองสามตัวรองรับ ฉันได้แก้ไขกลไกการเคลื่อนที่ให้เคลื่อนที่ได้ฟรีเพื่อให้ใส่และถอดม้วนไส้หลอดได้ง่าย

ทุกคนสามารถเลือกวิธีแก้ปัญหาของตัวเองได้ ขึ้นอยู่กับวิธีการจัดระเบียบโต๊ะทำงานของเขา

ขั้นตอนที่ 7: การเดินสายไฟและการเชื่อมต่อกับ Arduino

Image
Image
การเดินสายไฟและการเชื่อมต่อกับ Arduino
การเดินสายไฟและการเชื่อมต่อกับ 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 ที่ใช้งานได้ดี

สามขั้นตอนในการตั้งค่าฮาร์ดแวร์

  1. ใส่ชิลด์ที่ด้านบนของบอร์ด Arduino หรือ Infineon XMC110 Boot Kit
  2. ต่อสายมอเตอร์เข้ากับขั้วต่อแบบเกลียว Out1 และ Out2 ของตัวป้องกัน
  3. เชื่อมต่อพลังงานและสัญญาณจากแอมพลิฟายเออร์เซ็นเซอร์น้ำหนัก 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

ติดตั้ง()

เปิดตัวครั้งเดียวเมื่อเปิดเครื่องหรือหลังจากการรีเซ็ตฮาร์ดแวร์เริ่มต้นอินสแตนซ์ของคลาส ตั้งค่าฮาร์ดแวร์และการสื่อสารเทอร์มินัล

วน ()

ฟังก์ชันลูปหลักจัดการสามเงื่อนไขที่แตกต่างกัน

แม้ว่าเซ็นเซอร์น้ำหนักและมอเตอร์จะค่อนข้างซับซ้อนสองประเภท แต่ก็มีข้อดีตรงที่ภาพร่างที่ได้นั้นง่ายต่อการเข้าใจและจัดการ

  1. ตรวจสอบ (ในโหมดอัตโนมัติ) หากเครื่องอัดรีดต้องการเส้นใยมากขึ้น
  2. หากมอเตอร์กำลังทำงาน ให้ตรวจสอบข้อผิดพลาดของฮาร์ดแวร์ (ส่งคืนโดย TLE94112LE)
  3. หากมีข้อมูลอนุกรมให้แยกวิเคราะห์คำสั่ง

parseCommand (คำสั่งสตริง)

ฟังก์ชันการแยกวิเคราะห์จะตรวจสอบสตริงที่มาจากอนุกรม และเมื่อคำสั่งเป็นที่รู้จัก คำสั่งนั้นจะถูกประมวลผลทันที

ทุกคำสั่งทำหน้าที่เป็นเครื่องสถานะที่ส่งผลกระทบต่อพารามิเตอร์บางอย่างของระบบ ตามตรรกะนี้ คำสั่งทั้งหมดจะลดลงเหลือสามการดำเนินการตามลำดับ:

  1. ส่งคำสั่งไปยังคลาส FilamentWeight (คำสั่งน้ำหนัก) หรือไปยังคลาส MotorControl (คำสั่งมอเตอร์)
  2. ดำเนินการคำนวณเพื่ออัปเดตค่าน้ำหนักหรืออัปเดตพารามิเตอร์ภายในตัวใดตัวหนึ่ง
  3. แสดงบนเทอร์มินัลและเอาต์พุตข้อมูลเมื่อการดำเนินการเสร็จสิ้น

ติดตั้งไลบรารี HX711 Arduino ดาวน์โหลดซอฟต์แวร์จาก GitHub และอัปโหลดไปยังบอร์ด Arduino ของคุณแล้วสนุกได้เลย!

แนะนำ: