المدخلات التماثلية في المتحكم المايكروي PIC

شارك عبر:

تم نسخ الرابط

المدخلات التماثلية في المتحكم المايكروي PIC

شرح لكيفية التعامل مع المدخلات التماثلية في المتحكم المايكروي PIC باستخدام PicBasic Pro


يختلف عدد المدخلات التماثلية في المتحكم المايكروي PIC من موديل إلى اخر. يمكنك اختيار الموديل المناسب لك حسب عدد الإشارات التماثلية المطلوب قياسها. يحتوي المتحكم المايكروي (40pins) PIC18F4550 على سبيل المثال على 13 مدخل يمكن إعدادها كمداخل تماثلية في حين يحتوي المتحكم المايكروي (8pins) PIC12F675 على 4 مدخلات يمكن إعدادها كمدخلات تماثلية. من المهم أيضاً تحديد دقة القياس (Resolution) المطلوب حيث إن اغلب دوائر القياس في هذه المتحكمات تتكون من 10bit يمكن تقليلها في حالة عدم الحاجة لهذه الدقة.


كيف تعمل دوائر التحويل من تماثلي الى ثنائي ؟

لفهم كيفية عمل دوائر (ADC) سنقوم بأخذ معطيات دوائر (ADC) ذات الدقة 10bit الموجودة في المتحكم كمثال. أي إن ناتج عملية التحويل ممكن أن يتراوح بين 0 و 1023 (0000000000 , 1111111111 بالنظام الثنائي). تقوم دائرة التحويل بتقسيم الفولتية المرجعية إلى 1023 جزء. تكون فولتية المرجعية افتراضياً هي فولتية الدخول أي إن فولتية المرجع الأدنى هي 0 فولت و المرجع الأعلى 5 فولت. بتقسيمها إلى 1023 جزء, ستكون فولتية الجزء الواحد (الخطوة الواحدة) 0.00488 فولت. لقياس الفولتية الداخلة, تقوم الدائرة بتشغيل عداد يحسب عدد الخطوات التي تحتاجها الدائرة للوصول إلى فولتية تكون مساوية أو اكبر من الفولتية المطلوب قياسها, عند الوصول إلى هذه الفولتية, تعطي الدائرة قيمة العداد كمقياس لنسبة الفولتية الداخلة إلى فولتيات المرجعية.

لإيضاح فكرة دقة الدائرة (Resolution), لنأخذ دائرتين بدقتين مختلفة و نقارن بينهما. الدائرة الأولى يتكون ناتجها من أربعة بتات (4bit resolution) و الثانية من عشر بتات (10bit resolution). فولتية المرجعية لكلتا الدائرتين متطابقة (0-5) فولت و الفولتية الداخلة المطلوب قياسها هي 2.75 فولت.

ستقوم الدائرة الأولى بتقسيم فولتية المرجعية إلى 32 جزء. أي إن قيمة الخطوة الواحدة ستكون 0.15625 فولت. سيبدأ العداد بالتزايد ويصل حتى الخطوة رقم 18 حيث ستصبح الفولتية المقارنة مع الفولتية الداخلة اكبر فيتوقف العداد وتكون النتيجة 18. بمعرفة الفولتية المرجعية, نستطيع الآن أن نحسب قيمة الفلوتية التي تم قياسها و هي ((18/32)*(5-0)) حيث ستكون النتيجة 2.8125 فولت.

لنقم الآن بإعادة الحسابات للدائرة ذات الدقة 10 بت. تكون فولتية الخطوة الواحدة 0.00488. سيبدأ العداد بالزيادة حتى يصل الخطوة رقم 563, حيث ستصبح الفولتية المقارنة مع الفولتية الداخلة اكبر و سيكون ناتج التحويل هو 563. بإعادة حساب الفولتية ((563/1023)*(5-0)) تكون الفولتية المحسوبة 2.75171 فولت.

لاحظ الآن الفرق بين النتيجتين عن الفولتية الداخلة. تحيد قراءة الدائرة الأولي عن القيمة الحقيقية بـ (2.8125 - 2.75) أي 0.0625 فولت (62.5 ملي فولت) في حين تحيد الفولتية ألمقاسه عبر الدائرة الثانية (2.75171 - 2.75) أي 0.00171 فولت (1.71 ملي فولت).

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

إعدادات دائرة قياس الفولتية التماثلية في المتحكم المايكروي PIC.

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

عدد المداخل التماثلية: يجب في البداية تحديد عدد المدخلات التماثلية المطلوب استخدامها في مشروعك, حيث انك قد لا تكون بحاجة إلى استخدام جميع نقاط الارتباط الممكن تحويلها إلى مدخلات تماثلية كمدخلات تماثلية. لذلك عليك في البداية تحديد عددها ليتم تحويلها إلى مدخلات تماثلية و ترك الباقي كمداخل أو مخارج ثنائية. يتم تحديد عدد المداخل التماثلية في المتحكم PIC18F4550 عن طريق البتات الأربع الأقل قيمة (0-3) في الريجستر ADCON1.

الفولتية المرجعية الصغرى: كما ذكرنا سابقاً, فإن دوائر تحويل الفولتية التماثلية إلى ثنائية تعتمد على قياس نسبة هذه الفولتية إلى مستويين من الفولتية. يمكنك ربط فولتية مرجعية صغرى مختلفة عن قيمة مصدر التغذية للمتحكم, أو استخدام الفولتية على VSS كفولتية مرجعية صغرى. يمكن ربط فولتيات مختلفة عن فولتيات مصدر التغذية لحصول على مرونة اعلى, فيمكنك على سبيل المثال قياس فولتيات سالبة. يتم تحديد فولتية المرجعية الصغرة عن طريق قيمة البت السادس (رقم 5 على اعتبار إن البت الأول يبدأ بالرقم صفر) في ADCON1.
الفولتية المرجعية الكبرى: كما في الفولتية المرجعية الصغرى, يمكن تحديد مصدر لهذه الفولتية أو استخدام الفولتية VDD المجهزة إلى المتحكم لقياس نسبة الفولتية على المدخلات التماثلية إليها. يتم تحديد مصدر فولتية المرجعية الكبرى عن طريق قيمة البت الخامس (رقم 4) في ADCON1.

تموضع النتيجة: كما ذكرنا سابقاً, تتكون نتيجة تحويل الفولتية التماثلية إلى ثنائية من 10bit, لذلك فإن النتيجة لا يمكن خزنها في بايت واحد (8 بت) ولخزنها في كلمة (Word = 2Byte = 16bit) سيكون هناك 6 بتات غير معلومة القيمة يضع المتحكم أصفاراً بدلاً عنها. لذلك انت بحاجة إلى تحديد موضع هذه الأصفار حسب طريقة تعاملك مع المتغيرات. يمكن وضع الأصفار على يمين النتيجة أو على يسارها من خلال تحديد قيمة البت الثامن (رقم 7) في الريجستر ADCON2.
توجد أيضاً بعض الإعدادات الأخرى مثل الوقت المسموح للمتحكم ليقوم بشحن المتسعة المستخدمة في مقارنة الفولتية و إعدادات اخرى لكنها ليست أساسية في عمل دائرة قياس الفولتية التماثلية.

لنبدأ الآن بكتابة برنامج باستخدام بيئة التطوير PicBasic Pro لقياس فولتية إشارتين تماثليتين مختلفتين و عرضها على الحاسوب عن طريق منفذ Serial. سنستخدم في هذا المثال المتحكم PIC18F4550 لقياس فولتية إشارتين تماثليتين مختلفتين ليتم عرضها على الحاسوب باستخدام منفذ Serial (RS-232).

نقوم في البداية بتحديد نوع المتحكم المستخدم في بيئة التطوير PicBasic Pro كما موضح في شرح بيئة التطوير.

بعد تحديد سرعة المذبذب لبيئة التطوير عن طريق الأمر define OSC 8 حيث سيتم الاعتماد على المذبذب الداخلي للمتحكم, نقوم بتحديد الإعدادات المطلوبة لدائرة قياس الفولتية التماثلية. يمكن تحديد هذه الإعدادات بالاعتماد على الريجسترات الموجود في بيانات المتحكم, أو استخدام الأوامر المتوفرة في بيئة التطوير PicBasic Pro والتي ستقوم بدورها بتعيين القيم المطلوبة لهذه الريجسترات تلقائياً. يستخدم الأمر define ADC_BITS 10 لتحديد دقة دائرة القياس ب 10 بت. نحدد الآن المدخلات و المخرجات المطلوبة, input PORTA سيجعل من جميع نقاط المنفذ A كمدخلات (سنقوم باستخدام 2 من نقاط هذا المنفذ كمدخلات تماثلية) و الأمر output PORTD سيجعل من المنفذ D مخرجات (تستخدم احد نقاط هذا المنفذ لإرسال البيانات إلى الحاسوب). من مراجعة بيانات المتحكم, نستخرج القيم الواجب تغييرها في الريجسترات المطلوبة, ADCON1 = %000011011 سيجعل من المدخلين الأول و الثاني مدخلين تماثليين و يحدد فولتيات المرجعية الكبرى و الصغرى بفولتيات التغذية, أما ADCON2.7=1 فسيجعل تموضع النتيجة على اليمين (يتم وضع الأصفار على اليسار لتصبح بلا تأثير على النتيجة).

يجب تخصيص متغير من نوع كلمة (Word) ليتم خزن نتيجة القياس فيه لنتمكن بعدها من إرسالها إلى الحاسوب. الأمر AdcVal var word يقوم بحجز 2 بايت (word) للمتغير AdcVal لنتمكن من استخدامه لاحقاً في البرنامج.
نبدأ الآن بقياس الفولتية لكل مدخل تماثلي و إرسال القيمة إلى الحاسوب, لذلك نحن بحاجة إلى حلقة غير منتهية تقوم بتكرار هذه الأوامر. نضع عنوان mainloop لنتمكن من إعادة تنفيذ الخطوات إلى هذا العنوان بعد انتهاء الأوامر المطلوب تكرارها.

يستخدم الأمر adcin لقياس الفولتية التماثلية في بيئة التطوير PicBasic Pro بسهولة, فبمجرد تحديد رقم المدخل المطلوب قياس الفولتية عليه و المتغير المطلوب خزن النتيجة فيه, سيقوم الأمر بجميع الإعدادات المطلوبة لربط تلك النقطة إلى دائرة القياس, قياس نسبة الفولتية الداخلة إلى الفولتيات المرجعية و خزن النتيجة في المتغير الذي تم تحديده, لذلك, لقياس الفولتية على المدخل التماثلي الأول (رقم 0) نستخدم الأمر adcin 0, AdcVal ليقوم الأمر بقياسها وخرنها في المتغير AdcVal والأمر adcin 1,AdcVal مع المدخل التماثلي الثاني.

بعد قياس الفولتية و خزنها في المتغير, نرسل هذه القيم إلى الحاسوب. توجد الكثير من الأوامر التي من الممكن استخدامها لإرسال المعلومات من المتحكم إلى الحاسوب و التي سستم مناقشتها تباعاً في دروس اخرى, لكن في هذا المثال سنستخدم الأمر serout PORTD.2,2,["V1 = ",13,10] لإرسال قيمة الفولتية الأولى و الأمر serout PORTD.2,2,["V2 = ",13,10] لإرسال قيمة الفولتية الثانية.

سيتم ربط المدخل التماثلي الأول إلى مصدر الفولتية الموجب و الثاني إلى السالب و استلام النتائج وعرضها بواسطة برنامج التخاطب عبر منفذ Serial المدمج مع بيئة التطوير ProtonBasic Pro.

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