بوستاتنا | تعليمي - ترفيهي - منوع

ربط المرمز الدوار مع المتحكم المايكروي PIC


شرح لطريقة ربط المرمز الدوار مع المتحكم المايكروي PIC مع مثال بسيط

يمكن ربط المرمز الدوار الى المتحكم المايكروي PIC  بأكثر من طريقة منها عن طريق (Hardware Interruption) لحساب عدد خطوات المرمز و اتجاه الحركة. تستخدم طريقة Hardware Interruption عندما يكون المتحكم المايكروي مخصص للقيام بوظائف اخرى عدا عن معرفة عدد خطوات المرمز الدوار و اتجاه حركته, حيث يتم تنفيذ الجزء المخصص لذلك عند حصول حركة (تغير في قيمة الفولتية الخارجة من نقطي الترميز).

سنتعرف في المثال التالي إلى طريقة حساب اتجاه و عدد الخطوات التي تحركها المرمز الدوار من دون الحاجة إلى Hardware Interruption لكون المتحكم المايكروي المستخدم مخصص لهذه الوظيفة, يمكن استخدام هذا البرنامج في الجزء المخصص للتنفيذ عند حصول Hardware Interruption في حال استخدام تلك الطريقة.

سيتم استخدام المتحكم المايكروي PIC16f676 في المثال والذي يحتوي على مذبذب داخلي بتردد يصل إلى 4MHz. تستخدم بيئة التطوير PicBasic Pro لكتابة البرنامج. في البداية نقوم بتحديد بعض الإعدادات الخاصة بالمتحكم المايكروي PIC16f676 وهي إلغاء MCLRE ليعمل المتحكم دون الحاجة إلى وجود مقاومة رفع على نقطة الارتباط MCLR, إيقاف مؤقت متابعة عمل المتحكم (Watchdog Timer) و تشغيل المذبذب الداخلي عن طريق كتابة الأوامر التالية:

#CONFIG
__CONFIG _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
#ENDCONFIG

يجب أيضاً تحديد سرعة المذبذب المستخدم لتتمكن بيئة التطوير من توليد إشارة مماثلة لإشارة RS232 دون الحاجة إلى وجود دائرة مدمجة في المتحكم لنقل المعلومات إلى الحاسوب. define OSC 4

يحتوي المتحكم المايكروي PIC16f676 على ريجستر مخصص لتعديل سرعة المذبذب الداخلي للحصول على التردد المطلوب بشكل دقيق يسمى بـ OSCCAL. تختلف هذه القيمة من متحكم إلى اخر, لذلك إن لم يعمل المثال على المتحكم الذي ستقوم باستخدامه حتى و إن كان من نفس الموديل, فانت بحاجة إلى تعديل قيمة هذا الريجستر للحصول على تردد دقيق. القيمة التي جعلت من تردد مذبذب المتحكم المستخدم 4MHz هي 60, لذلك يجب كتابة osccal = 60. سيتم ربط نقطتي ترميز المرمز الدوار إلى المتحكم المايكروي على النقطتين PORTA.2 و PORTC.4 و ربط المفتاح الموجود تحت مقبض التدوير إلى النقطة PORTC.5. سيتم إرسال المعلومات إلى الحاسوب عن طريق النقطة PORTC.2. بعد ربط الدائرة, لنبدأ الآن بشرح طريقة عمل البرنامج.

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

يقوم البرنامج أيضاً بتصفير العداد عند الضغط على ذراع التدوير ثم يدخل إلى حلقة غير منتهية لغاية رفع الضغط عن الذراع و ذلك لتجنب تكرار إرسال القيمة صفر على طول فترة الضغط على الذراع. يمكنك نسخ البرنامج التالي إلى بيئة التطوير PicBasic Pro و تحميله إلى المتحكم المايكروي PIC16f676 و تشغيل المثال.

#CONFIG
__CONFIG _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
#ENDCONFIG
define OSC 4
ansel = 0
osccal = 60
output portc.3
input porta
portc.3 = 0
v var byte
c var bit
pause 1000
serout portc.2,2,["Ready",13,10]
c = porta.2
main:
while porta.2 = c
if portc.4 = 0 then
v = 0
serout portc.2,2,[#v,13,10]
while portc.4 = 0
wend
endif
wend
c = porta.2
if portc.5 = porta.2 then
v = v 1
else
v = v-1
endif
serout portc.2,2,[#v,13,10]
goto main


الصفحة 1 من 1

 
سياسة الخصوصية حول الموقع اتصل بنا