|
تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة. |
| LinkBack | أدوات الموضوع | انواع عرض الموضوع |
#1
| ||
| ||
عديل عرض النبضات pwm باستخدام موديول المقارنة ccp بالميكروكونترولر pic تمهيد : تعديل عرض النبضات PWM هى تقنية للتحكم فى كمية القدرة التى يتم إمدادها للحمل باستخدام أشارة رقمية للتوصيل وللفصل on-off . الجزء (الكسر) من الدورة الذى تكون فيه الإشارة فى حالة توصيل يعرف بدورة الخدمة duty cycle . قيمة التيار المستمر المتوسطة للإشارة يمكن أن تتغير بتغيير دورة الخدمة . يمكن لدورة الخدمة أن تأخذ أى قيمة بين الصفر (الإشارة دائما فى حالة فصل off) والواحد (الإشارة دائما موصلة on) .نفترض أن قيمة الإشارة فى حالة التوصيل on تكون +5V بينما تكون قيمتها فى حالة الفصل 0V عندئذ بتغيير دورة الخدمة للإشارة يمكن محاكاة أى جهد بين 0-5V . هذه الطريقة تستخدم فى التحكم فى سرعة محركات التيار المستمر وفى شدة إضاءة المصابيح . فى هذا التدريب سوف نقوك بتوليد إشارة بتعديل عرض النبضات PWM باستخدام الميكروكونترولر PIC16F628A للتحكم فى شدة إضاة مصباح (ليد) . الميكروكونترولر PIC16F628A يمتلك ضمن بناءه الداخلى على جهاز hardware يسمى موديول Capture/Compare/PWM (CCP) يستخدم فى توليد PWM . مبدأ (نظرية) العمل : قى نظام تعديل عرض النبضات PWM يمكن للطرف RB3/CCP1 أن يخرج شكل موجى دورى رقمى بسعة عشرة خانات 10-bit حيث يكون كل من الزمن الدورى period ودورة الخدمة duty cycle قابلين للبرمجة . للعمل فى نظام PWM يجب إعداد الطرف CCP1 كمخرج .دورة الخدمة للشكل الموجى المتولد هى قيمة ذات 10 خانات 10-bit value . الدائرة الكهربية : تمهيد : تعديل عرض النبضات PWM هى تقنية للتحكم فى كمية القدرة التى يتم إمدادها للحمل باستخدام أشارة رقمية للتوصيل وللفصل on-off . الجزء (الكسر) من الدورة الذى تكون فيه الإشارة فى حالة توصيل يعرف بدورة الخدمة duty cycle . قيمة التيار المستمر المتوسطة للإشارة يمكن أن تتغير بتغيير دورة الخدمة . يمكن لدورة الخدمة أن تأخذ أى قيمة بين الصفر (الإشارة دائما فى حالة فصل off) والواحد (الإشارة دائما موصلة on) .نفترض أن قيمة الإشارة فى حالة التوصيل on تكون +5V بينما تكون قيمتها فى حالة الفصل 0V عندئذ بتغيير دورة الخدمة للإشارة يمكن محاكاة أى جهد بين 0-5V . هذه الطريقة تستخدم فى التحكم فى سرعة محركات التيار المستمر وفى شدة إضاءة المصابيح . فى هذا التدريب سوف نقوك بتوليد إشارة بتعديل عرض النبضات PWM باستخدام الميكروكونترولر PIC16F628A للتحكم فى شدة إضاة مصباح (ليد) . الميكروكونترولر PIC16F628A يمتلك ضمن بناءه الداخلى على جهاز hardware يسمى موديول Capture/Compare/PWM (CCP) يستخدم فى توليد PWM . مبدأ (نظرية) العمل : قى نظام تعديل عرض النبضات PWM يمكن للطرف RB3/CCP1 أن يخرج شكل موجى دورى رقمى بسعة عشرة خانات 10-bit حيث يكون كل من الزمن الدورى period ودورة الخدمة duty cycle قابلين للبرمجة . للعمل فى نظام PWM يجب إعداد الطرف CCP1 كمخرج .دورة الخدمة للشكل الموجى المتولد هى قيمة ذات 10 خانات 10-bit value . الدائرة الكهربية :
__________________ angel4angel4angel4angel4angel4 |
#2
| ||
| ||
الدائرة الكهربية : يتم توصيل 2 مفتاح ضاغط إلى الأطراف RB0 , RB1 كمداخل . ويتم تشغيل ليد بواسطة الخرج المعدل PWM من الطرف RB3/CCP1 خلال مقاومة لتحديد التيار 330R.يتم تزايد أو تناقص دورة الخدمة لإشارة الخرج PWM باستخدام المفاتيح الموجودة كمداخل وهذا يؤدى إلى التغيير فى شدة إضاءة الليد . البرنامج :
__________________ angel4angel4angel4angel4angel4 |
#3
| ||
| ||
كود: /* Pulse Width Modulation Description: CCP module generating a PWM signal MCU: PIC16F628A Oscillator: XT, 4.0 MHz, MCLR Enabled */ sbit UP at RB0_bit; sbit DOWN at RB1_bit; unsigned short new_DC, current_DC; void debounce(){ Delay_ms(300); } void main() { CMCON = 0x07; // Disable comparators PORTB = 0x00; TRISB = 0b00000011; // RB0, RB1 input, RB3 (PWM1) output PWM1_Init(5000); // PWM module initialization (5KHz) new_DC = 0; // Initial value of variable Duty Cycle current_DC = 0; PWM1_Start(); // Start PWM1 module with Zero DC PWM1_Set_Duty(current_DC); do { if (!UP){ // If the button connected to RB0 is pressed debounce(); if (new_DC < 250) // Don't go above 250 new_DC = new_DC + 25 ; // increment Duty Cycle by 25 } if (!DOWN) { // If the button connected to RB1 is pressed debounce(); if (new_DC !=0) // Don't go below 0 new_DC= new_DC - 25 ; // Decrement Duty Cycle by 25 } if (current_DC != new_DC) { current_DC = new_DC ; PWM1_Set_Duty(current_DC); // Change the current DC to new value } } while(1); } // END main()
__________________ angel4angel4angel4angel4angel4 |
#4
| ||
| ||
البرنامج : يوفر المترجم MikroC Pro for PIC بمكتبة بأربعة دوال لروتينات للتحكم فى PWM باستخدام الموديول CCP . هذه الروتينات هى : PWM1_Init(const long frequency) و PWM1_Set_Duty(unsigned short duty_ratio) و PWM1_Start(void) و PWM_Stop(void) البرنامج يعطى عشر مستويات مختلفة للتحكم فى شدة إضاءة الليد بتغيير دورة الخدمة من 0 إلى 250 بخطوة 25 فى كل مستوى . يتم تغيير دورة الخدمة عن طريق الضغط على المفاتيح الضاغطة UP , DOWN . التعليق على البرنامج: 1- مقدمة (رأس) البرنامج . /* 2- تعريف الخانات بأسماء تعبر عن وظيفتها ومتعرف عليها .Pulse Width Modulation Description: CCP module generating a PWM signal MCU: PIC16F628A Oscillator: XT, 4.0 MHz, MCLR Enabled */ sbit UP at RB0_bit; 3- الإعلان عن المتغيرات sbit DOWN at RB1_bit; unsigned short new_DC, current_DC; 4- إنشاء دالة تأخير لتلاشى تأثير حدوث إرتدادات فى المفاتيح . void debounce(){ 5- بداية الدالة الرئيسية وفيها : Delay_ms(300); } void main() { أ- إعدادات أطراف الميكروكونترولر :· فصل المقارنات للسماح باستخدام جميع الأطراف كمداخل / مخارج رقمية . CMCON = 0x07; // Disable comparators · تصفير سجل المنفذ PORTB كحالة ابتدائية . PORTB = 0x00; · أعداد أطراف المنفذ PORTB بحيث يكون RB0, RB1 كمداخل للمفاتيح و RB3 كمخرج PWM TRISB = 0b00000011; // RB0, RB1 input, RB3 (PWM1) output ب- إعدادات نظام PWM· تردد الشكل الموجى فى الخرج 5KHz . PWM1_Init(5000); // PWM module initialization (5KHz) new_DC = 0; // Initial value of variable Duty Cycle · بدء نظام PWM بقيمة "صفر" تيار مستمر current_DC = 0; PWM1_Start(); // Start PWM1 module with Zero DC · ضبط دورة الخدمة لنظام PWM بالقيمة الموجودة فى متغير "القيمة الحالية" وهى فى البداية تكون بصفر . PWM1_Set_Duty(current_DC); ت- الدخول إلى حلقة غير منتهية do{…..}while(1) حيث يتم تنفيذ : do { · التحقق من أن مفتاح التزايد UP قد عكس وضعه أى تم الضغط عليه if (!UP){ // If the button connected to RB0 is pressed · عندئذ يتم استدعاء دالة التأخير لتلاشى تأثير الارتدادات فى المفتاح debounce(); · التحقق من أن القيمة الجديدة لم ولن تتعدى أقصى قيمة وهى 250 . if (new_DC < 250) // Don't go above 250 · فإن كان كذلك يتم تزايد سجل القيمة الجديدة بمقدارخطوة أى بمقدار 25 ونسخ القيمة الجديدة مرة أخرى إلى سجل القيمة الجديدة . new_DC = new_DC + 25 ; // increment Duty Cycle by 25 · التحقق من أن مفتاح التزايد UP قد عكس وضعه أى تم الضغط عليه .} if (!DOWN) { // If the button connected to RB1 is pressed debounce(); · التحقق من أن القيمة الجديدة لم ولن تصل لأدنى قيمة وهى الصفر . if (new_DC !=0) // Don't go below 0 · فإن كان كذلك يتم تناقص سجل القيمة الجديدة بمقدارخطوة أى بمقدار 25 ونسخ القيمة الجديدة مرة أخرى إلى سجل القيمة الجديدة .new_DC= new_DC - 25 ; // Decrement Duty Cycle by 25 } if (current_DC != new_DC) { · عندئذ يتم نسخ (مساواة) القيمة الجديدة إلى القيمة الحالية current_DC = new_DC ; · ثم إعادة ضبط دورة الخدمة لنظام PWM بالقيمة الجديدة PWM1_Set_Duty(current_DC); // Change the current DC to new value · وتكرار العملية بصفة مستمرة } } while(1); · نهاية الدالة الرئيسية .} // END main() النتائج :
__________________ angel4angel4angel4angel4angel4 |
#5
| ||
| ||
النتائج : عند توصيل القدرة للدائرة تبدأ الإضاءة بمستوى الصفر (الدورة كلها OFF مستمر ) أى دورة الخدمة بصفر . بالضغط على المفتاح الضاغط UP تتزايد دورة الخدمة (يتزايد الجزء الموجب من الدورة ON) وتتزايد شدة إضاءة الليد حتى تصل دورة الخدمة إلى الواحد الصحيح (الدورة كلها ON مستمر) .
__________________ angel4angel4angel4angel4angel4 |
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
همس النبضات : ننتظر نبضات كلماتكم المتدفقة | سمسمة محمد | أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه | 74 | 04-20-2011 10:25 AM |
لا تغرك الدنيا وتصبح عديم أحساس | جنون ليل | مواضيع عامة | 10 | 03-27-2011 09:50 PM |
المقارنة بين الأفلام | وطن2101 | أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه | 1 | 03-25-2006 02:46 AM |