สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: เริ่มต้นการเข้ารหัส
- ขั้นตอนที่ 3: ไฟล์ข้อจำกัด
- ขั้นตอนที่ 4: ไฟล์ Flip Flop
- ขั้นตอนที่ 5: ไฟล์เซ็กเมนต์
- ขั้นตอนที่ 6: ไฟล์ตัวแบ่งนาฬิกา
- ขั้นตอนที่ 7: ไฟล์สัญญาณเซอร์โว
- ขั้นตอนที่ 8: ไฟล์เซอร์โวบนสุด
- ขั้นตอนที่ 9: ไฟล์ยอดนิยม
- ขั้นตอนที่ 10: การทดสอบใน Vivado
- ขั้นตอนที่ 11: การสร้างข้อมูลเบื้องต้นเกี่ยวกับฮาร์ดแวร์
- ขั้นตอนที่ 12: เตรียม
- ขั้นตอนที่ 13: การบัดกรี
- ขั้นตอนที่ 14: ตอนจบ
วีดีโอ: เครื่องคัดแยกขยะ CPE 133: 14 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สำหรับคลาส CPE 133 ของเราที่ Cal Poly เราได้รับคำสั่งให้สร้างโครงการ VHDL/Basys 3 ที่จะช่วยสิ่งแวดล้อมและเรียบง่ายเพียงพอที่เราจะนำไปใช้ด้วยความรู้ใหม่เกี่ยวกับการออกแบบดิจิทัล แนวคิดเบื้องหลังโครงการของเราที่โดยทั่วไปแล้ว ผู้คนไม่คิดว่าจะทิ้งขยะไว้ที่ใด เราตัดสินใจสร้างเครื่องจักรที่จะบังคับผู้คนให้นึกถึงที่ที่พวกเขาทิ้งขยะ เครื่องคัดแยกขยะของเราจะป้อนข้อมูลของผู้ใช้ผ่านสวิตช์สามตัว โดยแต่ละตัวจะแทนถังขยะ การรีไซเคิล หรือปุ๋ยหมัก เมื่อผู้ใช้เลือกแล้ว ให้ระบุประเภทของขยะที่ต้องการทิ้งโดยกดปุ่ม ปุ่มนี้จะทำให้ฝาภาชนะที่เกี่ยวข้องเปิดขึ้น เครื่องยังใช้จอแสดงผลบน Basy 3 เพื่อระบุว่ามีฝาใดเปิดอยู่หรือไม่ เมื่อปล่อยปุ่ม ฝาปิดจะปิดอีกครั้งเพื่อให้เครื่องพร้อมสำหรับผู้ใช้รายต่อไป
ขั้นตอนที่ 1: วัสดุ
วัสดุที่จำเป็นสำหรับโครงการนี้คือ:
บอร์ดพื้นฐาน 3 ตัว
คอมพิวเตอร์ที่ติดตั้ง Vivado
3x เซอร์โว*
ลวดทองแดง 3 ฟุต
เครื่องตัด/ปอกสายไฟ
หัวแร้งและหัวแร้ง
*เนื่องจากเซอร์โวมีราคาแพงและเราเป็นนักศึกษา เราจึงเปลี่ยนตัวต้านทาน 68 โอห์มและ LED สำหรับเซอร์โวแต่ละตัวเป็นต้นแบบ (โค้ดทำงานในลักษณะเดียวกัน)
ขั้นตอนที่ 2: เริ่มต้นการเข้ารหัส
มีโค้ดจำนวนมากที่ต้องเขียนสำหรับโครงการนี้ เราจะใช้โค้ด VHDL ที่เขียนด้วย Vivado ในการเริ่มต้นเราต้องการสร้างโครงการใหม่ ขั้นแรก คุณจะต้องตั้งชื่อโครงการและระบุประเภทโครงการ อย่าลืมเลือกการตั้งค่าเดียวกับภาพ เมื่อคุณไปที่หน้าจอต้นทางแล้ว คุณจะต้องเพิ่มแหล่งข้อมูล 6 แหล่งชื่อ "top", "flip_flop", "segments", "servo_top", "servo_sig" และ "clk_div" อย่าลืมเลือก VHDL เป็นภาษาของแต่ละไฟล์ ไม่ใช่ Verilog ในหน้าจอข้อจำกัด คุณควรสร้างไฟล์หนึ่งไฟล์สำหรับการกำหนดพิน ชื่อของไฟล์นี้ไม่สำคัญ จากนั้นคุณจะได้รับแจ้งให้เลือกบอร์ดที่คุณจะใช้ ตรวจสอบให้แน่ใจว่าคุณเลือกรายการที่ถูกต้อง รูปภาพอ้างอิงสำหรับการเลือกที่ถูกต้อง ขั้นตอนสุดท้ายจะขอให้คุณระบุอินพุตและเอาต์พุตของไฟล์ต้นฉบับแต่ละไฟล์ ขั้นตอนนี้สามารถเข้ารหัสได้ในภายหลังดังนั้นคลิกถัดไป
ขั้นตอนที่ 3: ไฟล์ข้อจำกัด
ในขั้นตอนนี้ เราจะเขียนไฟล์ข้อ จำกัด สิ่งนี้จะบอก Vivado ว่าพินใดจะส่ง/รับซึ่งสัญญาณจากวงจร เราต้องการนาฬิกา สวิตช์สามตัว จอแสดงผลเจ็ดส่วน (แคโทดเจ็ดตัวและแอโนดสี่ตัว) ปุ่มและพิน PMOD เอาต์พุตสามตัวที่เซอร์โว/LED จะใช้ รูปภาพอ้างอิงว่าโค้ดควรมีลักษณะอย่างไร
ขั้นตอนที่ 4: ไฟล์ Flip Flop
ไฟล์ต่อไปที่เราจะเขียนคือไฟล์ต้นฉบับ flip_flip นี่จะเป็นการใช้งาน VHDL ของ D flip flop กล่าวอีกนัยหนึ่งก็คือจะส่งผ่านอินพุตไปยังเอาต์พุตที่ขอบที่เพิ่มขึ้นของสัญญาณนาฬิกาและเมื่อกดปุ่มเท่านั้น จะใช้นาฬิกา D และปุ่มเป็นอินพุตและจะส่งออก Q. อ้างอิงรูปภาพสำหรับรหัส จุดประสงค์ของไฟล์นี้คือเพื่อให้ถังขยะเปิดได้เฉพาะเมื่อกดปุ่มเท่านั้น แทนที่จะเปิดโดยตรงในแต่ละครั้งที่สวิตช์ถูกพลิก และปิดเมื่อสวิตช์กลับด้านเท่านั้น
ขั้นตอนที่ 5: ไฟล์เซ็กเมนต์
ไฟล์ถัดไปที่จะเขียนคือไฟล์เซกเมนต์ การดำเนินการนี้จะใช้ปุ่มเช่นเดียวกับค่าอินพุตและเอาต์พุตสำหรับแคโทดทั้งเจ็ดและแอโนดสี่ตัวของจอแสดงผลเจ็ดเซกเมนต์ของ Basys 3 ไฟล์นี้ทำให้การแสดงเจ็ดเซ็กเมนต์แสดง "C" เมื่อปิดถังขยะและ "O" เมื่อเปิดถังขยะ รหัสดูรูปภาพที่แนบมา
ขั้นตอนที่ 6: ไฟล์ตัวแบ่งนาฬิกา
เซอร์โวทำงานโดยใช้สัญญาณ PWM ที่มีความถี่ 64k Hz ในขณะที่นาฬิกาติดตั้งอยู่ในฟังก์ชัน Basy 3 ที่ 50M Hz ไฟล์ตัวแบ่งนาฬิกาจะแปลงนาฬิกาเริ่มต้นเป็นความถี่ที่เป็นมิตรสำหรับเซอร์โว ไฟล์จะนำนาฬิกาและสัญญาณรีเซ็ตเป็นอินพุตและจะส่งสัญญาณนาฬิกาใหม่ ดูภาพที่แนบมาสำหรับรหัส
ขั้นตอนที่ 7: ไฟล์สัญญาณเซอร์โว
ไฟล์สัญญาณเซอร์โวจะรับอินพุตนาฬิกา อินพุตรีเซ็ต และอินพุตตำแหน่งที่ต้องการ มันจะส่งสัญญาณ PWM ที่จะขับเซอร์โวไปยังตำแหน่งที่ต้องการ ไฟล์นี้ใช้สัญญาณนาฬิกาที่สร้างขึ้นในไฟล์สุดท้ายเพื่อสร้างสัญญาณ PWM สำหรับเซอร์โวที่มีรอบการทำงานที่แตกต่างกันขึ้นอยู่กับตำแหน่งที่ต้องการ ทำให้เราสามารถหมุนเซอร์โวที่ควบคุมฝาถังขยะได้ ดูภาพที่แนบมาสำหรับรหัส
ขั้นตอนที่ 8: ไฟล์เซอร์โวบนสุด
จุดประสงค์ของไฟล์นี้คือเพื่อคอมไพล์ไฟล์สองไฟล์สุดท้ายลงในไดรเวอร์เซอร์โวที่ใช้งานได้ มันจะใช้เวลานาฬิกา การรีเซ็ต และตำแหน่งเป็นอินพุต และจะส่งสัญญาณเซอร์โว PWM จะใช้ทั้งตัวแบ่งนาฬิกาและไฟล์สัญญาณเซอร์โวเป็นส่วนประกอบ และจะรวมสัญญาณนาฬิกาภายในเพื่อส่งนาฬิกาที่ปรับเปลี่ยนจากตัวแบ่งนาฬิกาไปยังไฟล์สัญญาณเซอร์โว ดูรูปได้ที่
ขั้นตอนที่ 9: ไฟล์ยอดนิยม
นี่เป็นไฟล์ที่สำคัญที่สุดของโครงการ เนื่องจากเป็นการรวมทุกสิ่งที่เราสร้างขึ้นมาไว้ด้วยกัน มันจะใช้ปุ่ม สวิตช์สามตัว และนาฬิกาเป็นอินพุต มันจะให้แคโทดเจ็ดตัว แอโนดสี่ตัว และสัญญาณเซอร์โว/ไฟ LED สามตัวเป็นเอาต์พุต จะใช้ไฟล์ flip flop, segment และ servo_top เป็นส่วนประกอบ และจะมีสวิตช์ภายในและสัญญาณเซอร์โวภายใน
ขั้นตอนที่ 10: การทดสอบใน Vivado
เรียกใช้การสังเคราะห์ ใช้งาน และเขียน bitsream ใน Vivado หากคุณพบข้อความแสดงข้อผิดพลาด ให้ค้นหาตำแหน่งข้อผิดพลาดแล้วเปรียบเทียบกับรหัสที่กำหนด แก้ไขข้อผิดพลาดใดๆ จนกว่าการรันทั้งหมดจะเสร็จสิ้น
ขั้นตอนที่ 11: การสร้างข้อมูลเบื้องต้นเกี่ยวกับฮาร์ดแวร์
ในขั้นตอนนี้ คุณจะต้องสร้างฮาร์ดแวร์ LED ที่เราใช้ในต้นแบบของเรา หากใช้เซอร์โว โปรเจ็กต์ควรพร้อมใช้งานตราบใดที่ใช้พินที่ถูกต้อง หากใช้ LED ให้ทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 12: เตรียม
ตัดลวดออกเป็นหกส่วนเท่า ๆ กัน ดึงปลายลวดแต่ละชิ้นออกให้เพียงพอเพื่อให้เกิดการบัดกรี แยก LED ตัวต้านทานและสายไฟออกเป็นสามกลุ่ม อุ่นหัวแร้ง
ขั้นตอนที่ 13: การบัดกรี
ประสานตัวต้านทาน 68 โอห์มแต่ละตัวกับด้านลบของ LED ที่สอดคล้องกัน บัดกรีลวดเข้ากับด้านบวกของ LED และลวดอีกเส้นที่ด้านข้างของตัวต้านทานที่ไม่ได้บัดกรีกับไฟ LED คุณควรมี LED contraptions สามตัวดังภาพด้านบน
ขั้นตอนที่ 14: ตอนจบ
ใส่สายบวกแต่ละเส้นลงในพิน PMOD ที่สอดคล้องกันและแต่ละขั้วลบลงในพิน PMOD กราวด์ เลือกที่จะเพิ่มถังขยะกระดาษแข็งเพื่อเป็นตัวแทนของถังขยะและซ่อนความยุ่งเหยิงในการบัดกรีของคุณ เมื่อเสียบสายไฟอย่างถูกต้องและอัปโหลดโค้ดไปยังบอร์ดอย่างถูกต้องโดยไม่มีข้อผิดพลาด เครื่องควรทำงานตามที่ตั้งใจไว้ หากมีสิ่งใดผิดพลาด ให้กลับไปที่ขั้นตอนก่อนหน้าเพื่อแก้ไขปัญหา ขอให้สนุกกับ "เครื่องคัดแยกขยะ" ใหม่ของคุณ