สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: ทำความเข้าใจการออกแบบ
- ขั้นตอนที่ 3: การเข้ารหัส VHDL
- ขั้นตอนที่ 4: การเข้ารหัส Arduino
- ขั้นตอนที่ 5: การเดินสายฮาร์ดแวร์
วีดีโอ: ตัวตรวจจับประสิทธิภาพการใช้เชื้อเพลิง: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
โดย: Danica Fujiwara และ William McGrouther
รถยนต์เป็นโหมดการขนส่งหลักในโลกปัจจุบัน โดยเฉพาะในแคลิฟอร์เนีย เราถูกล้อมรอบด้วยถนน ทางหลวง และถนนที่เก็บค่าผ่านทางซึ่งมีรถยนต์หลายพันคันที่ขับผ่านทุกวัน อย่างไรก็ตาม รถยนต์ใช้ก๊าซและแคลิฟอร์เนียใช้น้ำมันเบนซินมากที่สุดกว่ารัฐอื่นๆ ในสหรัฐอเมริกา ประมาณ 4, 500 แกลลอนต่อวัน สำหรับโครงการ CPE 133 Final ของเรา เราตัดสินใจสร้างระบบที่สามารถติดตามความเร็วของรถยนต์และบอกได้ว่าความเร็วนั้นเกินความเร็วที่มีประสิทธิภาพที่สุดสำหรับระยะการใช้น้ำมันหรือประหยัดน้ำมันที่ดีที่สุดหรือไม่ โครงการนี้จะช่วยให้ผู้ขับขี่ตระหนักถึงการประหยัดเชื้อเพลิง ซึ่งหวังว่าจะช่วยให้พวกเขาประหยัดเงิน ใช้ก๊าซน้อยลง และสร้างมลภาวะในอากาศน้อยลง
ขั้นตอนที่ 1: วัสดุ
วัสดุที่จำเป็นสำหรับโครงการนี้:
- พื้นฐาน 3 FPGA
- Arduino Uno
- เขียงหั่นขนม
- Adafruit BNO055 Absolute Orientation Sensor
- สายชายกับชาย
ขั้นตอนที่ 2: ทำความเข้าใจการออกแบบ
ไฟไนต์สเตทไดอะแกรม
โปรเจ็กต์นี้มีสถานะต่างกันสองสถานะภายในไดอะแกรมสถานะจำกัดที่แสดงด้านบน ไฟสามารถเปิดได้ (แสดงโดย '1') หรือปิด (แสดงโดย '0') สถานะจะเปลี่ยนขึ้นอยู่กับอินพุตของความเร็วในการติดตาม (ts) และความเร็วคงที่ที่เหมาะสมที่สุด
ไดอะแกรมกล่องดำ
ด้านบนยังมีไดอะแกรมกล่องดำของโมดูล Fuel Efficiency ที่มีแผนผังของตัวเปรียบเทียบความเร็วและหน้าจอ Seven Segment ที่จะกล่าวถึงต่อไปด้านล่าง รหัส VHDL นี้รับอินพุต 8 บิตจากการวัดความเร่งที่เชื่อมต่อกับ Arduino
ขั้นตอนที่ 3: การเข้ารหัส VHDL
สำหรับโครงการนี้มีไฟล์ VHDL สามไฟล์ที่สร้างการออกแบบของเรา โมดูล Fuel_Efficiency_FinalProject โมดูล Speed_Comparator และโมดูล sseg_dec โดยที่ Speed_Comparator และ sseg_dec อยู่ที่ระดับล่างเพื่อประกอบเป็นโมดูล Fuel Efficiency
โมดูลเปรียบเทียบความเร็ว
โมดูลนี้ใช้ความเร็ว 8 บิตในหน่วยไมล์ต่อชั่วโมง และเปรียบเทียบกับความเร็วที่เหมาะสมที่สุดสำหรับปริมาณการใช้ก๊าซน้อยที่สุด ความเร็วเฉลี่ยที่เหมาะสมที่สุดสำหรับระยะน้ำมันที่ดีที่สุดของรถยนต์คือประมาณ 55 ไมล์ต่อชั่วโมงหรือต่ำกว่า อย่างไรก็ตาม สิ่งนี้อาจแตกต่างกันไปในแต่ละรถยนต์ ซึ่งสามารถปรับแต่งได้ภายในโมดูล บรรทัดที่ 45 ของรหัสที่สามารถเปลี่ยนแปลงได้สำหรับการเพิ่มประสิทธิภาพส่วนบุคคลแสดงอยู่ด้านล่าง
ถ้า (ติดตาม > "00110111") แล้ว
โดยที่ “00110111” (55 ในรูปแบบไบนารี) สามารถเปลี่ยนเป็นตัวเลข 8 บิตใดๆ ก็ได้ สำหรับความเร็วในอุดมคติของรถยนต์ส่วนบุคคลของคุณ โดยจะสิ้นเปลืองเชื้อเพลิงน้อยที่สุด
หากความเร็วเกินจำนวนที่เหมาะสม ไฟจะสว่างขึ้นเพื่อแจ้งว่ารถไม่ได้ใช้เชื้อเพลิงอย่างมีประสิทธิภาพสูงสุด
โมดูลแสดงผลเจ็ดส่วน
โมดูลนี้ใช้ความเร็ว 8 บิตในหน่วยไมล์ต่อชั่วโมง และแสดงความเร็วบนจอแสดงผลเจ็ดส่วน สิ่งนี้จะช่วยให้ผู้ใช้รู้ว่าพวกเขาจะรู้ได้เร็วแค่ไหนว่าเขาหรือเธอต้องการที่จะช้าลง โมดูลนี้มอบให้เราในชั้นเรียนของเราและเขียนโดย Bryan mealy ที่มีส่วนประกอบ bin2bcdconv ซึ่งแปลงอินพุตไบนารี 8 บิตเป็นรูปแบบ BCD ที่ง่ายต่อการถอดรหัสและ clk_div เพื่อให้จอแสดงผลสามารถแสดงตัวเลขด้วยสายตาได้ 3 หลัก โดยการเปลี่ยนเอาท์พุตขั้วบวกที่ความถี่สัญญาณนาฬิกาสูง รหัสนี้ยอมรับตัวเลข 8 บิตเพื่อแปลงตัวเลขเป็นจอแสดงผลที่อ่านได้บนบอร์ด basy 3
โมดูลประสิทธิภาพการใช้เชื้อเพลิง
นี่คือไฟล์หลักที่ใช้โมดูลด้านบนเป็นส่วนประกอบ ปัจจัยการผลิตคือนาฬิกาและความเร็วในการติดตาม นาฬิกาถูกสร้างขึ้นภายในบอร์ด basy 3 และความเร็วในการติดตามนั้นมาจากเอาต์พุตของ Arduino ซึ่งเชื่อมต่อกับพอร์ตสัญญาณอนาล็อก pmod (XADC) ความเร็วในการติดตาม 8 บิตแต่ละบิตจะจับคู่กับพอร์ตที่แสดงในส่วนการเดินสายในขั้นตอนที่ 4 ข้อจำกัดอื่นๆ ของ Basy 3 สามารถพบได้ใน Basys_3_Master.xdc
ขั้นตอนที่ 4: การเข้ารหัส Arduino
โปรเจ็กต์นี้ใช้ไฟล์ Arduino หลักหนึ่งไฟล์ที่ต้องใช้ไลบรารีหลายตัว ซึ่งบางไฟล์มีอยู่แล้วในโปรแกรม Arduino ของคุณ และบางไฟล์ต้องดาวน์โหลดจากเว็บไซต์ Adafruit (ลิงก์ด้านล่าง)
ห้องสมุด
ลิ้งไปหน้า Adafruit BNO055:
Adafruit ได้พัฒนาห้องสมุด 2 แห่งเพื่อใช้ BNO055 และให้ตัวอย่างวิธีใช้งาน ในโครงการนี้ เราจะใช้ฟังก์ชัน.getVector เพื่อให้ Arduino ส่งออกข้อมูลของมาตรความเร่ง
โปรเจ็กต์นี้ยังใช้ไลบรารีบางตัวที่ติดตั้งไว้แล้วในโปรแกรม Arduino เช่น ไลบรารีคณิตศาสตร์
ไฟล์หลัก
ไฟล์นี้ใช้ข้อมูลมาตรความเร่งจากฟังก์ชัน.getVector และใช้สมการทางคณิตศาสตร์เพื่อเปลี่ยนเป็นความเร็วเป็นไมล์ต่อชั่วโมง จากนั้นจึงส่งออกข้อมูล 8 บิตไปยัง Basys 3 (ดูหัวข้อ "การเดินสายฮาร์ดแวร์" สำหรับข้อมูลเพิ่มเติม ข้อมูล).
ขั้นตอนที่ 5: การเดินสายฮาร์ดแวร์
การเดินสายไฟ Arduino
Arduino ควรต่อสายเข้ากับเขียงหั่นขนมเหมือนในภาพด้านบน
สายไฟพื้นฐาน 3
เอาต์พุตของ Arduino ถูกแมปกับอินพุตของ Basys 3 ผ่านพอร์ต JXADC สัญญาณอนาล็อก pmod แต่ละบิตของความเร็วในการติดตาม 8 บิตสามารถเชื่อมต่อกับหมุดตัวใดตัวหนึ่งที่แสดงในภาพด้านบน บิตที่มีนัยสำคัญน้อยที่สุด (พินดิจิทัล 7) เชื่อมต่อกับ ts(7) และบิตที่สำคัญที่สุด (พินดิจิทัล 0) เชื่อมต่อกับ ts(0)
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง