الموديول CCP ووضع تعديل عرض النبضة PWM مع المترجم CCS C - البرنامج الأساسى :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
الموديول CCP ووضع تعديل عرض النبضة PWM مع المترجم CCS C - البرنامج الأساسى :
الموديول CCP ووضع تعديل عرض النبضة PWM مع المترجم CCS C - البرنامج الأساسى :
يمكن استخدام الموديول CCP ،فى وضع تعديل عرض النبضة PWM ، لتوليد إشارة خرج تتغير مع بالزمن ، وهو ما يوفر شكل موجى لنبضة الخرج مع إمكانية ضبط الفترة المرتفعة بالنسبة للفترة المنخفضة . حالة الخرج المرتفع ، تسمى دورة الخدمة duty cycle (وهى الجزء الفعال المؤثر للشكل الموجى ككل ) ، يتم التعبير عنها كنسبة مئوية من الفترة الكلية لشكل موجة النبضة ( الحالة المرتفعة والحالة المنخفضة ) . على سبيل المثال ، دورة خدمة بالقيمة “50%” تعطى موجة خرج لها فترة مرتفعة مساوية للفترة المنخفضة [(Th / Th+Tl) * 100] .
البرنامج التالى يبين البرنامج الأساسى لخطوات إعداد setup وتعيين set وضع PWM :
يوفر المترجم CCS C الدوال التالية :
الدالة setup_ccp1() :
تحدد وضع تشغيل الموديول CCP .
الدالة setup_timer_2() :
تتحكم فى الفترة الزمنية الكلية لموجة تعديل عرض النبضة PWM ، هذه الدالة لها 3 وسائط arguments أو بارامترات:
• الوسيط الأول يحدد معامل نسبة القسمة السابق للمؤقت prescaler ، وهى فى هذه الحالة “16” .
• الوسيط الثانى يعطى الفترة الزمنية للخرج من “1” إلى “255” مرة ضعف الفترة الزمنية لساعة الدخل .
• الوسيط الثالث يحدد معامل نسبة القسمة اللاحق postscaler .
الدالة set_pwm1_duty() :
تحدد دورة الخدمة . القيمة المعطاة تكون فى المدى “0-1023” ، كقيمة ابتدائية لعداد 10 بت . القيمة “500” تعطى نسبة فترة مرتفعة إلى فترة منخفضة حوالى 50% .
يتم توليد موجة PWM بشكل مستمر بعد إتمام الإعداد . قيم دورة الخدمة (500) ، الفترة الكلية (248) المستخدمة فى هذا البرنامج تنتج خرج على الطرف CCP1 بتردد 250 Hz (4 ms) ، وبنسبة زمن ارتفاع إلى زمن انخفاض 50% مع ساعة ميكروكونترولر بتردد 4-MHz .
طريقة حساب الفترة الزمنية الكلية :
يتم تشغيل المؤقت Timer2 من ساعة التعليمات عند 1 MHz (Fosc/4) . بعد المقياس السابق ، تكون الفترة الزمنية للساعة 16 μ s ويقوم المؤقت بالعد حتى “248” ، ويحدث تجاوز overflow عند حوالى 16 x 248 x 3968 μ s أى حوالى 4 ms ( لقد تم استخدام الرقم 248 بدلا من الرقم 250 لضبط الزمن ) . قيمة المقياس اللاحق تم تحديدها بواحد “1” .
يمكن استخدام الموديول CCP ،فى وضع تعديل عرض النبضة PWM ، لتوليد إشارة خرج تتغير مع بالزمن ، وهو ما يوفر شكل موجى لنبضة الخرج مع إمكانية ضبط الفترة المرتفعة بالنسبة للفترة المنخفضة . حالة الخرج المرتفع ، تسمى دورة الخدمة duty cycle (وهى الجزء الفعال المؤثر للشكل الموجى ككل ) ، يتم التعبير عنها كنسبة مئوية من الفترة الكلية لشكل موجة النبضة ( الحالة المرتفعة والحالة المنخفضة ) . على سبيل المثال ، دورة خدمة بالقيمة “50%” تعطى موجة خرج لها فترة مرتفعة مساوية للفترة المنخفضة [(Th / Th+Tl) * 100] .
البرنامج التالى يبين البرنامج الأساسى لخطوات إعداد setup وتعيين set وضع PWM :
- الكود:
// Pulse Width Modulation Program Source Code
// PWM output, MCU clock = 4 MHz
#include <16F877A.h>
void main()
{
While(true)
{
setup_ccp1(ccp_pwm); // Select timer and mode
set_pwm1_duty(500); // Set on time
setup_timer_2(T2_DIV_BY_16,248,1); // Clock rate & output period
}
}
يوفر المترجم CCS C الدوال التالية :
الدالة setup_ccp1() :
تحدد وضع تشغيل الموديول CCP .
الدالة setup_timer_2() :
تتحكم فى الفترة الزمنية الكلية لموجة تعديل عرض النبضة PWM ، هذه الدالة لها 3 وسائط arguments أو بارامترات:
• الوسيط الأول يحدد معامل نسبة القسمة السابق للمؤقت prescaler ، وهى فى هذه الحالة “16” .
• الوسيط الثانى يعطى الفترة الزمنية للخرج من “1” إلى “255” مرة ضعف الفترة الزمنية لساعة الدخل .
• الوسيط الثالث يحدد معامل نسبة القسمة اللاحق postscaler .
الدالة set_pwm1_duty() :
تحدد دورة الخدمة . القيمة المعطاة تكون فى المدى “0-1023” ، كقيمة ابتدائية لعداد 10 بت . القيمة “500” تعطى نسبة فترة مرتفعة إلى فترة منخفضة حوالى 50% .
يتم توليد موجة PWM بشكل مستمر بعد إتمام الإعداد . قيم دورة الخدمة (500) ، الفترة الكلية (248) المستخدمة فى هذا البرنامج تنتج خرج على الطرف CCP1 بتردد 250 Hz (4 ms) ، وبنسبة زمن ارتفاع إلى زمن انخفاض 50% مع ساعة ميكروكونترولر بتردد 4-MHz .
طريقة حساب الفترة الزمنية الكلية :
يتم تشغيل المؤقت Timer2 من ساعة التعليمات عند 1 MHz (Fosc/4) . بعد المقياس السابق ، تكون الفترة الزمنية للساعة 16 μ s ويقوم المؤقت بالعد حتى “248” ، ويحدث تجاوز overflow عند حوالى 16 x 248 x 3968 μ s أى حوالى 4 ms ( لقد تم استخدام الرقم 248 بدلا من الرقم 250 لضبط الزمن ) . قيمة المقياس اللاحق تم تحديدها بواحد “1” .
مواضيع مماثلة
» التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
» وضع تعديل عرض النبضة PWM بقناتين ، والتحكم فى تزايد وتناقص عرض النبضات :
» استخدام الموديول USART لتحقيق الاتصال التسلسلى بين PIC و PIC :
» الدرس الثانى : جولة داخل بيئة التطوير المتكاملة لبرنامج LDMicro والمستخدم فى البرمجة بلغة منطق السلم :
» استخدام وضع تعديل عرض النبضات PWM فى توليد نبضات متغيرة العرض :
» وضع تعديل عرض النبضة PWM بقناتين ، والتحكم فى تزايد وتناقص عرض النبضات :
» استخدام الموديول USART لتحقيق الاتصال التسلسلى بين PIC و PIC :
» الدرس الثانى : جولة داخل بيئة التطوير المتكاملة لبرنامج LDMicro والمستخدم فى البرمجة بلغة منطق السلم :
» استخدام وضع تعديل عرض النبضات PWM فى توليد نبضات متغيرة العرض :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى