Header Ads

ما هو المايكروكنترولر Microcontroller


ما هو الـمايكروكنترولرMicrocontroller ؟

هو ببساطة جهاز كمبيوتر ذو حجم صغير، يقوم بمعظم وظائف الكمبيوتر تقريباً، تختلف طبيعة المهام التي يقوم بهما تبعاً لإختلاف البرنامج الذي يتم برمجته به، و تبعاً للدائرة الالكترونية التي يتم توصيله بها.

يتم برمجة المايكروكنترولر بإحدى لغات البرمجة C or Assembly or Basic ، و يتم تنزيل البرنامج الذي تقوم بكتابته على المايكروكنترولر عن طريق جهاز يسمى Programmerيتم توصيله بالكمبيوتر و المايكروكنترولر.
يوجد العديد من الشركات المصنعة للمايكروكنترولر، و يختلف كل مايكروكنترولر عن الآخر في سرعة الـ processor و التكلفة و … إلخ.
و سوف نتعامل في هذا اليوم مع مايكروكنترولر من شركةMicrochip، تنقسم منتجات شركة Microchip إلى العديد من العائلات منها PIC12F و منها PIC16F و منها PIC18F و ..... إلخ، و سوف ندرس اليوم كيفية التعامل مع الـ PIC16F84A.
مما يتكون الـ Microcontroller ؟
يتكون المايكروكنترولر من:1- Microprocessor
2- Oscillator
3- RAM
4- ROM
5- Counters
6- Timers
7- ADC




أولاً الـ Microprocessor:و هو المسئول عن تنفيذ العمليات المنطقية و الحسابية
في المايكروكنترولر.

ثانياً الـ Oscillator:عبارة عن مصدر لتوليد الـ pulses و التي تُمكن
الـ microprocessor من القيام بالمهام المطلوبة.
ثالثاً الـ RAM:
- متطايرة، لا تحتفظ بالـ data في حالة انقطاع التيار الكهربي.
- يتم تخزين فيها الـ Variables المُستخدمة في البرنامج.
رابعاً الـ ROM:
- ليست متطايرة، أي أن الـ data التي بها لا تضيع في حالة انقطاع التيار الكهربي.
- يتم تخزين البرنامج الذي فيه المهام التي سينفذها المايكروكنترولر بها.
خامساً ADC:
و هي وحدة مسئولة عن تحويل الاشارات الـ Analog إلى اشارات Digital يُمكن التعامل معها من قِبل المايكروكنترولر.
و الآن سوف نتعرف على الـ PIC16f84A:
مايكروكنترول

شكل (1) يوضح صورة المايكروكنترولر PIC16f84a و الذي يتكون من 18 رجل -18 pins- كل رجل لها وظيفة محددة، يتم تحدديدها عن طريقة البرمجة، و هذه الوظائف تُكتب في الـ Datasheet.
في حالتنا هذه نجد أن الرجل رقم 1 << مكتوب بجوارها RA2
و الرجل رقم 18<< مكتوب بجوارها RA1
في الـ PIC16f84a يوجد 18 pin، منها 5 pins تُستخدم لتوصيل المايكروكنترولر بالـ volt المطلوب و بعض الدوائر الخاصة اللازمة لبدء تشغيله ، و 13 Pins تُستخدم كـ دخل و خرج للمايكروكنترولر، وبالتالي فهو له مجموعة من الـ inputs التي يتم معالجتها بواسطة الـ processor و يتم اخراج ناتج هذه المعالجة على الـ pins المختصة بالخرج.
و من الناحية التنظيمية فلقد تم تقسيم الـ 13 pins المختصة بالـ input & output إلى مجموعتين المجموعة الأولى يُطلق عليها PORT A و المجموعة الثانية يطلق عليها PORT B،، ويتكون الـ PORT A إلى 5 pins و هم RA0,RA1,RA2,RA3,RA4، بينما يتكون الـ PORT B من 8 pins و هم RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB6, RB7
و فيما يلي سوف نتعرف عليهم بشىء من التفصيل.
الدوائر اللازمة لتشغيل المايكروكنترولر:
أولاً: دائرة الباور<< يعمل المايكروكنترولر على بمصدر جهد مقداره 5 فولت و 25 ميلي أمبير، لذلك فهناك العديد من الطريق لتوفير هذا المصدر بتلك الموصفات نذكر منها :

1- مصدر جهد(بطارية) 12 فولت + IC 7805 << سيكون خرج هذه الدائرة 5 فولت، يتم توصيل الطرف الموجب على الـ pin المكتوب بجوارها VDD في المايكروكنترولر (pin no. 14).
مخفض جهد كهربائي


2- step down transformer + four diodes to rectifier +7805 .

ثانياً دائرة الـ Reset:يتميز المايكروكنترولر بأن له pin تُسمى MCLR رقم 4، بأنها إذا تم توصيلها بالأرضي فإنه يقوم بعمل restart للمايكروكنترولر
و يبدأ في تنفيذ الكود مرة آخرى.
كيفية التوصيل: يتم توصيل push-button أحد أطرفه بالأرضي و الآخر بالـ MCLR


.


ثالثاً دائرة الـ Oscillator :المايكروكنترولر كغيره من الأجهزة التي تحتوي على processor تحتاج إلى مولد نبضات أو ما يُعرف بـ Oscillator.
يتم توصيل crystal 4MH على الطرفين OSC1, OSC2 أي على الـ pin no. 16, 15.
ملحوظة:أرجل الـمايكروكنترولر مُصنعّة بتقنية TTL أي Transistor Transistor Logic و هذا يعني أن الـ pin التي تُستخدم في المايكروكنترولر لابُد و أن يتصل بها إما مصدر جهد أو أرضي، و ذلك لأن عدم توصيل تلك الأرجل على أي منهما سوف تتعرض لـ Noise، و من ثم نجد أنه يظهر لنا مصطلح جديد pull up resistor, pull down resistor.
ما هو الـ Pull resistor: هي مقاومة تُقدر بحوالي من 4 إلى 10 كيلو أوم، يتم وضعها بين الـ pin و الأرضي أو مصدر الجهد على حسب pull up/down resistor.
مثال: دائرة الـ MCLR و المسؤلة عن عمل Reset للمايكروكنترولر، يتم توصيل الـ push button بالأرضي و الطرف الآخر بالـ Pin، فإذا تم الضغط عليه فإنه يتم توصيل الـ pin بالأرضي مباشرة، و بالتالي يتم حدوث reset للمايكروكنترولر، و هنا يظهر السؤال ماذا لو لم يتم الضغط عليه؟ ما القيمة الموجودة على الـ pin الآن في حالة عدم الضغط عليه؟، ستجد إن الاجابة إن تلك الـ pin متروكة في الهواء، قليل من الـ noise كافلة بأن تضع عليها واحد أو صفر، لذا فإنه يجب أن يكون التعديل في الـدائرة على النحو الآتي:

لكي تستخدم المايكروكنترولر في دائرة تحكم، فلابد من تظبيط الهاردوير اللازم لتشغيل المايكرو، وكذلك يلزم تظبيط السوفت وير << و من هنا يظهر لنا مصطلح registers، الـ register هو المسؤل عن عمل الـ configuration اللازمة للهاردوير حتى يُمكن استخدامه و أداء الوظائف المطلوبة من الهاردوير، عندنا العديد من الـ register التي سوف نتعامل معاها و هم Tris, Port, ADCON0, INTCON,….etc.

أولاً TRIS:
الـ TRIS هو register مسئول عن تظبيط الـ pins directions، بمعنى إنه المسؤل عن تحديد أي الـ pins سوف استخدمها كـ input و أيهم سوف يتم استخدامه output، و بالتالي فأنا استطيع بالبرمجة أن أجعل كل الـ Pins كـ inputs أو كلهم كـ output.
مثال: عندي led (مصدر ضوئي) سوف يتم توصيله بالمايكرو<< في هذه الحالة فإن الـ pin التي استخدمها في توصيل الـ led بالمايكرو سوف تكون كـ output، و بالتالي فإن الجملة المسئولة عن تظبيط تلك المسألة هيه
;<register_name><port_name>.<pin_number>=<1 or 0
TRISB.b0=0 >> هنا نجد أن اسم الـ register << TRIS، و اسم الـ port الذي تم توصيل الـ led به هوه port B، لذا كتبنا TRISB، أيضاً نجد إننا قد وصلنا الـ led بالـ pin رقم 0 في الـ port B ، و بناء عليه فإني قد عرفت المايكرو إني سوف استخدم الـ Pin رقم 0 في الـ port اللي اسمه B كـ output.
مثال آخر، لدي مفتاح كهربي متصل على الـ pin رقم 0 في الـ port A << بالطبع المفتوح سوف يُستخدم كـ input للمايكروكنترولر،، و بالتالي سوف تكون جملة الـ direction هي TRISA.b0=1;
أن اسم الـ register << TRIS، و اسم الـ port الذي تم توصيل الـ switch به هوه port A، لذا كتبنا TRISA، أيضاً نجد إننا قد وصلنا الـ switch بالـ pin رقم 0 في الـ port A ، و بناء عليه فإني قد عرفت المايكرو إني سوف استخدم الـ Pin رقم 0 في الـ port اللي اسمه A كـ input.
إذاً في حالة تظبيط الـ pin directions فإن 0 << تعني output، 1 << تعني input.
المطلوب منا الآن كي نبدأ في برمجة المايكروكنترولر، هو تعلم بعض الأوامر في لغة الـ C، و تعلم استخدام برنامج Proteus و برنامج Mikro C.



شارك زملاءك لتصلكم مواضيعنا القادمة إن شاء الله تعالى

هناك تعليق واحد:

يتم التشغيل بواسطة Blogger.