สารบัญ:

Sorter Bin - ตรวจจับและจัดเรียงถังขยะของคุณ: 9 ขั้นตอน
Sorter Bin - ตรวจจับและจัดเรียงถังขยะของคุณ: 9 ขั้นตอน

วีดีโอ: Sorter Bin - ตรวจจับและจัดเรียงถังขยะของคุณ: 9 ขั้นตอน

วีดีโอ: Sorter Bin - ตรวจจับและจัดเรียงถังขยะของคุณ: 9 ขั้นตอน
วีดีโอ: นอนโลงศพ ⚰️ 2024, กรกฎาคม
Anonim
Image
Image
มันทำงานอย่างไร
มันทำงานอย่างไร

คุณเคยเห็นคนที่ไม่รีไซเคิลหรือทำในทางที่ไม่ดีหรือไม่?

คุณเคยต้องการเครื่องจักรที่จะรีไซเคิลให้คุณหรือไม่?

อ่านโครงการของเราต่อไป คุณจะไม่เสียใจ!

Sorter bin เป็นโครงการที่มีแรงจูงใจที่ชัดเจนในการช่วยรีไซเคิลในโลก ดังที่ทราบกันดีว่า การขาดการรีไซเคิลทำให้เกิดปัญหาร้ายแรงในโลกของเรา เช่น การหายไปของวัตถุดิบและการปนเปื้อนในทะเล เป็นต้น

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

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

ในหัวข้อถัดไป โครงการนี้จะอธิบายทีละขั้นตอน

ขั้นตอนที่ 1: มันทำงานอย่างไร

มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร

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

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

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

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

ขั้นตอนที่ 2: รายการวัสดุ (BOM)

ชิ้นส่วนเครื่องกล:

  • ซื้อชิ้นส่วนสำหรับโครงสร้างด้านล่าง

    • โครงสร้างเมทัลลิก [Link]
    • กล่องสีเทา [Link]
  • เครื่องพิมพ์ 3 มิติ

    PLA สำหรับชิ้นส่วนที่พิมพ์ทั้งหมด (สามารถใช้วัสดุอื่นได้ เช่น ABS)

  • เครื่องตัดเลเซอร์

    • MDF 3mm
    • ลูกแก้ว 4mm
  • ชุดตลับลูกปืนเชิงเส้น [Link]
  • ลิเนียร์แบริ่ง [Link]
  • เพลา [Link]
  • ตัวจับเพลา (x2) [Link]

ชิ้นส่วนอิเล็กทรอนิกส์:

  • เครื่องยนต์

    ลิเนียร์สเต็ปเปอร์มอเตอร์ Nema 17 [Link]

  • แบตเตอรี่

    แบตเตอรี่ 12 v [Link]

  • เซนเซอร์

    • 2 เซ็นเซอร์อัลตราโซนิก HC-SR04 [ลิงก์]
    • 2 เซ็นเซอร์อุปนัย LJ30A3-15 [Link]
  • ไมโครคอนโทรลเลอร์

    1 บอร์ด Arduino UNO

  • ส่วนประกอบเพิ่มเติม

    • ไดร์เวอร์ DRV8825
    • ไฟ LED 3 ดวง: แดง เขียว และส้ม
    • 1 ปุ่ม
    • สายกระโดด สายไฟ และแผ่นบัดกรี
    • เขียงหั่นขนม
    • สาย USB (การเชื่อมต่อ Arduino-PC)
    • ตัวเก็บประจุ: 100uF

ขั้นตอนที่ 3: การออกแบบเครื่องกล

Image
Image
การออกแบบเครื่องกล
การออกแบบเครื่องกล
การออกแบบเครื่องกล
การออกแบบเครื่องกล

ในรูปก่อนหน้านี้แสดงทุกส่วนของการประกอบ

สำหรับการออกแบบเชิงกลนั้น SolidWorks ถูกใช้เป็นโปรแกรม CAD ชิ้นส่วนต่างๆ ของชุดประกอบได้รับการออกแบบโดยคำนึงถึงวิธีการผลิตที่จะผลิตชิ้นส่วนต่างๆ

ชิ้นส่วนตัดด้วยเลเซอร์:

  • MDF 3mm

    • เสาหลัก
    • จานบน
    • รองรับเซ็นเซอร์อัลตราโซนิก
    • รองรับเซ็นเซอร์อุปนัย
    • ถังขยะ
    • รองรับแบตเตอรี่
    • รองรับ Breadboard และ Arduino
  • ลูกแก้ว 4mm

    แพลตฟอร์ม

ชิ้นส่วนที่พิมพ์ 3 มิติ:

  • ฐานเสา
  • องค์ประกอบการส่งผ่านการเคลื่อนไหวเชิงเส้นจากสเต็ปเปอร์มอเตอร์
  • สเต็ปเปอร์มอเตอร์และตัวรองรับแบริ่ง
  • ชิ้นส่วนยึดผนังสำหรับถังขยะ

สำหรับการผลิตชิ้นส่วนเหล่านี้แต่ละส่วน ไฟล์. STEP ควรนำเข้ามาในรูปแบบที่ถูกต้อง ทั้งนี้ขึ้นอยู่กับเครื่องที่จะใช้เพื่อจุดประสงค์นั้น ในกรณีนี้ ไฟล์.dxf ถูกใช้สำหรับเครื่องตัดเลเซอร์และไฟล์.gcode สำหรับเครื่องพิมพ์ 3 มิติ (Ultimaker 2)

การประกอบทางกลของโครงการนี้สามารถพบได้ในไฟล์. STEP ที่แนบมาในส่วนนี้

ขั้นตอนที่ 4: อิเล็กทรอนิกส์ (ตัวเลือกส่วนประกอบ)

ในส่วนนี้ เราจะอธิบายสั้นๆ เกี่ยวกับส่วนประกอบอิเล็กทรอนิกส์ที่ใช้และคำอธิบายเกี่ยวกับตัวเลือกส่วนประกอบ

บอร์ด Arduino UNO (เป็นไมโครคอนโทรลเลอร์):

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

มอเตอร์ (ลิเนียร์สเต็ปเปอร์มอเตอร์ Nema 17):

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

ในการเลือกรุ่น คุณต้องคำนวณแรงบิดสูงสุดที่ต้องการเพิ่มปัจจัยด้านความปลอดภัย เกี่ยวกับผลลัพธ์ เราซื้อแบบจำลองที่ครอบคลุมค่าที่คำนวณได้เป็นส่วนใหญ่

DRV8825 ไดร์เวอร์:

บอร์ดนี้ใช้เพื่อควบคุมสเต็ปเปอร์มอเตอร์แบบไบโพลาร์ มีการควบคุมกระแสไฟที่ปรับได้ซึ่งช่วยให้คุณตั้งค่าเอาต์พุตกระแสสูงสุดด้วยโพเทนชิออมิเตอร์รวมถึงความละเอียดขั้นตอนที่แตกต่างกันหกแบบ: เต็มขั้นตอน ครึ่งขั้นตอน 1/4 ขั้นตอน 1/8 ขั้นตอน 1/16- และ 1/32 สเต็ป (ในที่สุดเราก็ใช้ฟูลสเต็ปเพราะเราไม่พบว่าจำเป็นต้องทำไมโครสเต็ปปิ้งเลย แต่ก็ยังสามารถใช้เพื่อปรับปรุงคุณภาพของการเคลื่อนไหวได้)

เซ็นเซอร์อัลตราโซนิก:

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

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

เซ็นเซอร์อุปนัย:

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

ไฟ LED (เขียว เหลือง แดง):

ภารกิจของพวกเขาคือการสื่อสารกับผู้ใช้:

-ไฟ LED สีเขียวติด: หุ่นยนต์กำลังรอวัตถุ

- ไฟ LED สีแดงติด: เครื่องกำลังทำงาน คุณไม่สามารถโยนวัตถุใดๆ ได้

- ไฟ LED สีเหลืองติด: ตรวจพบวัตถุ

12V แบตเตอรี่ หรือแหล่งพลังงาน 12V + ไฟ USB 5V:

จำเป็นต้องใช้แหล่งจ่ายแรงดันไฟฟ้าเพื่อจ่ายพลังงานให้กับเซ็นเซอร์และสเต็ปเปอร์มอเตอร์ จำเป็นต้องใช้แหล่งพลังงาน 5V เพื่อจ่ายไฟให้กับ Arduino สามารถทำได้โดยใช้แบตเตอรี่ 12V แต่ควรมีแหล่งจ่ายไฟ 5V แยกต่างหากสำหรับ Arduino (เช่น ด้วยสาย USB และอะแดปเตอร์โทรศัพท์ที่เชื่อมต่อกับแหล่งพลังงานหรือกับคอมพิวเตอร์)

ปัญหาที่เราพบ:

  • การตรวจจับเซ็นเซอร์แบบเหนี่ยวนำ เราไม่ได้รับความแม่นยำตามที่ต้องการ เนื่องจากบางครั้งระบบจะไม่รับรู้ตำแหน่งของวัตถุที่เป็นโลหะที่ไม่ดี ทั้งนี้เนื่องมาจากข้อจำกัด 2 ประการ:

    • พื้นที่ที่ครอบคลุมโดยเซ็นเซอร์ภายในแท่นสี่เหลี่ยมมีสัดส่วนน้อยกว่า 50% ของพื้นที่ทั้งหมด (ดังนั้นจึงไม่สามารถตรวจจับวัตถุขนาดเล็กได้) ในการแก้ปัญหานี้ เราขอแนะนำให้ใช้เซ็นเซอร์เหนี่ยวนำ 3 หรือ 4 ตัวเพื่อให้แน่ใจว่าครอบคลุมพื้นที่มากกว่า 70%
    • ระยะการตรวจจับของเซ็นเซอร์ถูกจำกัดไว้ที่ 15 มม. ดังนั้นเราจึงถูกบังคับให้ใช้แพลตฟอร์มลูกแก้วชั้นดี นี่อาจเป็นข้อจำกัดอีกประการหนึ่งในการตรวจจับวัตถุที่มีรูปร่างแปลก ๆ
  • การตรวจจับด้วยคลื่นเสียงความถี่สูง: อีกครั้ง วัตถุที่มีรูปร่างซับซ้อนทำให้เกิดปัญหา เนื่องจากสัญญาณที่ปล่อยออกมาจากเซ็นเซอร์สะท้อนออกมาอย่างไม่ดีและกลับมาช้ากว่าที่ควรจะเป็นกับเซ็นเซอร์
  • แบตเตอรี่: เรามีปัญหาบางอย่างในการควบคุมกระแสไฟที่ส่งมาจากแบตเตอรี่ และเพื่อแก้ปัญหานี้ ในที่สุดเราก็ใช้แหล่งพลังงาน อย่างไรก็ตาม วิธีแก้ปัญหาอื่นๆ เช่น การใช้ไดโอดก็สามารถทำได้

ขั้นตอนที่ 5: อิเล็กทรอนิกส์ (การเชื่อมต่อ)

อิเล็กทรอนิกส์ (การเชื่อมต่อ)
อิเล็กทรอนิกส์ (การเชื่อมต่อ)
อิเล็กทรอนิกส์ (การเชื่อมต่อ)
อิเล็กทรอนิกส์ (การเชื่อมต่อ)

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

ขั้นตอนที่ 6: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

ส่วนนี้จะอธิบายตรรกะการเขียนโปรแกรมที่อยู่เบื้องหลังเครื่อง Bin Sorting

โปรแกรมแบ่งออกเป็น 4 ขั้นตอน ได้แก่

  1. เริ่มต้นระบบ
  2. ตรวจสอบการมีอยู่ของวัตถุ
  3. ตรวจสอบประเภทของวัตถุที่มีอยู่
  4. ย้ายกล่อง

สำหรับคำอธิบายโดยละเอียดของแต่ละขั้นตอน ดูด้านล่าง:

ขั้นตอนที่ 1 เริ่มต้นระบบ

แผงไฟ LED (3) - ตั้งค่า LED ปรับเทียบ (สีแดง) สูง LED พร้อม (สีเขียว) ต่ำ มีวัตถุอยู่ (สีเหลือง) ต่ำ

ตรวจสอบสเต็ปเปอร์มอเตอร์อยู่ที่ตำแหน่งเริ่มต้น

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

    • ตำแหน่งเริ่มต้น == 0 >> อัปเดตค่าของ Ready LED HIGH และ Calibrating LED LOW -> ขั้นตอนที่ 2
    • ตำแหน่งเริ่มต้น != 0 >> ค่าการอ่านแบบดิจิตอลของเซ็นเซอร์อัลตราโซนิกและขึ้นอยู่กับค่าของเซ็นเซอร์:

      • อัพเดทค่าไฟ LED เคลื่อนที่ของมอเตอร์สูง
      • เรียกใช้กล่องย้ายจนกว่าค่าของเซ็นเซอร์อัลตราโซนิกทั้งสองจะ <ค่าเกณฑ์

อัปเดตค่าตำแหน่งเริ่มต้น = 1 >> อัปเดตค่า LED Ready HIGH และมอเตอร์เคลื่อนที่ LOW และ Calibrating LOW >> ขั้นตอนที่ 2

ขั้นตอนที่ 2

ตรวจสอบการมีอยู่ของวัตถุ

เรียกใช้การตรวจจับวัตถุอัลตราโซนิก

  • วัตถุปัจจุบัน == 1 >> อัปเดตค่าของวัตถุปัจจุบัน LED HIGH >> ขั้นตอนที่ 3
  • วัตถุที่มีอยู่ == 0 >> ไม่ต้องทำอะไร

ขั้นตอนที่ 3

ตรวจสอบประเภทของวัตถุที่มีอยู่

เรียกใช้การตรวจจับเซ็นเซอร์อุปนัย

  • inductiveState = 1 >> ขั้นตอนที่ 4
  • inductiveState = 0 >> ขั้นตอนที่ 4

ขั้นตอนที่ 4

ย้ายกล่อง

เรียกใช้การทำงานของมอเตอร์

  • inductiveState == 1

    อัปเดตไฟ LED เคลื่อนที่สูง >> เลื่อนมอเตอร์ไปทางซ้าย (อัปเดตตำแหน่งเริ่มต้น = 0) หน่วงเวลาแล้วถอยกลับทางขวา >> ขั้นตอนที่ 1

  • inductiveState == 0

    อัปเดตไฟ LED เคลื่อนที่สูง >> ให้มอเตอร์เคลื่อนที่ไปทางขวา (อัปเดตตำแหน่งเริ่มต้น = 0) หน่วงเวลาแล้วเลื่อนกลับซ้าย >> ขั้นตอนที่ 1

ฟังก์ชั่น

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

หลังจากขั้นตอนที่ 4 โปรแกรมได้ดำเนินการอย่างสมบูรณ์และจะเปลี่ยนกลับเป็นขั้นตอนที่ 1 ก่อนที่จะรันอีกครั้ง

ฟังก์ชันที่ใช้ในเนื้อหาหลักมีการกำหนดไว้ด้านล่าง

ตามลำดับ:

  • การทดสอบอุปนัย ()
  • moveBox (สถานะอุปนัย)
  • UltrasonicObjectDetection()

// ตรวจสอบว่าวัตถุเป็นโลหะหรือไม่

bool inductiveTest () { if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) { คืนค่าจริง; อื่น { กลับเท็จ; } } โมฆะ moveBox (bool inductiveState) { // กล่องไปทางซ้ายเมื่อตรวจพบโลหะและ inductiveState = จริงถ้า (inductiveState == 0) { stepper.moveTo (ขั้นตอน); // สุ่มตำแหน่งเพื่อสิ้นสุดการทดสอบ stepper.runToPosition(); ล่าช้า (1000); stepper.moveTo(0); stepper.runToPosition(); ล่าช้า (1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // สุ่มตำแหน่งเพื่อสิ้นสุดการทดสอบ stepper.runToPosition(); ล่าช้า (1000); stepper.moveTo(0); // สุ่มตำแหน่งเพื่อสิ้นสุดการทดสอบ stepper.runToPosition(); ล่าช้า (1000); } } UltrasonicObjectDetection บูลีน () { duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // กำหนดจำนวนการวัดที่จะใช้ทางไกล สูงสุด = 0; ทางไกล Min = 4000; ทางไกลรวม = 0; สำหรับ (int i = 0; i distanceMax) { distanceMax = distanceTemp; } ถ้า (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("เซนเซอร์1 maxDistance "); Serial.print (ระยะทางสูงสุด); Serial.println("มม."); Serial.print ("เซนเซอร์1 minDistance "); Serial.print (ระยะทางต่ำสุด); Serial.println("มม."); // ใช้ระยะทางเฉลี่ยจากการอ่านค่า AverageDistance1 = distanceTotal/10; Serial.print ("เซนเซอร์1 averageDistance1 "); Serial.print (averageDistance1); Serial.println("มม."); // ลบค่าการวัดสูงสุดและต่ำสุดเพื่อหลีกเลี่ยงการอ่านค่าที่ผิดพลาด averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); AverageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("เซนเซอร์1 averageDistanceOlympian1 "); Serial.print (averageDistanceOlympian1); Serial.println("มม.");

// รีเซ็ตค่าอุณหภูมิ

ระยะทางรวม = 0; ระยะทางสูงสุด = 0; ระยะทางขั้นต่ำ = 4000; ระยะเวลานาน2, ระยะทาง2, ระยะทางเฉลี่ย2, ระยะทางเฉลี่ยOlympian2; // กำหนดจำนวนการวัดที่จะใช้ (int i = 0; i distanceMax) { distanceMax = distanceTemp; } ถ้า (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("เซนเซอร์2 maxDistance "); Serial.print (ระยะทางสูงสุด); Serial.println("มม."); Serial.print ("เซนเซอร์2 minDistance "); Serial.print (ระยะทางต่ำสุด); Serial.println("มม."); // ใช้ระยะทางเฉลี่ยจากการอ่านค่า AverageDistance2 = distanceTotal/10; Serial.print ("เซนเซอร์2 averageDistance2 "); Serial.print (averageDistance2); Serial.println("มม."); // ลบค่าการวัดสูงสุดและต่ำสุดเพื่อหลีกเลี่ยงการอ่านค่าที่ผิดพลาด averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); AverageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("เซนเซอร์2 averageDistanceOlympian2 "); Serial.print (averageDistanceOlympian2); Serial.println("มม."); // รีเซ็ตค่าอุณหภูมิ distanceTotal = 0; ระยะทางสูงสุด = 0; ระยะทางขั้นต่ำ = 4000; ถ้า (averageDistanceOlympian1 + averageDistanceOlympian2 < emptyBoxDistance) { คืนค่าจริง; } อื่น ๆ { คืนค่าเท็จ; } }

ตัวหลัก

เนื้อหาหลักมีตรรกะเดียวกันกับที่อธิบายไว้ที่ด้านบนของส่วนนี้ แต่เขียนด้วยโค้ด ไฟล์มีให้ดาวน์โหลดด้านล่าง

คำเตือน

มีการทดสอบหลายอย่างเพื่อค้นหาค่าคงที่: emptyBoxDistance, steps และ Maximumspeed และการเร่งความเร็วในการตั้งค่า

ขั้นตอนที่ 7: การปรับปรุงที่เป็นไปได้

การปรับปรุงที่เป็นไปได้
การปรับปรุงที่เป็นไปได้

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

-เนื่องจากปัญหาที่เราพบกับการตรวจจับด้วยคลื่นเสียงความถี่สูง เราสามารถมองหาทางเลือกอื่นสำหรับฟังก์ชันนั้น: KY-008 Laser and Laser Detector (ภาพ) เซ็นเซอร์ capacitive

ขั้นตอนที่ 8: จำกัดปัจจัย

โครงการนี้ทำงานตามที่อธิบายไว้ในคำแนะนำ แต่ต้องใช้ความระมัดระวังเป็นพิเศษในระหว่างขั้นตอนต่อไปนี้:

การสอบเทียบอัลตราโซนิกเซนเซอร์

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

แหล่งพลังงาน

กำลังที่ต้องการสำหรับไดรเวอร์สเต็ปเปอร์มอเตอร์ DRV8825 คือ 12V และระหว่าง 0.2 ถึง 1 แอมป์ Arduino ยังสามารถใช้พลังงานสูงสุด 12V และ 0.2 แอมป์โดยใช้แจ็คอินพุตบน Arduino ต้องใช้ความระมัดระวังเป็นพิเศษ อย่างไรก็ตาม หากใช้แหล่งพลังงานเดียวกันสำหรับทั้ง Arduino และไดรเวอร์สเต็ปเปอร์มอเตอร์ หากใช้พลังงานจากเต้ารับไฟฟ้าทั่วไป เช่น อะแดปเตอร์จ่ายไฟแบบอะแดปเตอร์ AC/DC 12V/2A ควรมีตัวควบคุมแรงดันไฟฟ้าและไดโอดในวงจรก่อนที่ไฟจะถูกส่งไปยังไดรเวอร์ Arduino และสเต็ปเปอร์มอเตอร์

กลับบ้านกล่อง

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

ไดรเวอร์ Stepper DRV8825 Tuning

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

ขั้นตอนที่ 9: เครดิต

โครงการนี้ทำขึ้นโดยเป็นส่วนหนึ่งของหลักสูตรเมคคาทรอนิกส์ระหว่างปีการศึกษา 2018-2019 สำหรับ Bruface Master ที่ Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB)

ผู้เขียนคือ:

Maxime Decleire

ลิเดีย โกเมซ

Markus Poder

Adriana Puentes

Narjisse Snoussi

ขอขอบคุณเป็นพิเศษกับหัวหน้างานของเรา Albert de Beir ที่ช่วยเราตลอดโครงการเช่นกัน

แนะนำ: