قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-06-2011, 12:53 PM المشاركة 41   
افتراضي



الخطوات :
1- الخطوة الأولى سوف تكون تصدير export الماكرو Shift من التجربة السابقة حتى يمكن استخدامه هنا .تأكد من أن المشروع السابق GPIO_Lab4.fcf مفتوح . لتصدير الماكرو Shift من القائمة Macro اختار Export لفتح المربع الحوارى الخاص بتصدير الماكرو . اختار الماكرو Shift وانقر على Export







2- سوف تتم مطالبة المستخدم باختيار الدليل الذى يتم فيه الماكرو Shift . أحفظه فى المسار :
C:\Flowcode\GPIO_Lab5 على سبيل المثال .











3- إغلق المشروع GPIO_Lab4.fcf وانشأ مشروع جديد كما سبق باسم GPIO_Lab5.fcf واحفظه فى المجلد GPIO_Lab5 .
4- انشأ صندوق التهيئة باستخدام رمز الحسابات وانشأ كل من المتغيرين LED_Output و direction وخصص لكل منهما القيمة صفر كقيمة ابتدائية .
5- أضف بعد ذلك مباشرة رمز الحلقة الغير منتهية .
6- بعد ذلك أضف داخل الحلقة رمز الماكرو وغير اسمه إلى Decide واستورد الماكرو Shift من القائمة Macro والخيار Importثم اختياره ثم انقر على الزر OK .







7- بعد ذلك أضف صندوق الوظيفة Do_Outputs باستخدام رمز الخرج وخصص المتغير LED_Output للمنفذ PORTC .
8- أضف صندوق وظيفة التوقيت باستخدام رمز التأخير وخصص له واحد ثانية .
9- شكل مخطط المسار يصبح كما فى الشكل التالى :









10- فى هذا التطبيق سوف يتم توصيل المفتاح الضاغط إلى الطرف RB0 . اختار مكون مفتاح وخصص له 5mS لمنع الارتدادات كما فى التجربة السابقة .




اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-06-2011, 12:59 PM المشاركة 42   
افتراضي


11- فى هذه التجربة لن نحتاج إلى صندوق الوظيفة Get_Inputs لأننا سوف نستخدم المقاطعة . لإنشاء مقاطعة نستخدم رمز المقاطعة Interrupt icon . أنقر واسحب واسقط رمز المقاطعة فى مخطط المسار الرئيسى أسفل نقطة البداية مباشرة .








12- إنقر نقرا مزدوجا على رمز المقاطعة لفتح نافذة خواص المقاطعة . غير الاسم المعروض إلى PB_Interrupt " المقاطعة بالمفتاح الضاغط" واختار INT من القائمة المنسدلة بالخانة “Interrupt on:” "المقاطعة عند "








13- انقر على الزر Properties واختار “rising edge of INT” من خانة "اختيار حافة المقاطعة "






إنقر على الزر OK للرجوع إلى نافذة خواص المقاطعة .
14- الخطوة التالية إنشاء الماكرو الذى سوف يستدعى متى بدأت المقاطعة . هذا الماكرو سوف يكون "روتين خدمة المقاطعة" Interrupt Service Routine or ISR . إنقر على الزر
Create New Macro... تفتح لك نافذة إنشاء ماكروجديد . غير اسمه إلى INT_ISR وأضف الوصف المناسب للماكرو الجديد .








إنقر على الزر OK للرجوع إلى نافذة حواص المقاطعة .
15- فى نافذة خواص المقاطعة إنقر على الزر OK & Edit Macro لفتح منطقة عمل لمخطط مسار جديد للماكرو INT_ISR .
16- قى منطقة عمل INT_ISR أضف رمز حسابات بين نقطتى البداية والنهاية . انقر نقرا مزدوجا على رمز الحسابات لفتح نافذة خواصه وغير الاسم المعروض إلى
“Toggle direction variable” وفى خانة الحسابات أضف نص الحسابات الذى يؤدة إلى تحويل متغير الاتجاه من الصفر إلى الواحد . أو من الواحد إلى الصفر فى كل مرة تبدأ فيها المقاطعة وذلك باستخدام المؤثر المنطقى XOR كما سبق .




إنقر على الزر OK للاستمرار .
17- مخطط مسار INT_ISR يصبح كما فى الشكل الآتى :




اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-06-2011, 01:02 PM المشاركة 43   
افتراضي


18- نعود إلى نافذة مخطط المسار الرئيسى والذى يصبح كما فى الشكل التالى :




19- ترجم المشروع وتأكد من عدم وجود أخطاء . حاكى البرنامج وتأكد من قيامه بعمل المهمة المطلوبة منه .
هذا المشروع يتصرف بنفس طريقة المشروع السابق . سوف يلاحظ المستخدم أن الليدات الآن أكثر استجابة للمفتاح الضاغط والفضل يرجع للمقاطعة .




الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-06-2011, 12:06 AM المشاركة 44   
افتراضي


تجارب معمل التحويل من تناظرى إلى رقمى Analog-to-Digital Converter Labs
مقدمة :
المحول من تناظرى لرقمى يسمح بتحويل جهد دخل تناظرى بمقارنته بجهد مرجعى reference voltage ومن خلال استخدام التقريب المتتابع لتحويل مستوى الجهد إلى قيمة ثنائية ذات 10 خانات بحيث يمكن استخدامها فى البرنامج . جهد المرجع هذا يمكن أن يكون كدخل خارجى على الطرف المسمى VREF أو يمكن أن يكون داخليا باستخدام الجهد الموجب VDD .
الأشكال التالية تبين نتيجة المحول ADC بالمقارنة بجهد المرجع :









التجارب التالية تتناول استخدام المحول ADC بنتيجة مكونة من 7 خانات والجهد VDD كجهد مرجع .

التجربة الأولى :
المحول من تناظرى لرقمى ADC البسيط :
تمهيد :
فى هذه التجربة سوف نستخدم المدخل التناظرى RA0 /AN0 للميكروكونترولر PIC16F877A . يتم تغيير الجهد باستخدام مقاومة متغيرة 100 K وجهد المرجع هو VDD داخليا . يمتلك الفلوكود ماكروهات مخصصة للمحول ADC وسوف تستخدم فى تمثيل مستوى الجهد بثمانى خانات . بعد ذلك يتم تخصيص النتيجة ذات الثمانى خانات للمنفذ PORTC لإضاءة الليدات المتصلة بأطرافه لعرض النتيجة .

الدائرة الكهربية :






الخطوات :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-06-2011, 12:09 AM المشاركة 45   
افتراضي


الخطوات :
1- إنشأ مشروع جديد كما سبق .واحفظه باسم ADC_Lab1.fcf فى مجلد فى المسار :
C:\Flowcode\ADC_Labs\ADC_Lab1 على سبيل المثال .
2- إنشأ ماكرو جديد باسم Init_variables " تهيئة المتغيرات" . فى هذا الماكرو يتم تهيئة متغير نوع ByteLED_Output بالصفر باستخدام رمز الحسابات والعودة مرةو أخرى للمخطط الرئيسى .







3- إنقر واسحب واسقط رمز الماكرو فى المخطط الرئيسى بعد نقطة البداية وأعد تسميته Initialize واستدعى الماكرو Init_variables الذى تم إنشاءة فى الخطوة السابقة .
4- أنقر واسحب واسقط رمز حلقة بعد ماكرو التهيئة Initialize يصبح مخطط المسار الرئيسى كما فى الشكل التالى :










5- أضف المكون ADC بالنقر عليه من شريط أدوات المكونات (قائمة المداخل) .







الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-06-2011, 12:13 AM المشاركة 46   
افتراضي


6- إفتح نافذة خواص المكون وحدد طرف التوصيل AD0 كما فى الشكل التالى :





إنقر على الزر Done للعودة لنافذة مخطط المسار الرئيسى .
7- كما ذكر سابقا كل مكون يخصص له عدد من الماكروهات السابقة التجهيز . فى هذه التجربة سوف نستخدم ماكرو من الماهروهات المخصصة للمحول ADC وهو الماكرو :
BYTE ReadValueAsByte : والذى يعود بالثمانى خانات الأعلى قيمة فقط من العشر خانات التى تشكل قيمة نتيجة التحويل ADC .
8- إنقر واسحب واسقط رمز "ماكرو مكون" فى داخل الحلقة السابقة . إنقر نقرا مزدوجا على الرمز لفتح نافذة خواصه وأعد تسميته Get_Inputs واختار المكون ADC(0) المتاح حاليا بخانة component . من قائمة الماكروهات “Macro:” اختار الماكرو ReadAsByte . واختار المتغير LED_Output ليكون الهدف الذى يتم نسخ الثمانى خانات من قيمة التحويل ADC إليه وذلك من القائمة المنسدلة “Return ValueBYTE)” ويصبح شكل نافذة الخواص كما فى الشكل التالى:









إنقر على الزر OK للرجوع لنافذة مخطط المسار الرئيسى .
9- الصندوق الأخير فى مخطط المسار هو وظيفة الخرج باسم Do_Outputs. القيمة الموجودة فى المتغير LED_Output التى حصلنا عليها من الخطوة السابقة يجب أن تخصص (تنقل – تنسخ) إلى سجل المنفذ PORTC لإخراجها إلى الليدات المتصلة بأطراف المنفذ . إنقر واسحب واسقط رمز خرج تحت الرمز السابق وأعد تسميته Do_Outputs وخصص قيمة المتغير LED_Output للمنفذ PORTC كما فى الشكل التالى :









إنقر على الزر OK للاستمرار .
الشكل النهائى لمخطط المسار يصبح كما فى الشكل التالى :



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-06-2011, 12:15 AM المشاركة 47   
افتراضي


  • ترجم المشروع وتأكد من عدم وجود أى أخطاء .





  • إختبر المشروع بالمحاكاة وتأكد من قيامه المهمة المطلوبة فى شكل إضاءة لليدات فى تتابع يمثل عدد ثنائى يمثل قيمة خرج المحول ADC .




الصورة الرمزية noornader
noornader
:: عضو ذهبي ::
تاريخ التسجيل: Mar 2007
المشاركات: 608
نشاط [ noornader ]
قوة السمعة:
قديم 14-06-2011, 10:24 AM المشاركة 48   
افتراضي


بارك الله فيك اخى العزيز/ فتح الله
على هذا الجهد الكبير وهذا الابداع الرائع
تقبل تحياتى



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:12 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)