جدول المحتويات:

مصابيح الشوارع ذات الحركة الموفرة للطاقة: 8 خطوات
مصابيح الشوارع ذات الحركة الموفرة للطاقة: 8 خطوات

فيديو: مصابيح الشوارع ذات الحركة الموفرة للطاقة: 8 خطوات

فيديو: مصابيح الشوارع ذات الحركة الموفرة للطاقة: 8 خطوات
فيديو: شاهد ماذا حدث عندما قام رائد فضاء بفرك منشفته ف الفضاء #shorts 2024, شهر نوفمبر
Anonim
مصابيح الشوارع الموفرة للطاقة التي يتم تنشيطها بواسطة الحركة
مصابيح الشوارع الموفرة للطاقة التي يتم تنشيطها بواسطة الحركة

كان هدفنا من هذا المشروع هو إنشاء شيء من شأنه توفير طاقة المجتمعات ومواردها المالية. ستعمل مصابيح الشوارع التي يتم تنشيطها بالحركة على فعل هذين الأمرين. يتم إهدار الطاقة في جميع أنحاء البلاد على أضواء الشوارع التي تضيء الشوارع الفارغة. يضمن نظام إنارة الشوارع لدينا أن الأضواء تعمل فقط عند الحاجة ، مما يوفر على المجتمعات أموالاً لا حصر لها. باستخدام مستشعرات الحركة ، يقوم النظام بتشغيل الأضواء فقط عند وجود سيارات. أيضًا من أجل سلامة المشاة ، قمنا بتطبيق زر تجاوز يعمل على تشغيل جميع أضواء الشارع. ستوجهك الخطوات التالية إلى كيفية تصميم وبناء نموذجنا المصغر للمشروع باستخدام Vivado ولوحة Basys 3.

الخطوة 1: نظام الصندوق الأسود

نظام الصندوق الأسود
نظام الصندوق الأسود

بدأنا هذا المشروع برسم مخطط بسيط للصندوق الأسود. يعرض مخطط الصندوق الأسود ببساطة المدخلات والمخرجات التي يتطلبها نظامنا لإكمال جميع العمليات الضرورية. حاولنا الحفاظ على تصميمنا بسيطًا وأساسيًا قدر الإمكان. تضمنت مدخلات النظام الثلاثة الخاصة بنا ناقلًا من مستشعرات الحركة (4 لنموذجنا المصغر) ، وزر تجاوز المشاة ، ومدخل الساعة. على الجانب الآخر ناتجنا الفردي عبارة عن حافلة من مصابيح LED تمثل أضواء الشوارع الخاصة بنا. بالنسبة لهذا النموذج ، استخدمنا سيناريو لـ 16 مصباحًا للشوارع ببساطة لأن هذا هو الحد الأقصى لعدد مخرجات LED المدمجة في لوحة Basys 3. أخيرًا ، باستخدام هذا الرسم البياني ، تمكنا من إنشاء ملفات مشروع Vivado والمصدر والقيود الخاصة بنا مع المدخلات والمخرجات المناسبة.

الخطوة 2: المكونات

عناصر
عناصر
عناصر
عناصر

في هذه الخطوة ، نتعمق في فحص المكونات التي يتكون منها مخطط الصندوق الأسود. المكون الأول لدينا هو ملف مصدر VHDL يحتوي على D flip-flops. تأخذ D flip-flops ببساطة أي إشارة يتم إدخالها إليها من المستشعرات الموجودة على الحافة الصاعدة للساعة ، وتثبّت هذه البيانات حتى الحافة الصاعدة التالية. هذا يمنع مستشعرات الحركة الحساسة من التسبب في "الوميض" لمصابيح LED الناتجة. أيضًا ، قمنا بوضع D flip-flop واحد على إشارة إدخال الزر للحفاظ على إضاءة LED لمدة 5-7 ثوانٍ بعد الضغط على الزر. قمنا أيضًا بتشغيل هذا من خلال مقسم الساعة.

الكيان clk_div2 هو المنفذ (clk: في std_logic ؛ sclk: خارج std_logic) ؛ نهاية clk_div2 ؛

العمارة my_clk_div من clk_div2 هي

ثابت max_count: عدد صحيح: = (300000000) ؛ إشارة tmp_clk: std_logic: = '0' ؛ start my_div: process (clk، tmp_clk) متغير div_cnt: عدد صحيح: = 0؛ ابدأ إذا (Rising_edge (clk)) ثم إذا (div_cnt = MAX_COUNT) ثم tmp_clk <= not tmp_clk؛ div_cnt: = 0 ؛ آخر div_cnt: = div_cnt + 1 ؛ إنهاء إذا؛ إنهاء إذا؛ sclk <= tmp_clk ؛ إنهاء عملية my_div ؛ إنهاء my_clk_div ؛

المكون الأخير في هذا الرسم البياني هو ملف مصدر VHDL سلوكي يحتوي على شروط للمخرجات بناءً على تكوين إشارات الإدخال.

الخطوة 3: D Flip-Flops

شبشب D
شبشب D

تعد النتوءات الأربعة المرفقة بإشارات الإدخال ضرورية لوظيفة نظامنا. كما ذكرنا سابقًا ، مع مستشعرات الحركة الحساسة وزر تجاوز ، تستخدم flip-flops المزالج لإخراج إشارة الإدخال الخاصة بنا فقط على الحافة الصاعدة للساعة. يعني هذا المنطق المتسلسل أن أضواء الشوارع الخاصة بنا يمكن أن تظل مضاءة لفترة زمنية محددة بعد أن يتم تشغيلها بواسطة حركة سريعة. ترميز D-Flip Flop بسيط جدًا:

startprocess (CLK) تبدأ في حالة ارتفاع الحواف (CLK) ثم Q <= D ؛ إنهاء إذا؛ إنهاء العملية؛

يمكن تجميع كل شيء في عبارة if واحدة. بمجرد أن نحصل على هذه القطعة ، أنشأنا ملف مصدر VHDL هيكلي يحتوي على جميع النتوءات الأربعة الضرورية لدينا:

بدء DFF0: خريطة منفذ DFF (CLK => CLK ، D => D (0) ، Q => Q (0)) ؛ DFF1: خريطة منفذ DFF (CLK => CLK ، D => D (1) ، Q => Q (1)) ؛ DFF2: خريطة منفذ DFF (CLK => CLK ، D => D (2) ، Q => Q (2)) ؛ DFF3: خريطة منفذ DFF (CLK => CLK ، D => D (3) ، Q => Q (3)) ؛

نهاية السلوك

يساعد ذلك في الحفاظ على ملفنا الإنشائي الرئيسي حيث نجمع جميع مكونات النظام معًا بشكل أكثر نظافة وتنظيمًا.

الخطوة 4: الشروط

من أجل الحفاظ على الكود الخاص بنا مضغوطًا وفعالًا ، كتبنا جميع الشروط الشرطية في بيان حالة واحد. بالنسبة لنموذجنا المصغر ، كان لدينا 16 تكوينًا ممكنًا لإخراج LED حيث أن كل مستشعر حركة مسؤول عن مجموعة من 4 مصابيح LED.:

حالة NMS هي عندما يكون "1111" => LED LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111" ؛ حالة النهاية

الخطوة 5: القيود

من أجل تحديد المدخلات والمخرجات بشكل صحيح باستخدام Vivado ، يجب عليك تنفيذ ملف قيد يوضح جميع المنافذ والأزرار ومصابيح LED والساعات المستخدمة.

set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]

set_property PACKAGE_PIN U16 [get_ports {LED [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [0]}] set_property PACKAGE_PIN E19 [get_ports {LED [1]}] set_property IOSTANDARD LVCMOS33 [get_ports set {LED_Pert}} U19 [get_ports {LED [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [2]}] set_property PACKAGE_PIN V19 [get_ports {LED [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [3]}] set_Property PACKAGE [get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [4]}] set_property PACKAGE_PIN U15 [get_ports {LED [5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [5]}] set_property PACKAGE_ports {U14 LED [6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [6]}] set_property PACKAGE_PIN V14 [get_ports {LED [7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [7]}] set_ports PACKAGE_PIN {V13 [get_ports 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARD LVCMOS33 [get_ports {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [10]}] set_property PACKAGE_PIN U3 [get_ports {LED [11]} setAND_property [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_property IOSTANDARD [LVCM33 {LED [13]}] set_property PACKAGE_PIN P1 [get_ports {LED [14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [14]}] set_property PACKAGE_PIN L1 [get_ports {LED [15]}] set_property IOSTANDARD LVCMOS33 [get_property IOSTANDARD LVCMOS33] [15]}]

set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]

set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVACKCMOS33 [get_ports set {MS_Pert} B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [3]}]

الخطوة 6: ملف المصدر الرئيسي

في هذا الملف الرئيسي ، نجمع جميع ملفات المصدر المكونة المذكورة سابقًا. يعمل هذا الملف كرمز هيكلي يجمع المكونات المتباينة معًا.

الكيان Master_Final_Project هو المنفذ (BTN: في STD_LOGIC ؛ CLK: في STD_LOGIC ؛ MS: في STD_LOGIC_VECTOR (3 أسفل إلى 0) ؛ LED: خارج STD_LOGIC_VECTOR (15 أسفل حتى 0)) ؛ إنهاء Master_Final_Project ؛

السلوك المعماري لـ Master_Final_Project هو

المكون final_project هو المنفذ (--CLK: في STD_LOGIC ؛ NMS: في STD_LOGIC_VECTOR (3 أسفل إلى 0) ؛ BTN: في STD_LOGIC ؛ - sw: في STD_LOGIC_Vector (1 أسفل إلى 0) ؛ LED: خارج STD_LOGIC_VECTOR (15 أسفل إلى 0)) ؛ المكون النهائي

المكون Final_DFF هو

المنفذ (CLK: في STD_LOGIC ؛ D: في STD_LOGIC_Vector (3 أسفل إلى 0) ؛ Q: إخراج STD_LOGIC_Vector (3 أسفل إلى 0)) ؛ المكون النهائي

إشارة DFF02proj30: STD_LOGIC ؛

إشارة DFF12proj74: STD_LOGIC ؛ إشارة DFF22proj118: STD_LOGIC ؛ إشارة DFF32proj1512: STD_LOGIC ؛

يبدأ

DFF0: خريطة منفذ Final_DFF (CLK => CLK، D (0) => MS (0)، D (1) => MS (1)، D (2) => MS (2)، D (3) => MS (3)، Q (0) => DFF02proj30، Q (1) => DFF12proj74، Q (2) => DFF22proj118، Q (3) => DFF32proj1512) ؛ Proj0: final_project port map (NMS (0) => DFF02proj30، NMS (1) => DFF12proj74، NMS (2) => DFF22proj118، NMS (3) => DFF32proj1512، BTN => BTN، LED => LED) ؛ نهاية السلوك

الخطوة 7: التجميع

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم

تجميع الأجهزة لهذا المشروع ضئيل. القطع المطلوبة فقط هي كما يلي:

1. لوحة Basys 3 (1)

2. مستشعرات الحركة الرخيصة التي يمكن العثور عليها على موقع أمازون هنا. (4)

3. خيوط من ذكر لأنثى (4)

المجسم:

1. قم بتوصيل 4 خيوط ذكور بمنافذ JB رأس PMod 1-4 (انظر الشكل).

2. قم بتوصيل الأطراف الأنثوية بكل دبوس إخراج جهاز استشعار الحركة.

الخطوة الثامنة: تحميل البرنامج

نحن الآن جاهزون لتحميل الملف المصدر الرئيسي لـ VHDL إلى لوحة Basys 3. تأكد من تشغيل التوليف والتنفيذ وإنشاء فحص تدفق البتات بحثًا عن أي أخطاء محتملة. إذا تم تشغيل كل شيء بنجاح ، افتح مدير الأجهزة وقم ببرمجة جهاز Basys 3. مشروعك اكتمل الآن!

موصى به: