1/ ما هو ممكن مع فلوكود بالنسبة لمشروعك بالبيك 16f877a:
المخارج :
عرض بيانات على شاشة Lcd او 4 عارضات سباعية او ليدات عادية
تشغيل ريليه او موتور او الة كهربائية (بعد تقوية المخارج طبعا بترانزيستورات حسب كل حالة )
تشغيل صفارة انذار وما يشبه ذلك ..
كل مخارج Pic16F877a رقمية : اما 0 فولت أو 5 فولت كما هو معروف..
المداخل :
توصيل سويتشات تربط المدخل مع +5 فولت او مع 0 فولت (الارضي) حسب الحالة
توصيل متحسسات ديجيتال عملها يشبه عمل السويتشات السابقة (اما ان تعطي لمدخل البيك +5 فولت او 0 فولت: حالاتان لا ثالث لهما)..
في المقابل لا يمكن تغيير اعدادات المبدل انالوج/ ديجيتال الموجود بالبيك لان المكون "حرارة" او المكون adc وهو الامكانية الوحيدة للتعامل مع بيانات ثماثلية ، لا يسمح فلوكود بتغيير خاصياته Propriétés..
معنى ذلك انك لن تستطيع التحكم في اعدادت مسجلات المبدل A/D وهي:
ADCON0 ،ADCON1،ADRESH ،ADRESL
وهي اعدادات ضرورية للاستفادة من المبدل convertisseur analogique/Digital
الذي يتوفر عليه Pic16F877a وخاصة المسجل ADCON1 ..
افتح ملف قياس الحرارة (الذي أشرت اليه سابقا) ببرنامج بروتوس ولا حظ ان كل 0.01 فولت مسجلة على المتحسس ، تترجمها شاشة العرض الى رقم معين يزيد درجة او ينقص بحسب الجهد الخارج من المتحسس LM35..
هناك المثال Tut_26 الذي يقدم طريقة لقياس الحرارة ،افتحه وسترى انك لن تستطيع تغيير أي شيء مما سبق في فلوكود.
هناك ما يمكن فعله لكن يحتاج ذلك الى مجهودات اضافية ودراية بالاسمبلي او C :
1- استعمال المكون adc مدخل انالوج وقبول الاعدادات المسبقة لفلوكودن وبعد ذلك فتح الملف اسمبلي او C ومحاولة التعرف على اعدادات السجلات المذكورة سابقا ، لمعرفة طبيعة هذه الاعدادات المسبقة قصد تغييرها بعد ذلك بما يناسبك، وتكون التجربة على برنامج محاكاة مثل بروتوس.
2- هناك امكانية اخرى، وهي اضافة جزء برنامج ب C او الاسمبلي او خاص بالتحكم في الاعدادات المذكورة ، لكن مثل هذا العمل يحتاج لدراية بلغة C حتى يمكن اعداد ملف Hex خارج فلوكود ، لان فلوكود لا تتعرف على الاضافات من اللغات الاخرى رغم انها تسمح بإقحامها في البرنامج الاصلي Main..
ملاحظة:
لم اتمكن من معرفة نوع اشارة المتحسسات في الموقع السابق ولا أعرف ان كانت ديجيتال او انالوج او كانت نبضات او غير ذلك .. هذه معلومات ضرورية لتحديد طريقة التعامل معها..
2/ اعدادات Flowcode لمكون adc :
لتطويع المكون ADC في Flowcode V3 لابد من فهم خصائصه انطلاقا من المثال Tut_26 ..
وبعد معاينة ملفات C و asm التي انتجها Flowcode مع PIC16F877a
وبالرجوع الى داتا شيت PIC16F877a
تبين أن سجل إعداد محول البيك A/D : ADCON1 تم اسناد القيمة 0 لكل طرف (bit) من أطرافه..
ADCON1 = 00000000 = 0
- b7 : ADFM : A/D result ForMat select = 0
- b6 : « 0 »
- b5 : « 0 »
- b4 : « 0 »
- b3 : PCFG3 : 0
- b2 : PCFG2 : 0
- b1 : PCFG1 : 0
- b0 : PCFG0 : 0
----------
ADCON1 = 0
ADFM (b7) = 0 => (ازاحة لليسار)
PCFG = 0000 =>
معناه ان المداخل التالية تناظرية وليست رقمية :
RE2
RE1
RE0
RA5
RA3
RA2
RA1
RA0
وأن الجهد المرجعي الموجب هو جهد تغذية البيك أي +5 فولت :
+Vref = VDD (=+5v)
وأن الجهد المرجعي السالب هو ارضي تغذية البيك أي فولت :
- Vref = VSS = 0v (= الارضي )
وعليه فإن:
خصائص المكون ADC في Flowcode بالنسبة للمتحكم PIC16F877a هي :
1- الجهد المرجعي الموجب : +5 فولت
والجهد المرجعي السالب هو الأرضي .
2- المداخل (analogiques) هي:
RE2,RE1,RE0,RA5,RA3,RA2,RA1,RA0
كما ان نتيجة عملية التحويل تتم داخل البيك باستعمال الإزاحة الى اليسار ( معلومة غير ضرورية لمشروعك ، هي فقط للإخبار) .
باختصار يمكنك الاستفادة من Flowcode لاستخدام مداخل غير رقمية ، لقياس جهود تتراوح بين 0 فولت و 1 او 2 او 3 .. 5 فولت او اكثر ثم تجربة الملف Hex على بروتوس بعد اضافة مقاومة متغيرة الى مدخل البيك الذي اخترته كمدخل غيرقمي (analog)..
مثال : مقياس حرارة :
العنصر متحسس الحرارة LM35 يترجم حرارة في المكان الى جهد ن وكل درجة حرارة = 10 ميلي فولت أي ان 25 ميلي فولت مسجلة عليه في الرسم ، معناها ان درجة الحرارة = 25.
وكلما تغيرت درجة الحرارة يتغير الرقم ..
وطبعا لتكييف جهد مخرجه مع معطيات المكون ADC في برنامج Flowcode على النحو السابق ، نضيف مقاومة متغيرة 10 كيلو للضبط الدقيق ..
دارة مقياس حرارة تطبيق للمثال Tut_26 وبإضافة مقاومة متغيرة :
http://www8.0zz0.com/2009/01/17/09/716423074.gif
ملا حظة : من الممكن وضع مكبر اشارة بين البيك وبين مجس الحرارة ، لجعل القياس يتناول درجات الحرارة مع اجزاء عشرية ، مثل : ° 25,2