السلام عليكم اخي
وجدتلك مشروع ساعة بواسطة البيك في انتظار ايجاد مشاريع اخرى
و هناك ايظا دروس عن البيك في المرفقات
----------------------------------
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله تعالى و بركاته
ساعة رقمية بواسطة المتحكم الدقيق pic 16F84
لعناصر الالكترونية الضرورية لإنجاز الساعة الرقمية :
1- المتحكم الدقيق 16F84 ، وهو القلب النابض لهذه البطاقة، حيث تشحن ذاكرته فلاش بالبرنامج الضروري لعمل الساعة.
2- الكوارتز 4mhz مع مكثفتين 22pf ، الضرورية لتوليد اشارة الساعة، بينما الإشارة التي يعمل بها المتحكم هي الربع أي 1mhz . ومنه نستنتج زمن دورةtemps de cycle الذي يساوي1 ميكرو ثانية، هذا الزمن مهم خصوصا عند حساب ازمنة التاجيل اثناء برمجة المتحكم.
3- مفكك الترميز 4/7 قطع 7447 :يستقبل في مدخله اعدادا بشكل ثنائي و يحوّلها الي 7 مخارج تسمح بإظهار الارقام في العارضات.
4- 6 عارضات ارقام.
5- 4 مقاومات 1.2 كيلو اوم، تربط في قاعدات الترونزستورات.
6- 6 ترونزستورات من نوع npn BC 337 .
7- 7 مقاومات 220 اوم للتقليل من شدة التيار الكهربائي المار في العارضات.
8- مفتاحين ضاغطين لضبط الدقائق و ضبط الساعات.
قبل ان نبدأ انجاز اي مشروع علينا إحضار لوحة تجارب plaque d'essais ، التي تغرس فيه العناصر الالكترونية،ومن هذه اللوحة نستطيع التأكد من سلامة عمل المشروع، كما نستطيع اجراء تعديلات للدارة.
هذه صورة الساعة الرقمية على لوحة التجارب :
اثناء تجريب الدارة، نحتاج الى شحن الـ pic ببرنامج الاسمبلير hex الذي نكتبه.
ولشحنه نحتاج الى جهاز برمجة programmateur ، وبرنامج لتحويل المعطيات من الكمبيوتر الى الـ pic
اما جهاز البرمجة فأنا استعمل جهاز بسيط من نوع jdm ، ويستطيع كل شخص انجازه، فمكوناته بسيطة.
هذه هي الدارة الالكترونية لجهاز البرمجة ، كما يستطيع هذا الجهاز برمجة المتحكم 12c509 والذاكرات 24xx
اما برنامج الشحن من الكمبيوتر الى المتحكم او العكس، فأنا استعمل برنامجين.
الأول : وهو المشهور وإسمه icprog105D ،يسمح ايضا ببرمجة الكثير من انواع المتحكمات.
هذه هي واجهة البرنامج:
لتحميل البرنامج icprog 105D انقر
هنـــــــــــا
لعمل هذا البرنامج في بيئة ويندوز xp، حمّل drivers ، للتحميل أنقر
هنـــــــــــا
الثاني : وهو الذي استعمله لبساطته ويشتغل في كل أنظمة ويندوز اسمه NTpicprog
لتحميل البرنامج أنقر
هنــــــــــــا
بسم الله الرحمن الرحيم
نواصل مع هذا الجزء استكمال انجاز الساعة الرقمية، هذا المشروع ليس سوى نقطة البداية.
سأتحدث اليوم عن برنامج مهم و ضروري لكل من يريد برمجة الميكروكونترولر.
الـ pic هو من صنع شركة microchip ، وهذه الشركة تقدّم في موقعها على الانترنيت هذا البرنامج وبشكل مجاني
هذا البرنامج اسمه
MPLAB
ويقوم بثلاثة وظائف رئيسية :
1 - كتابة برنامج الاسمبلير، حيث يتحول MPLAB الى مجرد معالج نصوص بسيط. برنامج الاسمبلير امتداده هو asm ، ويستطيع اي معالج نصوص wordpad notepad قراءته.
2 - بعد الانتهاء من كتابة البرنامج، نقوم بعملية compilation ، حيث اذا لم يصادف MPLAB اي خطأ في البرنامج الذي كتبته، يقوم بتحرير برنامج بامتداد hex وهو الذي سيشحن لاحقا في ذاكرة فلاش للمتحكم.
3 - لمحاكاة البرنامج على الحاسوب، تستطيع المرور الى وضع simulation ، حيث تقوم بتشغيل البرنامج سطرا سطرا، وتفتح جميع سجلات المتحكم الداخلية، وترى كيف تتغيّر قيّمها، وتستنتج الأخطاء ان وجدت.
تستطيع كتابة برنامج المتحكم ايضا بلغات متطورة كـلغة picbasic c .
ولكنني افضّل لغة الاسمبلير، لكي اتحكم بشكل دقيق في حساب ازمنة التعليمات، خصوصا عند حساب ازمنة التأجيل
هذا بشكل وجيز فكرة عن برنامج MPLAB
واجهة البرنامج
لتحميل البرنامج أنقر هنـــــــــا
هذه هي كل الوسائل والادوات الضرورية قبل الولوج الى مغامرة برمجة المتحكمات الدقيقة.
بسم الله الرحمن الرحيم
اريد اليوم ان أعرّج قليلا على الساعة الرقمية بواسطة العدادات، هذا الساعة تعود الى العصور الوسطى لعهود الالكترونيات المتعاقبة
تعتمد هذه الساعة علي العدادات و مفككات الترميزعلى شكل دارات متكاملة،
لا أريد الخوض كثيرا في هذه الدارة الالكترونية، ولكنني ادرجتها فقط في هذه الصفحة لتكتمل الصورة.
اليكم الدارة الالكترونية للساعة الرقمية بواسطة العدادات :
لتحميل الدارة الالكترونية بمقاس كبير وبصيغة pdf ، يرجى النقر
هنـــــــا
العناصر المكوّنة لهذه الدارة :
- 6 عدادت 7490
- 6 مفككات ترميز 7447
- 6 عارضات ارقام 7 قطع، ذات مصعد مشترك
- 42 مقاومة قيمتها 220 اوم، للتقليل من التيار المار في العارضات.
- 2 منتخب معلومات بوابات نفي ، و ، أو .
- مولد نبضات الساعة، تردده 1 هرتز, او دوره 1 ثانية ، على شكل اشارة مربعة
يتكون من الدالرة المشهورة 555 NE بالاضافة الى الخلية م س RC
لقد اعتمدت في هذا الانجاز علي الدارات المتكاملة من العائلة TTL .
هذا الإنجاز يتطلب الكثير من العناصر الالكترونية، و الكثير من الوقت والجهد، ويعتمد في عمله على عد نبضات الساعة.
المرة القادمة، سنتعرض الى الساعة الرقمية المبرمجة بواسطة المتحكم pic 16F84، وسنرى الفرق بين الإنجازين.
بسم الله الرحمن الرحيم
أقترح عليكم اليوم الدارة الالكترونية للساعة الرقمية بواسطة الميكروكونترولر
pic 16F84
لتتحميل الدارة بمقاس كبير، وبصيغة pdf ، يرجى النقر
هنــــــــــا
بسم الله الرحمن الرحيم
بعد أيام الاعياد، نواصل هذا المشروع، الذي سنتطرق فيه الى اعدادات المتحكم الدقيق pic 16F84 لتحقيق الساعة الرقمية.
كل عام وأنتم احبتي.
توقفنا آخر مرة عند
التصميم الالكتروني للساعة الرقمية.
اليوم سأتحدث عن عارضات الارقام او المرقّمات afficheurs :
- نستعمل مفكك ترميز واحد، 4/7 قطع TTL7447 ، هذا المفكك يستقبل في مدخله اعدادا عشرية، ولكن بشكل ثنائي D C B A ، وحسب توفيقة الدخول تتغيّر حالات المخارج g f e d c b a ، التي تربط مع عارضات الارقام، ليظهر العدد بشكل عشري في العارضة حسب العدد الذي أدخل بشكل ثنائي.
ملاحظة : مفكك الترميز 7447 ، مخارجه منفية، لذلك نستعمل عارضات ارقام ذات مصعد مشترك anode commune .
اليكم الصور التالية التي تشرح بالتفصيل المرقّم :
من يعرف العد في النظام الثنائي، فإنه يستطيع ان يواصل معي هذا الانجاز بسهولة، اما اذا كان هناك من لم يسمع بالنظام الثنائي و تقنياته، فسأعود لهذا في موضوع لاحق.
كما تلاحظون، فإننا استعملنا الميناء PORT A للتحكم في عرض الاعداد.
حيث ربطنا
RA0 مع
A و
RA1 مع
B و
RA2 مع
C و
RA3 مع
D
بسم الله الرحمن الرحيم
نواصل شرح الدارة الالكترونية للساعة الرقمية
رأينا في الموضوع السابق، طريقة ربط المنفذ PORTA ، مع مفكك الترميز 7447 .
للعلم فإنّ المنفذ PORTA به 5 منافذ مرقمة RA4 RA3 RA2 RA1 RA0
هذا المنفذ استعملناه لإظهار الاعداد العشرية من 0 الى 9 ، وبما أننا نرسل الاعداد الى مفكك الترميز بشكل ثنائي، فإننا نحتاج 4 مخارج فقط، لان العدد 9 وهو اكبر عدد يظهر في الساعة، يكتب (1001) بشكل ثنائي.
لذا اخترنا المنافذ RA3 RA2 RA1 RA0 كما في التصميم.
نتحدّث الآن عن المنفذ PORTB :
المنفذ PORTB به 8 منافذ، يمكن برمجتها ك
مداخل entrees، او برمجتها ك
مخارج sorties.
حسب التصميم فإنّ المنفذين RB1 RB0 يبرمجان كمداخل، المنفذ RB0 يستعمل لضبط الدقائق، والمنفذ RB1 يستعمل لضبط الساعات، وسنعود بالشرح لهذين المنفذين.
المنافذ RB7 RB6 RB5 RB4 RB3 RB2 الستة المتبقية، للمنفذ PORTB تبرمج كلها كمخارج، و تستعمل للتحكم في المفاتيح.
المفاتيح ليست سوى الترونزستورات BC337 من نوع NPN .
كيف تظهر ارقام الساعة ؟
انّ اكبر تحدّي نصادفه، هو طبيعة تصميم هذه الدارة.
فإذا امعنتم النظر في طريقة ربط المرقّمات، فإنكم تلاحظون انّ القطع التي تحمل نفس الحرف توصل مع بعضها، أي انّ كل القطع التي تحمل حرف a لكل المرقّمات تربط مع بعضها، وكذلك الشأن لكل الحروف.
و هذا يعني بالضرورة اننا اذا أضأنا الحرف a ،فإن حرف a يضيء في كل المرقّمات الستة، وكذلك الامر بالنسبة للاعداد.
من هنا جاءت فكرة استعمال المفاتيح، فأنا في لحظة زمنية معيّنة لا اضيء سوى مرقم واحد وواحد فقط.
ويتم ذلك بغلق مفتاح المرقّم المراد إضاءته، وفتح بقية المفاتيح الخمسة.
الترونزستور الذي يلعب دور المفتاح يعمل في النظام التبديلي commutation ،أي يعمل في حالة التوقف bloque و حالة التشبع sature .
عندما نطبّق 1 منطقي ( 5 فولط ) على قاعدة الترونزستور فانه يتشبع و يصبح قاطعة مغلقة، و يوصل مصعد المرقّم بالجهد 5 فولط، مما يسمح للعدد بالظهور.
عندما نطبّق 0 منطقي ( 0 فولط ) على قاعدة الترونزستور فانه يتوقف و يصبح قاطعة مفتوحة، و يفصل مصعد المرقّم عن الجهد 5 فولط ، فينطفىء المرقّم.
السلام عليكم و رحمة الله و بركاته
أواصل معكم اليوم هذا المشروع، حيث سأتطرق الى بعض النقاط التي سأكمل بها شرحي للتصميم الالكتروني.
أولا : المذبذبات : oscillateurs
المتحكم pic 16F84 يقبل 4 انواع من المذبذبات :
1-
المذبذب oscillateur RC ، حيث يتعلق ترديد المذبذب بالمقاومة ، والمكثفة ، هذا المذبذب يتأثر بدرجة الحرارة ، و لا ينصح بإستعماله في هذا التطبيق.
2-
المذبذب low power LP ، يستعمل الكوارتز، أقصى قيمة هي 200khz .
3-
المذبذب XT ،بالكوارتز ، أقصى ترديد 4Mhz ، وهو المستعمل في هذا التطبيق.
4-
المذبذب high speed HS ، بالكوارتز ، أقصى ترديد 10Mhz .
يتم ربط الكوارتز الى المتحكم عند المدخلين
osc2 osc1 ، مع مكثفتين متساويتين ، قيمهما تستخرج من الجدول التالي :
عند استعمال المذبذب
XT ، يجب ذكر ذلك عند كتابة برنامج الاسمبلير في سطرالإعدادات الثالث
الذي يكتب كما يلي :
CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON &
_XT_OSC __
هذه الاعدادات الاربعة تسمى
fuses أو fusibles .
ثانيا : مفتاحا ضبط الدقائق و الساعات :
هاتين الضاغطتين مربوطتين بين المدخلين
RB1 RB0 ، و GND
ولكن هناك مقاومتين مربوطتين بين
RB1 RB0 ، و VCC ولكن بشكل مبرمج
كيف ذلك ؟
يجب ان تعرف جيّدا دور سجّل مهم من سجلات المتحكم ، اسمه
OPTION_REG .
clrf OPTION_REG معناه جعل كل بتات السجل في الصفر.
ثالثا : هناك مقاومة و مكثفة تربطان الى
MCLR ، دورها إستقرار الدارة.
الى هنا أكون قد انتهيت من شرح الدارة من الناحية الالكترونية
المواضيع القادمة ان شاء الله، ستكون لمعالجة تقنيلت البرمجة.
لمن يريد ان يحمّل
datasheet المتحكم عليه بالوصلة التالية :
datasheet 16F84
سأتحدث اليوم عن
الخوارزمية Algorithme المستعملة لبرمجة هذه الساعة الرقمية.
الدارة الالكترونية للساعة هي :
يجب ان نبحث عن الخوارزمية التي تعمل وفقها الساعة ، لكي نفكّر في كتابة البرنامج .
الخوارزمية لاتتغيّر ، اما البرنامج فيمكن كتابته بعدة لغات ، و سأركّز على لغة الاسمبلير.
هذا البرنامج الذي نكتبه ، نتحصل منه في النهاية على برنامج بإمتداد hex ، هو الذي نحتاجه ليشحن في المتحكم.
السؤال المطروح بعد التركيز في الدارة :
كيف يمكن اضاءة المرقّمات الستة في وقت واحد بإستعمال مفكك ترميز واحد ؟
و هنا مربط الفرس ، ومن هنا تبدأ فكرة البرنامج ، او بعبارة اخرى فكرة الخوارزمية.
في الواقع لا تضاء المرقّمات الستة في وقت واحد ، و إنما يضاء في لحظة زمنية مرقّم واحد فقط ، لان ذلك اقصى مايسمح به مفكك الترميز.
ولاضاءة المرقّمات الستة في وقت واحد ، نلجأ الى خداع حاسة البصر لدينا.
أي يضاء المرقم الاول وليكن الاقصى الى اليمين لمدة زمنية قصيرة تقدّر بالميلي ثانية ، ثم نطفئه و نضيء المرقم الموالي بنفس المدة الزمنية السابقة ، تم نطفئه ، و نكرّر العملية حتى نصل الى آخر مرقّم وهو الاقصى الى اليسار.
ثم نكرر اضاءة المرقمات بشكل متتابع، عدد من المرات نصل بها الى زمن قدره 1 ثانية.
نرفع عداد الثواني برقم ، ثم نكرّر العملية السابقة لإضاءة المرقّمات الستة.
نواصل رفع عداد الثواني ، وفي كل مرة نضيء المرقمات الستة ، حتى نصل الى العدد 59 ، حيث ننتهي من عد دقيقة.
نبدأ في رفع عداد الدقائق برقم ، ونعيد عداد الثواني الى الصفر ، ثم نكرّر كل العمل السابق وذلك بعرض تعاقب الثواني حتى نصل الى العدد 59.
نواصل رفع عداد الدقائق ، وفي كل مرة نضيء تعاقب ارقام الثواني ، حتي يصل عداد الدقائق الى العدد 59 ، وهنا ينتهي عد ساعة.
نبدأ في رفع عداد الساعات ، و نعيد عداد الدقائق الي الصفر ، ونعيد ايضا عداد الثواني الى الصفر.
ثم نبدأ بالإضاءة المتتابعة لارقام الثواني و الدقائق ، الى ان يصل عداد الدقائق الى العع 59 .
نقوم برفع عداد الساعات برقم ، ونعيد عداد الدقائق و الثواني الى الصفر ، ونبدأ بالعرض المتتابع للارقام.
نواصل رفع عداد الساعات حتى نصل الى العدد 23، و هنا ينتهي حساب يوم .
تعود كل الارقام الى الصفر، ويبدأ عد يوم جديد
لفهم جيّد لهذه الطريقة اقترح عليكم الخوارزمبة algorithme التالية :
حيث
أ يرمز لعداد الثواني ،
ب يرمز لعداد الدقائق ،
جـ يرمز لعداد الساعات
العبارة
أ = أ+1 معناها القيمة الجديدة للعدد أ هي القيمة السابقة للعدد أ يضاف اليه 1 .
هذه هي نقطة الانطلاق ، التي سيبنى عليها البرنامج.
فقط للتذكير :
المنفذ :
port A يستعمل لاظهار الارقام.
المنفذ :
port B يستعمل لاختيار المرقّم الذي سيضاء.
يمكنكا اخي تحميل بعض الدروس عن البيك من المرفقات بالتوفيق