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

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 12-03-2011, 11:50 AM المشاركة 1   
افتراضي أسرار وتفاصيل استخدام وبرمجة المحول من تناظرى لرقمى ADC Twitter FaceBook Google+



وحدة (موديول) المحول من تناظرى لرقمى A/D converter module


الخصائص :
  • يولد المحول نتيجة ثنائية ذات عشر خانات 10-bit باستخدام طريقة التقريب المتتابع ,ويخزن نتائج التحويل فى السجلات : ADRESL "نتيجة التحويل المنخفضة" و ADRESH "نتيجة التحويل المرتفعة" .
  • يوجد 14 مدخل تناظرى مستقلة بالميكروكونترولر PIC16F887 .
  • يقوم المحول بتحويل إشارة الدخل التناظرية إلى عدد ثنائى مكون من 10 خانات .
  • أقصى دقة resolution أو كفاءة تحويل يمكن ضبطها عن طريق اختيار الجهد المرجعى السالب Vref- والجهد المرجعى الموجب Vref+ .



المحول من تناظرى لرقمى A/D CONVERTER
على الرغم من أن استخدام المحول A/D يبدو معقدا جدا ، لكنه فى الأساس فى غاية البساطة ، فهو أبسط من المؤقتات ومن وحدة (موديول) الاتصالات .





عمل المحول A/D يكون تحت سيطرة خانات أربع سجلات :
  • السجل ADRESH الذى يحتوى على البايت العلوى لنتيجة التحويل.
  • السجل ADRESL الذى يحتوى على البايت السفلى لنتيجة التحويل .
  • السجل ADCON0 وهو سجل التحكم رقم 0 .
  • السجل ADCON1 وهو سجل التحكم رقم 1 .
السجل ADRESH والسجل ADRESL :
النتيجة التي نحصل عليها بعد تحويل القيمة التناظرية إلى قيمة رقمية هى عدد مكون من 10 خانات 10-bitوالتى يمكن تخزينها في السجلات ADRESH وADRESL.
يوجد طريقتان لمعالجة النتيجة وهما "المحازاة جهة اليسار " و " المحازاة جهة اليمين " والتى تبسط استخدامها إلى حد كبير. شكل نتيجة التحويل يعتمد على الخانة ADFM من السجل ADCON1.
في حالة عدم استخدام المحول A/D يمكن استخدام هذه السجلات كسجلات للأغراض العامة.







متطلبات تحصيل (اكتساب) ACQUISITION المحول A/D

من أجل تمكين المحول ADC من تلبية دقة محددة فإنه من الضروري توفير فترة تأخير زمنى معين بين اختيار مدخل تناظرى محدد و عملية القياس نفسها. هذا الزمن يسمى "زمن التحصيل أو الاكتساب"
'acquisition time' وهو يعتمد أساسا على مقاومة المصدر. هناك معادلة تستخدم لحساب هذا الزمن بدقة، وهو في أسوأ الأحوال يكون 20 ميكروثانية 20S تقريبا . لذلك ، إذا كنت ترغب في أن يكون التحويل دقيق لا ننسى هذا التفصيل المهم.

الزمن الدورى لنبضات الساعة للمحول ADC
يعرف الزمن اللازم لإتمام عملية تحويل لخانة واحدة باسم TAD . ومطلوب أن لا يقل عن1,6 S . زمن التحويل التام من تناظرى لرقمى لمجموعة مكونة من 10 خانات تستغرق أطول من المتوقع ويصل إلى 11 دورة زمنية أى 11TAD .
ونظرا لأن كلا من تردد الساعة وتردد مصدر التحويل من تناظرى لرقمى يتم تحديده برمجيا فمن الضروري اختيار أحد المجموعات المتاحة من الخانات ADCS1 و ADCS0 قبل بدأ قياس الجهد للمداخل التناظرية . هذه الخانات مخزنة فى السجل ADCON0 .









أي تغيير في نظام تردد نبضات الساعة سوف يؤثر على تردد نبضات الساعة للمحول ADC، والذى قد يؤثر سلبا على نتيجة التحويل ADC.


كيف يتم استخدام المحول A/D ؟

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 12-03-2011, 11:52 AM المشاركة 2   
افتراضي


كيف يتم استخدام المحول A/D ؟
من أجل تمكين المحولA/D من العمل بدون مشاكل وكذلك لتجنب النتائج الغير متوقعة ، فمن الضروري النظر في ما يلي :
• المحول A/D لا يفرق بين الإشارات الرقمية والتناظرية. من أجل تفادي الأخطاء في القياس أو تلف الشريحة ، يجب تهيئة الأطراف كمداخل تناظرية قبل بدء عملية التحويل.الخانات المستخدمة لهذا الغرض تخزن (تحفظ) في السجلات TRIS و ANSEL (ANSELH) .
* بشكل عام يمكن القول أن قياس الجهد فى المحول ويستند على مقارنة جهد الدخل مع مقياس أو مدى scale داخلى يحتوى على 1024 قسم أو علامة mark (عشر خانات أى 2 أس عشرة تساوى 1024 ) . أدنى علامة فى هذا التدريج تناظر جهد المرجع السالب Vref- ، بينما أعلى علامة تناظر جهد المرجع الموجب Vref+ .
الشكل التالى يبين جهود المراجع القابلة للاختيار فضلا عن قيم الحد الأدنى والحد الأقصى .





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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 12-03-2011, 11:55 AM المشاركة 3   
افتراضي


سجل التحكم فى المحول ADCON0 Register








الخانات ADCS1, ADCS0 :
" خانات اختيار نبضات الساعة للمحول A/D " عن طريقها يتم اختيار تردد نبضات الساعة المستخدمة فى التزامن الداخلى للمحول A/D . وهى تؤثر أيضا على الزمن الدورى للتحول .







يتم توليد نبضات الساعة بمذبذب داخلى ضمن بناء المحول .

الخانات CHS3-CHS0 :
" خانات اختيار القنوات التناظرية " عن طريقها يتم اختيار الطرف أو "القناة التناظرية " للمحول A/D أى الجهد المراد قياسه .






الخانة GO/DONE "

خانة "حالة التحول بالمحول A/D " وهى تبين الحالة الحالية للتحويل كما يلى :
  • قيمة الخانة 1 : تعنى أن التحويل بالمحول A/D فى تقدم in progress .
  • قيمة الخانة 0 : تعنى أن التحويل قد تم أو اكتمل complete .
هذه الخانة يتم مسحها (0) تلقائيا عن طريق الأجهزة hardware عند اكتمال التحويل بالمحول A/D .
الخانة ADON :

خانة "توصيل المحول " A/D On وظيفتها تمكين المحول من العمل حيث :
  • قيمة الخانة 1 : تعنى أن المحول ممكن (مسموح) من العمل enabled .
  • قيمة الخانة 0 : تعنى أن المحول غير ممكمن (غير مسموح) من العمل disabled .
لنفعل ذلك باستخدام mikroC :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 12-03-2011, 11:57 AM المشاركة 4   
افتراضي


لنفعل ذلك باستخدام mikroC :








  • مثال لكود لقراءة قيمة تناظرية من القناة رقم 2 وعرضها على المنفذ PORTB والمنفذ PORTC كعدد ثنائى ذو عشر خانات 10-bit binary number .
  • ضم الملف built_in.h لاحتوائه على دوال مطلوبة :
#include <built_in.h>
  • الإعلان عن متغير من نوع العدد الصحيح unsigned inيسمى temp_res وهذا النوع من المتغيرات يكون بسعة 2 بايت (16 خانة) حتى يتسع لنتيجة التحويل المكونة من 10 خانات .
unsigned int temp_res ;
  • الدالة الرئيسية
void main() {
  • إعداد القناة الثانية AN2 كطرف تناظرى :
ANSEL = 0x04; // Configure AN2 as analog pin
  • إعداد المنفذ PORTA كمداخل :
TRISA = 0xFF; // PORTA is configured as input
  • إعداد باقى الأطراف كمداخل / مخارج رقمية :
ANSELH = 0; // Configure all other AN pins as digital I/O
  • إعداد الطرف RC7 والطرف RC6 كمخارج :
TRISC = 0x3F; // Pins RC7 and RC6 are configured as outputs
  • إعداد المنفذ PORTB كمخارج :
TRISB = 0; // PORTB is configured as an output
  • إنشاء حلقة do { ….} while(1) غير منتهية :
do {
  • قراءة المدخل التناظرى من مدخل القناة الثانية ADC_Read(2) للحصول على نتيجة التحويل ذات العشر خانات ونسخها إلى سجل المتغير temp_res ذو الستة عشر خانة :

temp_res = ADC_Read(2); // Get 10-bit result of AD conversion
  • إرسال الثمانية خانات السفلية للمنفذ PORTB .
تعليق :
المتغير مكون من 16 خانة بينما المنفذ PORTB مكون من 8 خانات وعند إجراء عملية نسخ (=)لمحتويات المتغير إلى المنفذ معنى ذلك نسخ الثمانى خانات الأولى من المتغير إلى المنفذ .

PORTB = temp_res; // Send lower 8 bits to PORTB
  • إرسال الخانتين ذات القيمة الأكبر إلى الطرف RC6 والطرف RC7 :
تعليق:
المتغير بسعة 16 خانة وتم نسخ الثمانى خانات الأولى إلى المنفذ PORTB وباقى خانتان فى البايت الثانية من المتغير لذلك يجب أولا إزاحة محتويات المتغير خانتان إلى اليمين حتى تنتقل الخانتين المتبقيتين إلى البايت الأول بالخانتين السابعة والثامنة ومن ثم عند إجراء عملية نسخ لمحتويات المتغير بعد الإزاحة للمنفذ PORTC تظهر الخانتين على الطرفين RC6 و RC7 والتى تم إعدادها مسبقا كمخارج بينما باقى خانات المنفذ PORTC تم إعدادها كمداخل ولن تؤثر فى العمل .

PORTC = temp_res >> 2; // Send 2 most significant bits to RC7, RC6
  • تكرار الحلقة إلى ما لا نهاية
} while(1); // Remain in the loop
}



سجل التحكم ADCON1


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 12-03-2011, 11:59 AM المشاركة 5   
افتراضي


سجل التحكم ADCON1











الخانة ADFM :

خانة "اختيار شكل نتيجة المحول A/D "
  • قيمة الخانة 1 : تعنى محازات نتيجة التحويل لجة اليمين . لذلك فأن الست خانات العليا للسجل ADRESH تكون غير مستخدمة .
  • قيمة الخانة 0 : تعنى محازاة نتيجة التحويل جهة اليسار . لذلك فإن الست خانات الأقل قيمة فى السجل ADRESL تكون غير مستخدمة .
الخانة VCFG1 :

خانة "اختيارجهد المرجع" لاختيار مصدر جهد المرجع السالب اللازم لعمل المحول A/D .
  • قيمة الخانة 1 : جهد المرجع السالب يتم توصيله عن طريق الطرف Vref- .
  • قيمة الخانة 0 : يستخدم خط الجهد Vss كمصدر لجهد المرجع السالب .
الخانة VCFG0 :


خانة "اختيارجهد المرجع" لاختيار مصدر جهد المرجع الموجب اللازم لعمل المحول A/D .
  • قيمة الخانة 1 : جهد المرجع السالب يتم توصيله عن طريق الطرفVref+ .
  • قيمة الخانة 0 : يستخدم خط الجهد Vdd كمصدر لجهد المرجع الموجب .
باختصار :
لقياس جهد على مدخل طرف باستخدام المحول A/D يجب فعل الآتى :


الخطوة الأولى : تهيئة (إعداد) المنفذ :
  • اكتب المنطق واحد (1) فى خانة من السجل TRIS وذلك لإعداد الطرف المقابل كمدخل .
  • اكتب المنطق واحد (1) فى خانة بالسجل ANSEL وذلك لإعداد الطرف المقابل كمدخل تناظرى .
الخطوة الثانية : تهيئة (إعداد) موديول المحول ADC :
  • إعداد جهد المرجع من السجل ADCON1.
  • اختيار نبضات الساعة للمحول ADC من السجل ADCON0 .
  • اختيار أحد قنوات الدخل CH0-CH13 من السجل ADCON0 .
  • اختيار شكل البيانات باستخدام الخانة ADFM من السجل ADCON1 .
  • مكن المحول A/D من العمل بتحديد الخانة ADON من السجل ADCON0 .
الخطوة الثالثة : (اختيارى) تهيئة (إعداد) المقاطعة باستخدام التحويل ADC :
  • امسح (0) الخانة ADIF .
  • اجعل الخانات ADIE, PEIE , GIE فى الحالة set =1 .
الخطوة الرابعة : انتظر مرور الرمن اللازم للتحصيل (الاكتساب) (حوالى 20 ميكروثانية) .
الخطوة الخامسة : ابدأ التحويل بجعل الخانة GO/DONE بالسجل ADCON0 فى الحالة set = 1 .

الخطوة السادسة : انتظر حتى يكتمل التحويل ADC .
  • من الضرورى التحقق فى حلقة البرنامج من إما يتم مسح الطرف GO/DONE أو انتظار المقاطعة بالمحول A/D (يجب التمكين مسبقا) .
الخطوة السابعة : قراءة نتائج التحويل ADC :
  • قراءة السجل ADRESH والسجل ADRESL .


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 587
نشاط [ hamadalla31 ]
قوة السمعة:0
قديم 16-03-2011, 11:43 AM المشاركة 6   
افتراضي


بسم الله ماشاء الله جزاكم الله بكل خير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 16-03-2011, 12:11 PM المشاركة 7   
افتراضي


بسم الله ماشاء الله جزاكم الله بكل خير
اخى الكريم

شكرا جزيلا لك

بارك الله فيك

مع تمنياتى بدوام التوفيق


ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 586
نشاط [ ahmad abdullah ]
قوة السمعة:0
قديم 17-03-2011, 04:53 PM المشاركة 8   
افتراضي


مهندسنا القدير ... يعني والله الكلمات تعجز عن شكرك اخي الكريم ... لانك خلال اسبوع قدمت لنا مجموعة من الدروس الرائعة بخصوص المايكروكنتورولر ... جزاك الله كل خير ...

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025