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

   

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 22-02-2012, 10:52 PM المشاركة 17   
افتراضي



تحياتي الك ..
شكرا جزيلا ..

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 23-02-2012, 02:03 AM المشاركة 18   
افتراضي


مشروع مقياس مستوى : الصوت , الضوء , المياه ......الفولت فى شكل عامود من الليدات LEDs Bar
إضاءة سلسلة من الليدات بناء على جهد الدخل :
فى هذا التدريب سوف نستخدم مقاومة متغيرة لقيادة drive دخل المحول ADC حيث يتم توصيله بطرف الدخل التناظرى وتغيير الجهد من 0 إلى VDD (جهد تغذية الميكروكونترولر ) , عند تغذية الميكروكونترولر بجهد 5V فإن جهد الدخل , فى هذه الحالة , يجب أن يتغير فى الحدود من 0 إلى 5V حتى نحصل على ميزات جميع البتات العشرة للتحويل . وفى هذه الحالة فإن كل بت تحتاج لجهد دخل تناظرى قيمته 5V/1024 bit = 0.00488 V/bit = 4.88 mV /bit ( و bit هنا تعنى قسم أو جزء من 1024 جزء وهى من 0 إلى 1023 ) .

الآن نفترض أننا نريد تمثيل قيمنا على شكل مرئى بتوصيلها بسلسلة مكونة من 8 ليد , كما يتم فى مقياس شدة الصوت
Vu-Meterأو فى أحد حساسات المستوى الكثيرة level sensors .
لتحقيق مقياس خطى فإن كل الليدات يجب أن تضىء فى خطوات , يمكن حساب الخطوة كما يلى :
5V/8LED = 0.625 V / LED = 625 mV / LED
أى أن الليد الأول سوف يضىء إذا كان الجهد فى المدى 0-625mV, والليد الثانى سوف يضىء إذا كان الجهد فى المدى
626-1250mVوهكذا حتى 5V هتى تصبح جميع الليدات مضيئة .

خرج المحول ADC ليس بالملى فولت ولكنه "عدد صحيح يقع بين 0 و 1023" والذى يمثل جهد الدخل التناظرى .
فى حالتنا هذه , نحن نعلم " أنه بتغذية الميكروكونترولر PIC بجهد تغذية 5V , وباستخدام مصدر الجهد هذا داخليا كجهد مرجعى فإن كل قسم أو جزء سوف يعادل 4.88mV " لهذا السبب فإن خطوات إضاءة الليدات يمكن التعبير عنها بدلالة عدد الأجزاء كما يلى :
625mv / 4.88 mv / bit = 128bit
لذلك فإن الليد الأول سوف يضىء فى المدى 0-128 والثانى فى المدى 129-256 وهكذا .

الآن لنرى طريقة تنفيذ ذلك :
الدائرة الكهربية :




البرنامج :




كود:
 
/* ADC example bar,dot, level meter 
PIC16F877A *4MHz
Eng,F.Abdelaziz
http://www.eeecb.com/vb/index.php */
unsigned temp; // 0 .. 65535
void main( )
{
TRISA=0xFF;
TRISD=0;
PORTD=0;
 while(1) 
    {
        temp = ADC_Read(0);  // Read analog value from channel 0
 if(temp<=128) PORTD=1;// 00000001
 else
 if(temp<=256) PORTD=3;//00000011
 else
 if(temp<=384) PORTD=7;//00000111
 else
 if(temp<=512) PORTD=15;//00001111
 else
 if(temp<=640) PORTD=31;//00011111
 else
 if(temp<=768) PORTD=63;//00111111
 else
 if(temp<=896) PORTD=127;//01111111
 else
 if(temp<=1024)  PORTD=255;//11111111
 else
 PORTD=0;
    } 
}  


ملاحظات :
  • يجب تهيئة طرف توصيل المقاومة المتغيرة كمدخل تناظرى عن طريق إعدادات سجلات التحكم فى الأطراف TRIS. فى الميكروكونترولر PIC16F877, توجد المداخل التناظرية بالمنفذ A والمنفذ E . مع ملاحظة أنه "ليس كل أطراف المنفذ A تناظرية" حيث أن الطرف RA4 لا يسخدم كمدخل تناظرى وأن الأطراف RA6,RA7 غير موجودة , كذلك الأطراف, RE3, 4,5,6,7 غير موجودة .ولذلك يمكن أن يتم الإعداد كما يلى :
TRISA = 0b00101111 ; / / RA4 is not analog, RA6 and RA7 does not exist
TRISE = 0b00000111 , / / Pins RE3, 4,5,6,7 does not exist
  • الأوضاع الافتراضية للسجلات ADCON0 و ADCON1ودالة قراءة الدخل التناظرى بالميكروسى برو كافية للقيام بباقى الإعدادات فى هذا التدريب .
  • نتيجة التحويل (10 بت) يتم حفظها فى السجلات ADRESL (الثمانى بتات الأدنى) وADRESH( البتان الأعلى ) حيث يتم نسخها إلى متغير نوع "عدد صحيح بدون إشارة" أى بسعة 16-bit. فى الميكروسى برو عند الإعلان عن مثل هذا المتغير يكتفى بذكر الاختصار unsigned يليه اسم المتغير unsigned tmp.
  • الآن تبعا للقيمة التى حصلنا عليها يتم توصيل الليدات :
# إضأة الليد الأول :
عندما يكون جهد الدخل التناظرى فى المدى 0-625mV تكون نتيجة التحويل ADC فى المدى 0-128 عندئذ نضع القيمة 1 على المنفذ PORTD (المعد مسبقا كمخارج) فسوف يضىء الليد المتصل بالطرف RD0 ( البت bit0 بالمنفذ – هذه القيمة) .

# إضاءة الليد الثانى :
عندما يكون جهد الدخل التناظرى فى المدى 626-1250mV تكون نتيجة التحويل ADC فى المدى
129-256 عندئذ نضع القيمة 3 على المنفذ PORTD (المعد مسبقا كمخارج) وسوف يضىء الليدان المتصلان بالأطراف RD0 و RD1 , وهكذا . ومن ثم يعطى تأثير "عامود" العرض "bar" .
  • أما إذا أردنا تمثيل القيم على شكل نقط point وليس عامود فكل ما علينا عمله هو إعطاء القيم 1,2,4,8,16,32,64,128 للمنقذ PORTD.
  • كما رأينا التدريب بسيط للغاية وبالطبع يمكن استبدال المقاومة المتغيرة بحساس مستوى .
  • عند استخدام حساس المستوى أو عند توصيل إشارة تناظرية إلى مدخل الميكروكونترولر PIC , إذا زادت إشارة الدخل التناظرى عن 5 فولت , نحتاج لتخفيضها باستخدام مقسمات الجهد , أما إذا كان مستواها غير كافى ( الدخل فى حدود عدة ملى فولت) , نحتاج إلى مكبر عمليات .

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 24-02-2012, 02:09 PM المشاركة 19   
افتراضي


من فظلكم ماذا يمثل الرقم (xx80) في الكود ؟؟
كود:
   ADCON1 = 0x80;  // Configure analog inputs and Vref
و كيف اشغل اكثر من منفذ بالصيغة التناظرية ؟ و كيف اعمل مقارنه بينهم ؟


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


من فظلكم ماذا يمثل الرقم (xx80) في الكود ؟؟
كود:
   ADCON1 = 0x80;  // Configure analog inputs and Vref
و كيف اشغل اكثر من منفذ بالصيغة التناظرية ؟ و كيف اعمل مقارنه بينهم ؟
التفسير :
ADCON1=0x80 = 0b1000000
أى جميع البتات بصفر فيما عدا البت bit 7 = 1 :
من الداتا شيت للميكروكونترولر PIC16877 صفحة 128 :
شكل سجل التحكم ADCON1 كما يلى :





· وهو , كأى سجل , مكون من 8 بت , البت bit 0 والبت bit 1 غير مستخدم , جميع البتات المستخدمة "قابلة للقراءة والكتابة ووضعها الابتدائى بصفر وهو ما تشير إليه العبارة R/W-0 " أى الوضع الافتراضى (عند بداية التشغيل أو عند الإعادى reset ) للسجل هو : ADCON1=0b00000000 وللتعرف على معناه أو للتعديل فيه حسب خياراتنا يجب معرفة وظيفة البتات المؤثرة وهى :
# البت bit 7 = ADFM : بت " اختيار شكل نتيجة التحويل ADC " . الوضع الافتراضى بصفر يعنى "محازات النتيجة جهة اليسار 0 = Left justified ومن ثم تكون الستة خانات الأدنى بالسجل ADRESL بأصفار" . أما إذا قمنا بتغيرها إلى الواحد فهذا يعنى " محازاة النتيجة جهة اليمين 1 = Right justified ومن ثم تكون الستة خانات الأعلى بالسجل ADRESH بأصفار كما فى الشكل التالى :







# البتات الأربعة الأولى bit 3 - bit 0 : PCFG3:PCFG0: : بتات التحكم فى تهيئة المداخل التناظرية , وخياراتها كما فى الجدول التالى :





  • من الجدول يتضح أن الوضع الافتراضى (الأصفار 0000 ) يعنى تهيئة جميع المداخل كمداخل تناظرية . وهذا يعنى أن ADCON1= 0x80 = 0b10000000 المقصود بها : اختيار جميع الأطراف كمداخل تناظرية , ومحازاة نتيجة التحويل جهة اليمين .






مثال :
  • اختيار الخانات الأربعة الأولى كما يلى "1110" تعنى تهيئة المدخل AN0 فقط كمدخل تناظرى و باقى المداخل رقمية .
عمل المقارنة : يتم بقراءة كل قناة على حدة ونسخها إلى متغير معرف مسبقا ثم استخدام مؤثرات المقارنات بالميكرو سى .




الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 24-02-2012, 09:23 PM المشاركة 21   
افتراضي


لا اخفيك لدي الكثير من الشبهات في الموضوع لكني اسئل سؤال واحد فقط من فضلك .
لو رجعنا الى الكود في مشاركتي الاخيرة هو اختار المدخل رقم 7 حسب ما فهمته من تفسيرك للكود .

الا ان في المثال المدرج مع المساعد للميكروسي كان يستخدم الطرف الثالث للمتحكم اي AN2 .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 24-02-2012, 09:54 PM المشاركة 22   
افتراضي


لا اخفيك لدي الكثير من الشبهات في الموضوع لكني اسئل سؤال واحد فقط من فضلك .
لو رجعنا الى الكود في مشاركتي الاخيرة هو اختار المدخل رقم 7 حسب ما فهمته من تفسيرك للكود .

الا ان في المثال المدرج مع المساعد للميكروسي كان يستخدم الطرف الثالث للمتحكم اي AN2 .
أخى الكريم

شكرا جزيلا لك

ربما المعنى لم يصل بعد :

ملخص القول :

1- إن الخانة 7 لا علاقة لها باختيار القناة المستخدمة على الإطلاق بل تستخدم فى اختيار نوع محازاة نتيجة التحويل , جهة اليسار أو جهة اليمين وبالتالى هذه المحازاة سوف تحدد طريقة الحصول على النتيجة من سجلى النتيجة فيما بعد.
2- الخانات المخصصة لاختيار المداخل التناظرية هى الخانات الأربع الأولى وهى أصفار وهذا يعنى أن الثمانى مداخل تم اختيارها لتكون مداخل تناظرية أى يمكنك استخدام أى قناة تشاء من AN0 إلى AN7 وهو هنا اختار التعامل مع AN2 ولا بأس من ذلك فربما هذا يسهل عليه توصيلات المشروع الحقيقى على سبيل المثال .

ملحوظة :

أنا كل كلامى منصب على الميكروكونترولر PIC16F877 بينما فى المساعدة الكلام منصب على الميكروكونترولر PIC18F452 وهما متشابهين لحد كبير

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


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 24-02-2012 الساعة 10:27 PM


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