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

   

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



الله عليك يابشمهندس -- بصراحة الموضوع اكثر من رائع ومفيد جدا

أخى الكريم

شكرا جزيلا لك

بارك الله فيك

تقدير أعتز به

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

اعلانات

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


قراءة 4 مفاتيح :
خطوتنا التالية هى تصميم برنامج لقراءة 4 مفاتيح متصلة بالميكروكونترولر كما فى الشكل التالى :



لاحظ من الشكل عدم استخدام مقاومات رفع لأعلى خارجية وبالتالى يجب تفعيل مقاومات الرفع لأعلى الداخلية المرتبطة بالمنفذ PORTB من خلال البت RBPU بالسجل INTCON2 .
المنفذ PORTB للميكروكونترولر PIC18F442 (على سبيل المثال) به دائرة مقاومات جذب لأعلى داخلية "غير مفعلة"disabledفى "الوضع الافتراضى" default ( بعد عملية الإعادة reset ) . هذه المقاومات يتم تفعيلها تلقائيا عند برمجة المنفذ PORTB كمخارج(TRISB = 0) , فى باقى الحالات نقوم بتمكينها بأنفسنا .
يتم تمكين enableالبت RBPU بجعلها فى المستوى المنصقى المنخفض low (الصفر) , ويتم تعطيلها (عدم تمكينها) disableبجعلها فى المستوى المنطقى المرتفع high(واحد) .
البرنامج :

كود:
 
/*
برنامج قراءة 4 مفاتيح 
دورة :برمجة الميكروكونترولر بلغة السى 
الغرض : قراءة حالة 4 مفاتيح للتحكم فى توصيل وفصل ليدات (أجهزة خرج)  
إعداد :
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php
*/

# define LED1 portd.f0 //استخدام متجه التعريف لتخصيص اسم لطرف بمنفذ 

int old_ state// تعريف متغير التحكم لحفظ حالة المفتاح القديمة

void main () {
TRISD = 0;  //إعداد جميع أطراف المنفذ المتصل بالليدات كمخارج 
PORTD = 0;تصفير أطراف منفذ الخرج 
intcon2.rbpu = 0 // تمكين المقاومات الداخلية للرفع لأعلى 
trisb.f0 = 1; // إعداد الطرف المتصل بالمفتاح كمدخل 
trisb.f1 = 1; // إعداد الطرف المتصل بالمفتاح كمدخل
trisb.f2 = 1; // إعداد الطرف المتصل بالمفتاح كمدخل
trisb.f3 = 1; // إعداد الطرف المتصل بالمفتاح كمدخل

do {
   if (Button (& PORTB, 0, 20, 0)) // المفتاح الأول  
   PORTD = 0b00000001;
         else if (Button (& PORTB, 1, 20, 0)) //المفتاح الثانى 
         PORTD = 0b00000010;
               else if (Button (& PORTB, 2, 20, 0)) //المفتاح الثالث  
               PORTD = 0b00000011;
                     else if (Button (& PORTB, 3, 20, 0)) //المفتاح الرابع  
                             PORTD = 0b00000100;
     Delay_ms (200); //تأخير 200 ملى ثانية 
} While (1);
}





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

رضوان حلاق
:: مهندس ::
تاريخ التسجيل: Jun 2010
الدولة: سوريا الاسد \ الشام
المشاركات: 39
نشاط [ رضوان حلاق ]
قوة السمعة:
قديم 11-10-2011, 10:48 PM المشاركة 27   
افتراضي


شكرا استاذ على الدروس الجميلة حقا

جعلها الله في ميزان حسناتك


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


التحويل من تناظرى لرقمى A/Dبالميكروكونترولر PIC
مقدمة :
الميكروكونترولر PIC18F452 يوجد فى بناؤه الداخلى 8 قنوات تحويل من تناظرى لرقمى بدقة 10 بت لكل قناة . استخدام المحول بدقة 10 بت وبجهد مرجعى بقيمة 5V نحصل على الدقة كما يلى :

5V/ (2E10 - 1) = 5V/ (2024 - 1) = 5V/2023= 4.8876 mV




المحول من تناظرى إلى رقمى الموجود فى الميكروكونترولر PIC يستخدم تقنية "التقريب المتتالى" , وعادة يكون بدقة 10 بتات ودخل ساعة باختيار المستخدم و الانتخاب من متعدد .


المحول A/D متصل بالأطراف :
RA0 (AN0), RA1 (AN1) RA2 (AN2), RA3 (AN3) RA5 (AN4) RE0 (AN5), RE1 (AN6), RE7 (AN7).
السجلات المشاركة فى تحديد (ضبط) المحول A/D هى : "سجل التحكم فى المحول A/D رقم صفر" ADCON0 و "سجل التحكم فى المحول A/D رقم واحد " ADCON1 .
المحول A/D بدقة 10 بتات ( 8 بت + 2 بت) حيث يتم تخزين نتيجة التحويل فى السجلات " نتيجة المحول A/D العليا" ADRESH و "نتيجة المحول A/D السفلى " ADRESL.

السجل ADCON0 :


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


السجل ADCON0 :
فيما يلى عمل كل بت بالسجل :


  • البتات ADCS0-ADCS2: بتات اختيار سرعة التحويل A/D كما يلى


  • البتات CHS0-CHS2: بتات اختيار قناة التحويل A/D كما يلى :


  • البت GO / DONE : بت حالة المحول A/D كما يلى :
0 : لا يتم تنفيذ التحويل A/D >
1 : يتم تنفيذ التحويل A/D .
البت ADON : بت توصيل وفصل المحول A/D كما يلى :
0 : فصل off المحول A/D .
1 : توصيل on المحول A/D .

السجل ADCON1 :


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


السجل ADCON1 :
فيما يلى عمل كل بت بالسجل :




  • البت ADFM: بت تحديد شكل نتيجة التحويل A/D كما يلى :
0 : محازاة جهة اليمين .
1 : محازاة جهة اليسار .
  • البت ADCS2 : بت اختيار سرعة التحويل ( سبق الحديث عنها ) .
  • البتات PCFG3, PCFG2, PCFG1, PCFG0 : بتات إعداد (تهيئة) المحول A/D كما يلى :


  • البت ADFM مهمتها تنظيم نتيجة التحويل A/D بحيث تكون النتيجة بمحازاة جهة اليمين أو بمحازاة جهة اليسار بالسجلين ADRESH , ADRESL .
إذا تم الإعداد ADFM = 1 فسوف يتم تنظيم قيمة التحويل (10 بتات) بمحازاة اليمين أى أن الثمانى بتات المنخفضة سوف يتم تخزينها فى السجل ADRESL والبتان الأعلى يتم تخزينها فى السجل ADRESH .
أما إذا تم الإعداد ADFM = 0 فسوف يتم تنظيم قيمة التحويل (10 بتات) بمحازاة اليسار أى الثمانى بتات العليا يتم حفظها فى السجل ADRESHوالبتان المنخفضان يتم تخزينها فى السجل ADRESL .
  • البتات PCFG3, PCFG2, PCFG1, PCFG0 لاختيار أى الأطراف يكون مدخل تناظرى وأيها يكون رقمى (مدخل / مخرج I/O) .

أمثلة (راجع الجدول ) :





ADCON1 = 0; //Allpins RA0, RA1, RA2, RA3, RA5, RE0, RE1, RE2 as A/D
ADCON1 = 6; // All the pins RA0, RA1, RA2, RA3, RA5, RE0, RE1, RE2 I/O
ADCON1 = 14; // Pins RA1, RA2, RA3, RA5, RE0, RE1, RE2 I/O

//and RA0 as AD (reference VDD).
ADCON1 = 4; // Pins RA2, RA5, RE0, RE1, RE2 I/O

//and RA0, RA1, RA3 as AD (reference VDD).

موديول المحول A/D بدقة 10 بتات أو 1024 قسم ( من الصفر حتى 1023 قسم ) . يمكننا اختيار استخدام الجهود المرجعية أما خارجيا من خلال الأطراف AN2 و AN3 أو من خلال الجهود الداخلية بالشريحة (Vcc and GND) .

صيغة التحويل من تناظرى لرقمى :


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


صيغة التحويل من تناظرى لرقمى :
Read = ( Vin - Vref-) * 1023 / (Vref+ - Vref-)





حيث :
Read : هى نتيجة التحويل .
Vref+ وVref-: هى قيم الجهود المرجعية القصوى والدنيا .
Vin : جهد الدخل على طرف المدخل التناظرى A/D .
ملحوظة :
العدد 1023 هو أقصى قيمة للتحويل A/D ( مدى القيمة من 0 إلى 1023 ) .

للتحليل راجع الشكل التالى :


الغرض من التحليل هو إيجاد قيمة التحويا من تناظرى لرقمى .
دعنا نقول أن الجهد Vin عند وقت القراءة كان 2V .
الصيغة العليا تعطى :
Read = (Vin - Vref-) * 1023 / (Vref + - Vref-)
Read = (2-1) * 1023 / (3-1)
Read = 1 * 1023 / 2
Read = 511







ملحوظة : جهد الخرج المرجعى VREF لا يجب أن يزيد بتاتا عن جهد مصدر الميكروكونترولر .

العمل بالميكروسى Working with MikroC


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


شكرا استاذ على الدروس الجميلة حقا

جعلها الله في ميزان حسناتك
أخى الكريم

شكرا جزيلا لك

بارك الله فيك

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



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