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

مؤقت 8 قنوات قابل للبرمجة: 13 خطوة
مؤقت 8 قنوات قابل للبرمجة: 13 خطوة

فيديو: مؤقت 8 قنوات قابل للبرمجة: 13 خطوة

فيديو: مؤقت 8 قنوات قابل للبرمجة: 13 خطوة
فيديو: نصائح لتعليم البرمجة للأطفال 2024, يوليو
Anonim
مؤقت 8 قنوات قابل للبرمجة
مؤقت 8 قنوات قابل للبرمجة
مؤقت 8 قنوات قابل للبرمجة
مؤقت 8 قنوات قابل للبرمجة
مؤقت 8 قنوات قابل للبرمجة
مؤقت 8 قنوات قابل للبرمجة

مقدمة

لقد كنت أستخدم مجموعة الميكروكونترولر PIC من Microchip لمشاريعي منذ عام 1993 ، وقمت بكل برمجتي بلغة المجمع ، باستخدام Microchip MPLab IDE. تراوحت مشاريعي من إشارات المرور البسيطة ومصابيح LED الوامضة ، إلى واجهات عصا التحكم USB لنماذج R / C ، ومحللات المفاتيح الكهربائية المستخدمة في الصناعة. استغرق التطوير عدة أيام ، وأحيانًا آلاف الأسطر من كود المجمع.

بعد تلقي Matrix Multimedia Flowcode 4 Professional ، كنت متشككًا جدًا في البرنامج. بدا من السهل جدا تصديقه. قررت أن أجربها ، واختبرت جميع وحدات ماكرو المكون المختلفة ، وكل ذلك بنجاح كبير. كان أفضل جزء في استخدام Flowcode هو أنه يمكن تشفير المشروعات البسيطة في ليلة واحدة. بعد اللعب مع I²C وساعة الوقت الفعلي DS1307 ، قررت تصميم مؤقت 8 قنوات باستخدام Flowcode. لم يكن مشروعًا صغيرًا وسهلاً ، فقد اعتقدت أن هذا سيكون مشروعًا رائعًا لتعليم نفسي Flowcode.

اختيار المعالج الدقيق والمكونات الأخرى

نظرًا لعدد دبابيس الإدخال / الإخراج المطلوبة ، كان من الواضح أن هناك حاجة إلى جهاز 40 سنًا. تم اختيار PIC 18F4520 ، بشكل أساسي لذاكرة برنامج 32K و 1536 بايت من ذاكرة البيانات. جميع المكونات المستخدمة هي أجهزة قياسية من خلال الفتحات ، مما يجعل من الممكن بناء الدائرة على لوحة Vero إذا لزم الأمر. ساعد هذا أيضًا في التطوير على لوح التجارب.

الخطوة 1: أهداف المشروع

أهداف المشروع
أهداف المشروع

أهداف

- حفظ دقيق للوقت ، مع بطارية احتياطية.

- الاحتفاظ بجميع البرامج والبيانات حتى بعد انقطاع التيار الكهربائي.

- واجهة مستخدم بسيطة.

- مرونة البرمجة.

حفظ الوقت

العيش في منطقة معرضة لانقطاع التيار الكهربائي ، لن يكون معيار 50/60 هرتز من خطوط الكهرباء كافياً لحفظ الوقت بدقة. كانت ساعة الوقت الفعلي ضرورية ، وبعد اختبار العديد من شرائح RTC ، قررت استخدام DS1307 نظرًا لمذبذبها البسيط وتكوين النسخ الاحتياطي للبطارية. تم الحصول على ضبط دقيق للوقت باستخدام بلورة 32.768 كيلو هرتز فقط متصلة بـ DS1307. كانت الدقة في غضون ثانيتين خلال فترة تجريبية لمدة شهرين باستخدام 4 أنواع مختلفة من البلورات.

الاحتفاظ بالبيانات

يجب الاحتفاظ بجميع بيانات برنامج المؤقت ، حتى أثناء انقطاع التيار الكهربائي. مع وجود ما يصل إلى 100 برنامج مختلف وبيانات تكوين متنوعة ، أصبح من الواضح أن 256 بايت من EEPROM الموجود على اللوحة للموافقة المسبقة عن علم لن تكون كبيرة بدرجة كافية. يتم استخدام 24LC256 I²C EEPROM لتخزين كافة معلومات البرمجة.

واجهة مستخدم بسيطة

تتكون واجهة المستخدم من عنصرين فقط ، وشاشة عرض LCD مقاس 16 × 4 أسطر مع إضاءة خلفية LED ولوحة مفاتيح 4 × 3. يمكن إجراء جميع البرمجة بضغطة زر فقط. الإضافات إلى الواجهة عبارة عن جرس بيزو مسموع وإضاءة خلفية LCD وامضة.

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

مرونة البرمجة
مرونة البرمجة

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

- تلقائي: تم ضبط وقت التشغيل ووقت الإيقاف وقناة الإخراج ويوم الأسبوع.

- إيقاف: يمكن تعطيل البرنامج الفردي دون حذف الإعدادات. لتمكين البرنامج مرة أخرى ،

ما عليك سوى تحديد وضع مختلف.

- نهارًا / ليلًا: تم ضبط وقت التشغيل ووقت الإيقاف وقناة الإخراج ويوم الأسبوع. يعمل نفس الوضع التلقائي ، ولكنه سيفعل

قم بتشغيل المخرجات فقط بين أوقات التشغيل والإيقاف عندما يكون الظلام. يتيح هذا أيضًا التحكم الكامل في النهار / الليل

كمرونة إضافية لتشغيل الأضواء عند غروب الشمس وإيقافها عند شروق الشمس.

مثال 1: سوف يضيء الضوء بعد الساعة 20:00 ، وينطفئ الضوء عند شروق الشمس:

في: 20:00

إيقاف: 12:00 ،

مثال 2: سيتم تشغيل الضوء عند غروب الشمس ، وإطفاء الضوء الساعة 23:00.

في: 12:00

خارج: 23:00

مثال 3: سيتم تشغيل الضوء عند غروب الشمس ، وإطفاء الضوء عند شروق الشمس.

في: 12:01

إطفاء: 12:00

تتوفر خيارات إضافية ، تعمل جميعها بشكل مستقل عن 100 برنامج تشغيل / إيقاف.

قنوات البرنامج النشطة: بدلاً من إيقاف تشغيل عدة برامج ، يمكن تعطيل قنوات الإخراج الفردية دون الحاجة إلى تغيير البرامج.

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

المخرجات المساعدة: يتوفر مخرجان إضافيان (بصرف النظر عن 8 قنوات الإخراج). يمكن برمجتها للتشغيل مع قنوات إخراج معينة ، أو مع المدخلات الرقمية. في التركيب الخاص بي ، لدي مخرجات 6-8 للتحكم في الري ، والذي يعمل على 24 فولت. أستخدم القنوات 6-8 لتشغيل أحد المخرجات المساعدة ، لتشغيل مصدر طاقة 24 فولت لنظام الري.

تشغيل يدوي: عندما تكون في الشاشة الرئيسية ، يمكن استخدام الأزرار 1-8 لتشغيل القنوات أو إيقاف تشغيلها يدويًا.

الخطوة 3: الأجهزة

المعدات
المعدات

مزود الطاقة: يتكون مصدر الطاقة من مقوم ومكثف تنعيم ومصهر 1 أمبير للحماية من الحمل الزائد. ثم يتم تنظيم هذا العرض بواسطة منظم 7812 و 7805. يستخدم مورد 12V لقيادة مرحلات الإخراج ، ويتم تشغيل جميع الدوائر الأخرى من مصدر 5V. نظرًا لأن المنظم 7805 متصل بإخراج منظم 7812 ، يجب أن يقتصر التيار الإجمالي على 1 أمبير من خلال المنظم 7812. يُنصح بتركيب هذه المنظمات على المشتت الحراري المناسب.

ناقل I²C: على الرغم من أن Flowcode يسمح بالتحكم في الأجهزة I²C ، فقد قررت الاستفادة من تكوين البرنامج I²C. هذا يسمح لمزيد من المرونة في تعيينات دبوس. على الرغم من أنها أبطأ (50 كيلو هرتز) ، إلا أنها لا تزال تقدم أداءً رائعًا مقارنةً بناقل الأجهزة I²C. كلا DS1307 و 24LC256 متصلان بحافلة I²C هذه.

ساعة الوقت الحقيقي (DS1307): أثناء بدء التشغيل ، تتم قراءة سجل RTC 0 و 7 لتحديد ما إذا كان يحتوي على بيانات تكوين ووقت صالحة. بمجرد صحة الإعداد ، تتم قراءة وقت RTC والوقت الذي تم تحميله في الموافقة المسبقة عن علم. هذه هي المرة الوحيدة التي يُقرأ فيها الوقت من RTC. بعد بدء التشغيل ، ستكون نبضة 1 هرتز موجودة على الطرف 7 من RTC. هذه الإشارة 1 هرتز متصلة بـ RB0 / INT0 ، ومن خلال روتين خدمة المقاطعة ، يتم تحديث وقت الموافقة المسبقة عن علم كل ثانية.

ذاكرة EEPROM الخارجية: يتم تخزين جميع بيانات وخيارات البرنامج على ذاكرة EEPROM الخارجية. يتم تحميل بيانات EEPROM عند بدء التشغيل ، ويتم تخزين نسخة من البيانات في ذاكرة الموافقة المسبقة عن علم. يتم تحديث بيانات EEPROM فقط عند تغيير إعدادات البرنامج.

مستشعر النهار / الليل: يستخدم المقاوم المعياري المعتمد على الضوء (LDR) كجهاز استشعار نهاري / ليلي. نظرًا لأن LDRs تأتي في العديد من الأشكال والأصناف ، ولكل منها قيم مقاومة مختلفة في ظل ظروف الإضاءة نفسها ، فقد استخدمت قناة إدخال تناظرية لقراءة مستوى الضوء. يمكن ضبط مستويات النهار والليل ، وتسمح ببعض المرونة لأجهزة الاستشعار المختلفة. لإعداد بعض التباطؤ ، يمكن تعيين القيم الفردية ليلا ونهارا. لن تتغير الحالة إلا إذا كان مستوى الضوء أقل من اليوم ، أو أعلى من نقاط ضبط الليل ، لمدة تزيد عن 60 ثانية.

شاشة LCD: يتم استخدام عرض 4 أسطر و 16 حرفًا ، حيث لا يمكن عرض جميع البيانات على شاشة من سطرين. يتضمن المشروع بعض الأحرف المخصصة ، التي تم تحديدها في الماكرو LCD_Custom_Char.

المدخلات الإضافية: يتم تخزين كلا المدخلات مؤقتًا باستخدام ترانزستور NPN. + 12 فولت و 0 فولت متاح أيضًا على الموصل ، مما يسمح بوصلات أكثر مرونة للتوصيلات الخارجية. على سبيل المثال ، يمكن توصيل مستقبل جهاز التحكم عن بعد بالمصدر.

المخرجات: جميع المخرجات معزولة كهربائياً عن الدائرة بواسطة مرحل 12 فولت. المرحلات المستخدمة ، مصنفة لـ 250 فولت تيار متردد ، عند 10 أمبير. يتم إحضار جهات الاتصال المفتوحة عادةً والمغلقة عادةً إلى المحطات.

لوحة المفاتيح: لوحة المفاتيح المستخدمة عبارة عن لوحة مفاتيح مصفوفة 3 × 4 ، وهي متصلة بـ PORTB: 2..7.

الخطوة 4: مقاطعة لوحة المفاتيح

مقاطعة لوحة المفاتيح
مقاطعة لوحة المفاتيح
المقاطعات لوحة المفاتيح
المقاطعات لوحة المفاتيح
مقاطعة لوحة المفاتيح
مقاطعة لوحة المفاتيح

كنت أرغب في الاستفادة من مقاطعة PORTB Interrupt on Change عند الضغط على أي مفتاح. لهذا ، يجب إنشاء مقاطعة مخصصة في Flowcode ، للتأكد من إعداد اتجاه PORTB والبيانات بشكل صحيح قبل وبعد كل مقاطعة لوحة المفاتيح. يتم إنشاء مقاطعة في كل مرة يتم فيها الضغط على زر أو تحريره. لا يستجيب روتين المقاطعة إلا عند الضغط على أحد المفاتيح.

مقاطعة مخصصة

تمكين التعليمات البرمجية

المنفذ = 0b00001110 ؛ trisb = 0b11110001 ؛

intcon. RBIE = 1 ،

intcon2. RBIP = 1 ،

intcon2. RBPU = 1 ،

rcon. IPEN = 0 ؛

كود المعالج

إذا (intcon & (1 << RBIF))

{FCM_٪ n () ،

المنفذ = 0b00001110 ؛

تريسبان = 0b11110001 ؛

wreg = بورتب ؛

clear_bit (intcon ، RBIF) ؛

}

وجدت مشاكل

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

في الكود المخصص للوحة المفاتيح تحت GetKeyPadNumber ، يوجد مثل هذا الاستدعاء لماكرو Delay_us ، والذي سيؤدي إلى تجاوز سعة مكدس. للتغلب على ذلك ، قمت بإزالة الأمر Delay_us (10) واستبدله بـ 25 سطرًا من "wreg = porta؛" أوامر. يقرأ هذا الأمر PORTA ، ويضع قيمته في سجل W ، فقط للحصول على بعض التأخير. سيتم تجميع هذا الأمر إلى تعليمة واحدة مشابهة لتعليمات المجمع movf porta ، 0. بالنسبة لساعة 10 ميجا هرتز المستخدمة في المشروع ، ستكون كل تعليمات 400 نانوثانية ، وللحصول على تأخير 10 مرات ، كنت بحاجة إلى 25 من هذه التعليمات.

ملاحظة في السطر الثاني من الشكل 3: كود GetKeypadNumber المخصص ، أنه تم تعطيل أمر delay_us (10) الأصلي باستخدام "//". أدناه ، أضفت 25 "wreg = porta؛" أوامر للحصول على تأخير 10us جديد. مع عدم وجود مكالمات إلى أي وحدات ماكرو داخل الكود المخصص Keypad_ReadKeypadNumber ، يمكن الآن استخدام ماكرو لوحة المفاتيح داخل روتين خدمة المقاطعة.

وتجدر الإشارة إلى أن Flowcode Keypad ومكونات eBlocks لا تستخدم مقاومات السحب القياسية في خطوط الإدخال. بدلاً من ذلك ، يستخدم 100 كيلو مقاومات منسدلة. نظرًا لبعض التداخل الموجود على لوحة المفاتيح أثناء التطوير ، تم استبدال جميع المقاومات 100K بـ 10K ، واستبدلت جميع المقاومات 10K بـ 1K5. تم اختبار لوحة المفاتيح للعمل بشكل صحيح مع خيوط بطول 200 مم.

الخطوة الخامسة: استخدام المؤقت

باستخدام الموقت
باستخدام الموقت
باستخدام الموقت
باستخدام الموقت
باستخدام الموقت
باستخدام الموقت

تم إعداد جميع الشاشات للإشارة إلى جميع المعلومات المطلوبة للمستخدم لإجراء تغييرات سريعة على الإعدادات. يُستخدم السطر 4 للمساعدة في التنقل عبر القوائم وخيارات البرنامج. يتوفر ما مجموعه 22 شاشة أثناء التشغيل العادي.

السطر 1: الوقت والحالة

يعرض اليوم والوقت الحاليين ، متبوعين برموز الحالة:

A - يشير إلى أنه قد تم تشغيل Aux Input A ، وأن مؤقت Aux Input A قيد التشغيل.

B - يشير إلى أنه تم تشغيل Aux Input B ، وأن مؤقت Aux Input B قيد التشغيل.

C - يشير إلى تشغيل Aux Output C.

D - يشير إلى تشغيل Aux Output D.

} - حالة جهاز استشعار النهار / الليل. إذا كان موجودًا ، يشير إلى أنه الليل.

الخط 2: مخرجات البرنامج

يعرض القنوات التي تم تشغيلها بواسطة البرامج المختلفة. يتم عرض القنوات بأرقام الإخراج الخاصة بها ، ويشير "-" إلى أن الإخراج المحدد لم يتم تشغيله. القنوات التي تم تعطيلها في "برنامج مخرجات نشطة" سيظل يشار إليها هنا ، ولكن لن يتم تعيين المخرجات الحقيقية.

السطر 3: المخرجات الحقيقية

يعرض القنوات التي يتم تشغيلها بواسطة البرامج المختلفة ، أو Aux Inputs A & B ، أو المخرجات اليدوية التي يحددها المستخدم. سيؤدي الضغط على 0 إلى إعادة جميع المخرجات التي تم تنشيطها يدويًا إلى وضع إيقاف التشغيل ، وإعادة تعيين مؤقتات Aux Output A & B.

السطر 4: خيارات القائمة والمفاتيح (في جميع القوائم)

يشير إلى وظيفة مفتاحي "*" و "#".

يشير الجزء الأوسط إلى المفاتيح الرقمية (0-9) النشطة للشاشة المحددة.

يتم أيضًا عرض حالة إدخال Aux Input A & B عن طريق رمز مفتاح مفتوح أو مغلق.

يمكن تشغيل / إيقاف المخرجات يدويًا بالضغط على المفتاح المقابل على لوحة المفاتيح.

في جميع القوائم ، يتم استخدام مفتاحي Star و Hash للتنقل عبر خيارات البرنامج المختلفة. تستخدم المفاتيح من 0 إلى 9 لضبط الخيارات. عندما تتوفر خيارات متعددة على شاشة واحدة أو قائمة برمجة ، يتم استخدام مفتاح Hash للتنقل بين الخيارات المختلفة. سيُشار دائمًا إلى الخيار المحدد حاليًا بحرف ">" الموجود على يسار الشاشة.

0-9 أدخل قيم الوقت

1-8 تغيير اختيار القناة

14 36 خطوة من خلال البرامج ، خطوة للخلف ، 4 خطوات للخلف 10 برامج ، 3 خطوات للأمام ، 6 خطوات للأمام 10

البرامج

1-7 تحديد أيام الأسبوع. 1 = الأحد ، 2 = الاثنين ، 3 = الثلاثاء ، 4 = الأربعاء ، 5 = الخميس ، 6 = الجمعة ، 7 = السبت

0 في الشاشة الرئيسية ، امسح كل التجاوزات اليدوية وموقتات الإدخال A والإدخال ب. في القوائم الأخرى ، يتغير

الخيارات المحددة

# في الشاشة الرئيسية ، سيتم تعطيل جميع التجاوزات اليدوية ، وموقتات الإدخال A والإدخال B ومخرجات البرنامج ، حتى

الحدث القادم.

* و 1 أعد تشغيل العداد

* و 2 امسح كل البرامج والخيارات ، وأعد الإعدادات إلى الوضع الافتراضي.

* و 3 ضع المؤقت في وضع الاستعداد. لتشغيل المؤقت مرة أخرى ، اضغط على أي مفتاح.

أثناء الإدخالات غير الصحيحة لأي قيمة زمنية ، ستومض الإضاءة الخلفية لشاشة LCD 5 مرات للإشارة إلى وجود خطأ. في نفس الوقت ، سيصدر صوت الجرس. لن يعمل الأمران Exit و Next إلا عندما يكون الإدخال الحالي صحيحًا.

اضاءه خلفيه ال سى دى

عند بدء التشغيل الأولي ، سيتم تشغيل الإضاءة الخلفية لشاشة LCD لمدة 3 دقائق ، إلا إذا:

- هناك عطل في الأجهزة (لم يتم العثور على EEPROM أو RTC)

- الوقت غير محدد في RTC

سيتم تشغيل الإضاءة الخلفية لشاشة LCD مرة أخرى لمدة 3 دقائق على أي إدخال للمستخدم على لوحة المفاتيح. إذا كانت الإضاءة الخلفية لشاشة LCD مطفأة ، فسيؤدي أي أمر من أوامر لوحة المفاتيح أولاً إلى تشغيل الإضاءة الخلفية لشاشة LCD ، ويتجاهل المفتاح الذي تم الضغط عليه. هذا يضمن أن المستخدم سيكون قادرًا على قراءة شاشة LCD قبل استخدام لوحة المفاتيح. سيتم أيضًا تشغيل الإضاءة الخلفية لشاشة LCD لمدة 5 ثوانٍ إذا تم تنشيط Aux Input A أو Aux Input B.

الخطوة 6: لقطات شاشة القائمة

لقطات شاشة القائمة
لقطات شاشة القائمة
لقطات شاشة القائمة
لقطات شاشة القائمة
لقطات شاشة القائمة
لقطات شاشة القائمة

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

الخطوة السابعة: تصميم النظام

تصميم النظام
تصميم النظام

تم إجراء جميع عمليات التطوير والاختبار على اللوح. بالنظر إلى جميع أقسام النظام ، قمت بتقسيم النظام إلى ثلاث وحدات. كان هذا القرار يرجع أساسًا إلى قيود حجم PCB (80 × 100 مم) للإصدار المجاني من Eagle.

الوحدة 1 - مزود الطاقة

الوحدة 2 - لوحة وحدة المعالجة المركزية

الوحدة 3 - لوحة الترحيل

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

دعنا نذهب من خلال كل منهم.

الخطوة 8: مزود الطاقة

مزود الطاقة
مزود الطاقة
مزود الطاقة
مزود الطاقة
مزود الطاقة
مزود الطاقة
مزود الطاقة
مزود الطاقة

مزود الطاقة مستقيم للأمام ، ويزود وحدة المعالجة المركزية ولوحات الترحيل بجهد 12 فولت و 5 فولت.

لقد قمت بتركيب منظمات الجهد على أحواض حرارة مناسبة ، واستخدمت أيضًا مكثفات مفرطة في الإمداد.

الخطوة 9: لوحة وحدة المعالجة المركزية

مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية
مجلس وحدة المعالجة المركزية

يتم تثبيت جميع المكونات باستثناء شاشة LCD ولوحة المفاتيح والمرحلات على لوحة وحدة المعالجة المركزية.

تمت إضافة الكتل الطرفية لتبسيط التوصيلات بين الإمداد والمدخلات الرقمية ومستشعر الضوء.

تعمل دبابيس / مقابس الرأس على توفير توصيلات سهلة بشاشة LCD ولوحة المفاتيح.

بالنسبة لمخرجات المرحلات ، استخدمت ULN2803. يحتوي بالفعل على جميع مقاومات القيادة المطلوبة وثنائيات flyback. هذا يضمن أن لوحة وحدة المعالجة المركزية لا يزال من الممكن تصنيعها باستخدام الإصدار المجاني من Eagle. المرحلات متصلة بجهازي ULN2803s. يتم استخدام ULN2803 السفلي للمخرجات الثمانية ، ويتم استخدام الجزء العلوي ULN2803 للمخرجات المساعدة. يحتوي كل ناتج مساعد على أربعة ترانزستورات. يتم توصيل المرحلات أيضًا من خلال دبابيس / مآخذ توصيل.

تم تزويد PIC 18F4520 بمقبس برمجة ، للسماح ببرمجة سهلة عبر مبرمج PicKit 3.

ملاحظة:

ستلاحظ أن اللوحة تحتوي على 8 دبوس IC إضافي. أعلى IC هو PIC 12F675 ، ومتصل بمدخل رقمي. تمت إضافة هذا أثناء تصميم ثنائي الفينيل متعدد الكلور. هذا يجعل من السهل معالجة المدخلات الرقمية مسبقًا. في تطبيقي ، يتم توصيل أحد المدخلات الرقمية بنظام الإنذار الخاص بي. إذا انطلق المنبه ، فهذا يعني أن بعض الأضواء تضاء في منزلي. يُصدر تسليح نظام الإنذار الخاص بي ونزع سلاحه أصوات صفير مختلفة على صفارات الإنذار. باستخدام PIC 12F675 ، يمكنني الآن التمييز بين الذراع / نزع السلاح والإنذار الحقيقي. تم تجهيز 12F675 أيضًا بمقبس برمجة.

لقد قمت أيضًا بتوفير منفذ I2C عبر رأس دبوس / مقبس. سيكون هذا مفيدًا لاحقًا مع لوحات الترحيل.

تحتوي اللوحة على عدد قليل من وصلات العبور ، والتي يجب أن يتم لحامها قبل تركيب مقابس IC.

الخطوة 10: استنتاج رمز التدفق

استنتاج رمز التدفق
استنتاج رمز التدفق
استنتاج رمز التدفق
استنتاج رمز التدفق
استنتاج رمز التدفق
استنتاج رمز التدفق

نظرًا لأنني معتاد على العمل على مستوى التسجيل في التجميع ، فقد كان من الصعب والمحبط في بعض الأحيان استخدام وحدات ماكرو المكون. كان هذا بسبب قلة معرفتي بهيكل برمجة Flowcode. كانت الأماكن الوحيدة التي استخدمتها كتل C أو ASM هي تشغيل المخرجات داخل روتين المقاطعة ، وفي روتين Do_KeyPressed لتعطيل / تمكين مقاطعة لوحة المفاتيح. يتم أيضًا وضع الموافقة المسبقة عن علم في SLEEP باستخدام كتلة ASM ، عندما لا يتم العثور على EEPROM أو RTC.

تم الحصول على المساعدة حول استخدام أوامر I²C المختلفة من داخل ملفات تعليمات Flowcode. من الضروري معرفة كيفية عمل أجهزة I²C المختلفة بالضبط ، قبل أن يمكن استخدام الأوامر بنجاح. يتطلب تصميم الدائرة من المصمم إتاحة جميع أوراق البيانات ذات الصلة. هذا ليس عيبًا في Flowcode.

صمد Flowcode حقًا للاختبار ، ويوصى به بشدة للأشخاص الذين يرغبون في بدء العمل مع مجموعة المعالجات الدقيقة Microchip.

تم ضبط برمجة وتكوين رمز التدفق للموافقة المسبقة عن علم وفقًا للصور

الخطوة 11: لوحة ترحيل I2C اختيارية

لوحة ترحيل I2C اختيارية
لوحة ترحيل I2C اختيارية
لوحة ترحيل I2C اختيارية
لوحة ترحيل I2C اختيارية
لوحة ترحيل I2C اختيارية
لوحة ترحيل I2C اختيارية

تحتوي لوحة وحدة المعالجة المركزية بالفعل على وصلات رأس لـ 16 مرحلًا. هذه المخرجات عبارة عن ترانزستورات مجمعة مفتوحة عبر شريحتين ULN2803 ويمكن استخدامهما لتشغيل المرحلات مباشرة.

بعد الاختبارات الأولى للنظام ، لم تعجبني جميع الأسلاك بين لوحة وحدة المعالجة المركزية والمرحلات. نظرًا لأنني قمت بتضمين منفذ I2C على لوحة وحدة المعالجة المركزية ، فقد قررت تصميم لوحة الترحيل للاتصال بمنفذ I2C. باستخدام شريحة MCP23017 I / O Port Expander ذات 16 قناة ومجموعة الترانزستور ULN2803 ، قمت بتقليل التوصيلات بين وحدة المعالجة المركزية والمرحلات إلى 4 أسلاك.

نظرًا لأنني لم أستطع تركيب 16 مرحلًا على ثنائي الفينيل متعدد الكلور مقاس 80 × 100 مم ، فقد قررت صنع لوحين. يستخدم كل MCP23017 8 منفذًا فقط من بين 16 منفذًا. يعالج اللوح 1 المخرجات الثمانية ، واللوحة 2 المخرجات المساعدة. الاختلاف الوحيد على السبورة هو عناوين كل لوحة. يتم ضبط هذا بسهولة باستخدام كنزة صغيرة. تحتوي كل لوحة على موصلات لتوفير الطاقة وبيانات I2C للوحة الأخرى.

ملاحظة:

إذا لزم الأمر ، يقوم البرنامج بتوفير لوحة واحدة فقط يمكنها استخدام جميع المنافذ الـ 16. جميع بيانات ترحيل الإخراج متاحة على اللوحة الأولى.

نظرًا لأن الدائرة اختيارية وبسيطة جدًا ، لم أقم بإنشاء مخطط. إذا كان هناك طلب كافٍ ، يمكنني إضافته لاحقًا.

الخطوة 12: رابط RF اختياري

رابط RF اختياري
رابط RF اختياري
رابط RF اختياري
رابط RF اختياري
رابط RF اختياري
رابط RF اختياري

بعد الانتهاء من المشروع ، سرعان ما أدركت أنه يتعين عليّ سحب الكثير من أسلاك التيار المتردد 220 فولت إلى المؤقت. لقد قمت بتطوير رابط RF باستخدام وحدات قياسية 315 ميجاهرتز سمحت بوضع المؤقت داخل خزانة ، ولوحات الترحيل داخل السقف ، بالقرب من جميع الأسلاك 220 فولت.

يستخدم الارتباط AtMega328P يعمل بسرعة 16 ميجا هرتز. البرنامج لكل من جهاز الإرسال والاستقبال هو نفسه ، ويتم تحديد الوضع بواسطة وصلة مرور صغيرة.

الارسال

يتم توصيل جهاز الإرسال ببساطة بمنفذ وحدة المعالجة المركزية I2C. لا يلزم إعداد إضافي ، حيث يستمع AtMega328P إلى نفس البيانات مثل لوحات الترحيل I2C.

يتم تحديث البيانات مرة واحدة في الثانية على منفذ I2C ، ويقوم جهاز الإرسال بإرسال هذه المعلومات عبر ارتباط التردد اللاسلكي. إذا لم يستقبل جهاز الإرسال بيانات I2C لمدة 30 ثانية تقريبًا ، فسيقوم جهاز الإرسال بإرسال البيانات باستمرار لإيقاف تشغيل جميع المرحلات إلى وحدة الاستقبال.

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

المتلقي

يستمع جهاز الاستقبال للبيانات المشفرة من جهاز الإرسال ، ويضع البيانات على منفذ I2C. يتم توصيل لوحة الترحيل ببساطة بهذا المنفذ ، وتعمل بنفس الطريقة التي تم توصيلها بها في لوحة وحدة المعالجة المركزية.

في حالة عدم تلقي جهاز الاستقبال بيانات صالحة لمدة 30 ثانية ، سيرسل جهاز الاستقبال البيانات باستمرار على منفذ I2C لإيقاف تشغيل جميع المرحلات على لوحات الترحيل.

المخططات

في يوم من الأيام ، إذا كان هناك طلب عليه. يحتوي رسم Arduino على جميع المعلومات المطلوبة لبناء الدائرة بدون رسم تخطيطي للدائرة.

نطاق

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

الخطوة 13: المنتج النهائي

المنتج النهائي
المنتج النهائي
المنتج النهائي
المنتج النهائي
المنتج النهائي
المنتج النهائي

تم تركيب الوحدة الرئيسية في صندوق مشروع قديم. يحتوي على ما يلي:

- محول 220 فولت / 12 فولت

- مجلس امدادات الطاقة

- مجلس وحدة المعالجة المركزية

- عرض شاشات الكريستال السائل

- لوحة المفاتيح

- الارسال وصلة الترددات اللاسلكية

- وحدة استقبال عن بعد منزلية إضافية لتمكينني من تشغيل / إطفاء الأضواء عبر جهاز التحكم عن بعد

تتكون وحدة الترحيل مما يلي:

- محول 220 فولت / 12 فولت

- مجلس امدادات الطاقة

- جهاز استقبال RF Link

- عدد 2 من لوحات الترحيل I2C

تم تصميم جميع الألواح بنفس الأبعاد ، مما يجعل من السهل تكديسها فوق بعضها البعض باستخدام فواصل 3 مم.

موصى به: