جدول المحتويات:
- الخطوة 1: نظام الصندوق الأسود
- الخطوة 2: المكونات
- الخطوة 3: D Flip-Flops
- الخطوة 4: الشروط
- الخطوة 5: القيود
- الخطوة 6: ملف المصدر الرئيسي
- الخطوة 7: التجميع
- الخطوة الثامنة: تحميل البرنامج
فيديو: مصابيح الشوارع ذات الحركة الموفرة للطاقة: 8 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
كان هدفنا من هذا المشروع هو إنشاء شيء من شأنه توفير طاقة المجتمعات ومواردها المالية. ستعمل مصابيح الشوارع التي يتم تنشيطها بالحركة على فعل هذين الأمرين. يتم إهدار الطاقة في جميع أنحاء البلاد على أضواء الشوارع التي تضيء الشوارع الفارغة. يضمن نظام إنارة الشوارع لدينا أن الأضواء تعمل فقط عند الحاجة ، مما يوفر على المجتمعات أموالاً لا حصر لها. باستخدام مستشعرات الحركة ، يقوم النظام بتشغيل الأضواء فقط عند وجود سيارات. أيضًا من أجل سلامة المشاة ، قمنا بتطبيق زر تجاوز يعمل على تشغيل جميع أضواء الشارع. ستوجهك الخطوات التالية إلى كيفية تصميم وبناء نموذجنا المصغر للمشروع باستخدام 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
تعد النتوءات الأربعة المرفقة بإشارات الإدخال ضرورية لوظيفة نظامنا. كما ذكرنا سابقًا ، مع مستشعرات الحركة الحساسة وزر تجاوز ، تستخدم 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. مشروعك اكتمل الآن!
موصى به:
مصابيح LED ذات تأثير مطارد للقلب مثيرة للاهتمام DIY: 8 خطوات (مع صور)
مصابيح LED ذات تأثير مطارد للقلب المثير للاهتمام DIY: يغطي هذا الهيكل كيفية صنع أضواء LED ذات تأثير سحري مذهل لمطاردة حبيبك وأبيك وأمك وزملائك في الفصل وأصدقائك الحميمين. من السهل جدًا بناء هذا طالما أن لديك صبرًا. أوصي بالحصول على بعض الخبرة في اللحام إذا كنت تبني
مصابيح ذات طبقات بإطار خشبي: 10 خطوات (مع صور)
مصابيح ذات طبقات في إطار خشبي: يحتوي هذا الضوء على طبقات من اللوح الخشبي تم قطعها بالليزر ، ثم توضع داخل إطار خشبي. بعض الاستخدامات: استخدمه كمصباح على خزانة الملابس! ضعها على الرف في كابينة تاهو التي تستأجرها لقضاء عطلة نهاية الأسبوع مع الأصدقاء! تعلقها
مصابيح LED للطاقة - أبسط إضاءة بدائرة تيار مستمر: 9 خطوات (بالصور)
Power LED's - أبسط ضوء مع دائرة تيار مستمر: إليك دائرة سائق LED بسيطة وغير مكلفة حقًا (1 دولار). الدائرة عبارة عن & quot؛ مصدر تيار مستمر & quot؛ ، مما يعني أنها تحافظ على ثبات سطوع LED بغض النظر عن مصدر الطاقة الذي تستخدمه أو الظروف البيئية المحيطة
عداد دوران وعاء الدم باستخدام مصابيح LED ذات 7 شرائح: 5 خطوات
عداد دوران BloodBowl باستخدام مصابيح LED ذات 7 مقاطع: كان هذا المشروع مخصصًا لعداد دوران لعبة BloodBowl باستخدام ستة مصابيح LED من 7 شرائح Charlieplexed
منفذ التحكم في الحركة - من ضوء استشعار الحركة: 6 خطوات
منفذ التحكم في الحركة - من ضوء استشعار الحركة: & nbsp؛ تخيل أنك خدعة أو مخلص تذهب إلى أكثر منزل مخيف في المبنى. بعد تجاوز كل الغول والأشباح والمقابر ، تصل أخيرًا إلى المسار الأخير. يمكنك رؤية الحلوى في وعاء أمامك! ولكن بعد ذلك فجأة