في هذا المشروع سوف نقوم بتوصيل Relay بـ PIC Microcontroller PIC16F877A. Relay هو جهاز ميكانيكي للتحكم في الجهد العالي ، والأجهزة عالية التيار " ON " أو " OFF " من مستويات الجهد المنخفض. يوفر المرحل عزلًا بين مستويين من الجهد ويستخدم بشكل عام للتحكم في أجهزة التيار المتردد. من المرحلات الميكانيكية إلى المرحلات الحالة الصلبة ، تتوفر أنواع مختلفة من المرحلات في الإلكترونيات. في هذا المشروع سوف نستخدم التتابع الميكانيكي.
في هذا المشروع سوف نقوم بالأمور التالية-
- سنقوم بواجهة تبديل للإدخال من المستخدم.
- التحكم في لمبة 220V AC مع مرحل 5V.
- للتحكم في التتابع ، سنستخدم ترانزستور BC547 NPN وسيتم التحكم في الترانزستور من PIC16F877A. سوف يخطر مصباح LED المرحل بحالة التشغيل أو الإيقاف.
إذا كنت جديدًا على PIC Microcontroller ، فابدأ بـ Getting Started with PIC Microcontroller.
المكون المطلوب:
- PIC16F877A
- 20 ميجا هرتز كريستال
- 2 قطعة سيراميك 33pF
- 3 قطع 4.7 كيلو مقاومات
- 1 كيلو المقاوم
- 1 ليد
- الترانزستور BC547
- 1N4007 ديود
- 5V مكعب التتابع
- لمبة التيار المتردد
- اللوح
- أسلاك لتوصيل الأجزاء.
- محول 5 فولت أو أي مصدر طاقة 5 فولت بقدرات تيار 200 مللي أمبير على الأقل.
التتابع وعمله:
يعمل التتابع مثل المحول النموذجي. تستخدم المرحلات الميكانيكية مغناطيسًا مؤقتًا مصنوعًا من ملف كهرومغناطيسي. عندما نوفر تيارًا كافيًا عبر هذا الملف ، يصبح نشطًا ويسحب ذراعًا. نتيجة لذلك ، يمكن إغلاق أو فتح الدائرة المتصلة عبر التتابع. لا يحتوي المدخلات والمخرجات على أي توصيلات كهربائية وبالتالي فهي تعزل المدخلات والمخرجات. تعرف على المزيد حول التتابع وإنشائه هنا.
يمكن العثور على المرحلات في نطاقات جهد مختلفة مثل 5V ، 6V ، 12V ، 18V إلخ. في هذا المشروع سوف نستخدم مرحل 5V حيث أن جهد العمل لدينا هو 5 فولت هنا. هذا المرحل المكعب 5V قادر على تبديل حمل 7A عند 240VAC أو 10A عند 110VAC. ومع ذلك ، بدلاً من هذا الحمل الضخم ، سوف نستخدم لمبة 220VAC ونقوم بتبديلها باستخدام التتابع.
هذا هو 5V Relay الذي نستخدمه في هذا المشروع. يتم تحديد التصنيف الحالي بوضوح لمستويين من الجهد ، 10 أمبير عند 120 فولت تيار متردد و 7 أمبير عند 240 فولت تيار متردد. نحتاج إلى توصيل الحمل عبر التتابع أقل من التصنيف المحدد.
يحتوي هذا التتابع على 5 دبابيس. إذا رأينا pinout يمكننا أن نرى-
على L1 و L2 هو دبوس وشيعة الداخلي ل. نحتاج إلى التحكم في هذين الدبابيس لتشغيل التتابع " ON " أو " OFF ". الدبابيس الثلاثة التالية هي POLE و NO و NC. القطب متصل باللوحة المعدنية الداخلية التي تغير اتصالها عند تشغيل التتابع. في الحالة العادية ، يتم تقصير POLE مع NC. NC تعني التوصيل الطبيعي. عندما يتم تشغيل التتابع ، يغير القطب موضعه ويصبح متصلاً بـ NO. NO تعني فتح بشكل طبيعي.
في دائرتنا ، قمنا بعمل اتصال التتابع مع الترانزستور والصمام الثنائي. يتوفر الترحيل مع الترانزستور والصمام الثنائي في السوق كوحدة ترحيل ، لذلك عند استخدام وحدة الترحيل ، لن تحتاج إلى توصيل دائرة السائق (الترانزستور والصمام الثنائي).
يستخدم Relay في جميع مشاريع أتمتة المنزل للتحكم في أجهزة تكييف الهواء المنزلية.
مخطط الرسم البياني:
الدائرة الكاملة لتوصيل Relay مع PIC Microcontroller مذكورة أدناه:
في ما سبق التخطيطي PIC16F877A يستخدم، حيث على ميناء B ل LED و الترانزستور متصل، التي تسيطر مزيد باستخدام مفتاح TAC في RBO. يوفر R1 تيارًا متحيزًا للترانزستور. R2 هو مقاوم منسدل يستخدم عبر مفتاح اللمس. سيوفر المنطق 0 عندما لا يتم الضغط على المفتاح. و 1N4007 هو الصمام الثنائي المشبك ، وتستخدم لوشيعة تتابع و. عندما يتم إيقاف تشغيل التتابع ، هناك فرص لارتفاع الجهدوسوف يقوم الصمام الثنائي بقمعه. الترانزستور مطلوب لقيادة المرحل لأنه يتطلب أكثر من 50 مللي أمبير من التيار الذي لا يستطيع المتحكم الدقيق توفيره. يمكننا أيضًا استخدام ULN2003 بدلاً من الترانزستور ، إنه خيار أكثر حكمة إذا كان التطبيق مطلوبًا أكثر من مرحلتين أو ثلاث مرحلات ، تحقق من دائرة وحدة الترحيل. سيُعلم مؤشر LED عبر المنفذ RB2 بأن " الترحيل قيد التشغيل ".
ستبدو الدائرة النهائية هكذا-
يمكنك تعلم التحكم في Relay باستخدام Arduino هنا ، وإذا كنت مهتمًا حقًا بالترحيل ، فتحقق من جميع دوائر Relay هنا.
شرح الكود:
في بداية ملف main.c ، أضفنا خطوط التكوين لـ pic16F877A وحددنا أيضًا أسماء أطراف التوصيل عبر PORTB.
كما هو الحال دائمًا أولاً ، نحتاج إلى ضبط بتات التكوين في متحكم الموافقة المسبقة عن علم ، وتحديد بعض وحدات الماكرو ، بما في ذلك المكتبات والتردد البلوري. يمكنك التحقق من الكود لجميع أولئك الموجودين في الكود الكامل المعطى في النهاية. التي قطعناها على أنفسنا RB0 كما المدخلات. في هذا الدبوس ، تم توصيل المفتاح.
#تضمن
بعد ذلك ، أطلقنا على وظيفة system_init () حيث قمنا بتهيئة اتجاه الدبوس ، وقمنا أيضًا بتكوين الحالة الافتراضية للدبابيس.
سنرى في دالة system_init ()
system_init باطل (باطل) { TRISBbits.TRISB0 = 1 ؛ // إعداد Sw كمدخلات TRISBbits.TRISB1 = 0 ؛ // إعداد LED كإخراج TRISBbits.TRISB2 = 0 ؛ // ضبط دبوس الترحيل كمخرج LED = 0 ؛ تتابع = 0 ؛ }
في الوظيفة الرئيسية ، نتحقق باستمرار من ضغط المفتاح ، إذا اكتشفنا الضغط على المفتاح عن طريق استشعار المنطق عاليًا عبر RB0 ؛ ننتظر بعض الوقت ونرى ما إذا كان المفتاح لا يزال مضغوطًا أم لا ، وإذا استمر الضغط على المفتاح ، فسنقوم بعكس حالة RELAY و LED pin.
باطل رئيسي (باطل) { system_init () ؛ // يستعد النظام أثناء (1) { if (SW == 1) {// يتم الضغط على المفتاح __delay_ms (50) ؛ // تأخير debounce إذا (SW == 1) {// لا يزال المفتاح مضغوطًا LED =! LED ؛ // قلب وضع الدبوس. تتابع =! } } } عودة؛ }
يتم توفير التعليمات البرمجية الكاملة والفيديو التجريبي لواجهة الترحيل هذه أدناه.