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

مستشعر الحركة / الأنوار التي يتم التحكم فيها من خلال العداد: 7 خطوات
مستشعر الحركة / الأنوار التي يتم التحكم فيها من خلال العداد: 7 خطوات

فيديو: مستشعر الحركة / الأنوار التي يتم التحكم فيها من خلال العداد: 7 خطوات

فيديو: مستشعر الحركة / الأنوار التي يتم التحكم فيها من خلال العداد: 7 خطوات
فيديو: حساس الحركه انواعها واستخداماتها وتوصلها عملي 2024, يوليو
Anonim
مستشعر الحركة / أضواء التحكم العداد
مستشعر الحركة / أضواء التحكم العداد

تم إنشاء هذا المشروع كمشروع نهائي لدورة التصميم الرقمي في كال بولي ، سان لويس أوبيسبو (CPE 133).

لماذا نقوم بهذا؟ نريد المساعدة في الحفاظ على الموارد الطبيعية في العالم. يركز مشروعنا على توفير الكهرباء. من خلال توفير المزيد من الكهرباء ، سنكون قادرين على الحفاظ على الموارد الطبيعية المستخدمة لتوليد الكهرباء. مع بداية عام 2018 ، يتم استهلاك الموارد الطبيعية بمعدل لا يصدق. نريد أن نكون مدركين لتأثيرنا على بيئتنا ونلعب دورنا في الحفاظ على الموارد الطبيعية. يمكن تنفيذ الإلكترونيات بطرق مختلفة لتوفير الطاقة مما يساعد البيئة بالإضافة إلى حالتنا الاقتصادية. * تم إنشاء هذا النموذج باستخدام المكونات المتاحة لنا.

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

كيف يمكنك استخدام هذا التصميم يمكن تنفيذ هذا التصميم لجميع أنواع المصابيح ، سواء كانت زخرفية أو عملية أو كليهما. إذا كنت تريد أن يعمل ضوء مكتبك لمدة 6 ساعات فقط في كل مرة ، على سبيل المثال. ستحتاج إلى ضبط العداد على 21 ، 600 ثانية (6 ساعات × 3 ، 600 ثانية / ساعة). بينما يتزايد العداد بنشاط ، يتحكم مستشعر الحركة في الضوء. وبالتالي ، في كل مرة يتم إيقاف تشغيله خلال تلك الفترة الزمنية ، ما عليك سوى تحريك يدك أمام مستشعر الحركة وسيعمل مرة أخرى. إذا نمت على مكتبك واستيقظت بعد 7 ساعات ، فلن تقوم حركتك بتشغيله.

الخطوة 1: البرامج والأجهزة المطلوبة

البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة
البرامج والأجهزة المطلوبة

برمجة:

  • يمكن العثور على Vivado 2016.2 (أو إصدار أحدث) هنا
  • يمكن العثور على Arduino IDE 1.8.3 (أو إصدار أحدث) هنا

المعدات:

  • 1 مجلس 3 Basys
  • 1 اردوينو أونو
  • عدد 2 لوح توصيل
  • 1 مستشعر المدى بالموجات فوق الصوتية HC-SR04
  • 9 أسلاك ذكر لذكر
  • 1 ليد
  • 1100Ω المقاوم

الخطوة 2: الرموز (Vivado)

رموز (فيفادو)
رموز (فيفادو)

آلة الحالة المحدودة (انظر مخطط الحالة أعلاه):

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

اسم الملف: LEDDES

عداد:

يسمح لنا العداد بتحديد طول الفترة الزمنية التي يمكن خلالها لمستشعر الحركة تنشيط مؤشر LED. يتم عرض قيمته على الشاشة السبعة للوحة Basys 3 من خلال كود المصدر ("sseg_dec"). عندما يكون مفتاح إعادة الضبط معطلاً (القيمة: '0') ، يبدأ العداد في الزيادة كل ثانية من 0 إلى 30. عندما يصل إلى 30 ، يتجمد على هذا الرقم. لن يتم إعادة التشغيل من 0 حتى يتم تبديل مفتاح إعادة التعيين إلى "1" والعودة إلى "1." إذا أصبحت إعادة التعيين "1" أثناء انتقال العداد ، فسيتم تجميد العداد بأي قيمة وصل إليها. عندما تعود إعادة التعيين إلى "0" ، سيتم إعادة تشغيل العداد من 0 إلى 30. يتطلب هذا التطبيق أيضًا استخدام إشارة ساعة ، يتم توفير رمزها أدناه ("clk_div2").

اسم الملف: FinalCounter

الملفات المقدمة:

عرض سبعة قطاعات:

يسمح هذا الرمز للشريحة السبعة بعرض القيم العشرية. تعمل وحدة فرعية واحدة كوحدة فك ترميز بين إدخال ثنائي من 8 بتات و 4 بت ثنائي مشفر عشري. الآخر يقسم إشارة الساعة لتحديث قيمتها بمعدل معين.

اسم الملف: sseg_dec

إشارة الساعة:

يسمح هذا الرمز للعداد بالزيادة بزيادات قدرها ثانية واحدة. يقسم تردد ساعة الإدخال إلى تردد أبطأ. لقد تكيفنا لتوفير فترة ثانية واحدة عن طريق تغيير max_count ثابت: عدد صحيح: = (3000000) "إلى" ثابت max_count: عدد صحيح: = (50000000)."

اسم الملف: clk_div2

الملفات المقدمة: sseg_dec، clk_div2 * تم توفير هذه الملفات المصدر بواسطة الأستاذ Bryan Mealy.

الخطوة 3: فهم كيف يتحدون معًا (مخططات مكونات VHDL)

فهم كيف يجتمعون معًا (مخططات مكونات VHDL)
فهم كيف يجتمعون معًا (مخططات مكونات VHDL)

يحتوي الملف الرئيسي ("MainProjectDES") على كافة الملفات الفرعية التي تمت مناقشتها مسبقًا. هم متصلون بالطريقة المذكورة أعلاه. المكونات المختلفة مترابطة باستخدام خرائط المنافذ لإرسال إشارة من عنصر إلى آخر.

كما لاحظت ، فإن FinalCounter يوفر إخراج 5 بت بينما يتطلب sseg_dec إدخال 8 بت. للتعويض ، قمنا بتعيين الإشارة التي تربط كلا المكونين لتبدأ بـ "000" ونضيف إخراج 5 بت من العداد. وبالتالي توفير مدخلات 8 بت.

القيود:

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

الخطوة 4: الكود (اردوينو)

قمنا ببرمجة Arduino Uno لاستخدام مستشعر الحركة لاكتشاف الحركة وتقديم خرج يشير إلى إضاءة LED. بالإضافة إلى ذلك ، يتطلب استخدام المستشعر لاكتشاف الحركة حلقات تشغيل تبحث باستمرار عن التغيير في المسافة. بشكل أساسي ، يحتاج إلى مؤقت يعمل بشكل متزامن لإخراج إشارة "عالية" حتى يضيء مؤشر LED بينما يحتاج المؤقت إلى إعادة ضبطه بمجرد اكتشاف حركة جديدة ، وهو أمر يكاد يكون من المستحيل تنفيذه على Vivado استنادًا إلى نطاق المعرفة الطبقة. علاوة على ذلك ، استخدمنا Arduino لأنه لن يكون من الممكن استخدام HC-SR04 مع لوحة Basys 3 لأن اللوحة توفر فقط 3.3 فولت بينما يتطلب المستشعر مصدر طاقة 5 فولت. لتنفيذ حركة الكشف ، فهي ترميز فعلي على عكس CAD في VHDL.

استخدمنا وظيفة النبض المضمنة لجهاز الاستشعار لاسترداد الوقت المنقضي بين الصوت المنبعث في البداية من المستشعر والصوت الذي يرتد للخلف عند الاصطدام بجسم ما. ثم نستخدم سرعة الصوت والفاصل الزمني لحساب المسافة بين الجسم والمستشعر. من ذلك ، نقوم بتخزين المسافة الحالية وتتبعها. نتحقق من المسافة كل 150 مللي ثانية. استخدمنا أيضًا مكتبة elapsedmil لتشغيل مؤقت داخلي داخل اردوينو لتتبع الوقت المنقضي. إذا اكتشفنا تغييرًا في المسافة يتوافق مع الحركة ، فسيتم إعادة ضبط المؤقت على الصفر وسيبقي الضوء مضاءًا حتى مرور 3 ثوانٍ. عندما يكتشف المستشعر حركة أخرى ، تتم إعادة ضبط المؤقت على 0 وستكون إشارة ضوء LED "عالية" للثواني الثلاث التالية. لقد أرفقنا نسخة من كود Arduino أدناه.

الخطوة 5: كيف تتناسب مكوناتنا معًا

كيف تتناسب مكوناتنا معًا!
كيف تتناسب مكوناتنا معًا!
كيف تتناسب مكوناتنا معًا!
كيف تتناسب مكوناتنا معًا!
كيف تتناسب مكوناتنا معًا!
كيف تتناسب مكوناتنا معًا!

كما ترون في "Basys3: مخطط Pmod Pin-out *" وصورة لوحة Arduino Uno ، قمنا بتمييز وتسمية المنافذ التي استخدمناها.

1. لوحة LED و Basys 3

LED متصل في سلسلة مع المقاوم 100Ω. - السلك الأبيض يربط المقاوم بدبوس PWR للوحة Basys 3. - السلك الأصفر يربط LED بالدبوس H1 للوحة Basys 3.

2. مستشعر الحركة و Arduino Uno

- السلك البرتقالي يربط Vcc (الطاقة) لمستشعر الحركة بدبوس 5 فولت من لوحة Arduino Uno. - السلك الأبيض يربط دبوس Trig من مستشعر الحركة بالدبوس 10 من لوحة Arduino Uno. - السلك الأصفر يربط دبوس Echo of مستشعر الحركة للدبوس 9 من لوحة Arduino Uno. - السلك الأسود يربط دبوس GND بمستشعر الحركة لتثبيت GND بلوحة Arduino Uno.

[كانت الأسلاك التي استخدمناها أقصر من أن تصل إلى المكونات ، وبالتالي كانت مترابطة]

3. لوحة Basys 3 و Arduino Uno

يربط السلك الأصفر دبوس A14 من لوحة Basys 3 بالدبوس 6 من لوحة Arduino Uno.

* تم أخذ هذا الرسم البياني من "الدليل المرجعي للوحة Basys 3 ™ FPGA" الخاص بـ Digilent والذي يمكن العثور عليه هنا.

الخطوة 6: العرض التوضيحي

الخطوة 7: حان الوقت لاختباره

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

موصى به: