PWM اختصار لـ Pulse Width Modulation . المقصود هو إرسال موجة مربعة أو مستطيلة square wave هذه الموجة
عبارة عن hi و low كما هو معلوم فمثلا لو لدينا مصدر جهد خمسة فولت
وقمنا بعمل موجة منه عن طريق المايكروكنترولر مثلا هذه الموجة قد تجعل معدل جهد
الخرج أقل من خمسة فولت ( 4 فولت أو 3 أو 2.4 أو .. كما نريد ) ومن المعلومات المهمة الخاصة بالموتور dc أنه كلما قل الفولت الداخل إليه كلما قلت سرعته
.
.
اولا :- لمحه عنPWM
الكثير من دوائر التحكم فى القدرة
الكهربائية تستخدم تقنية "التعديل فى عرض النبضات" PWM كأساس لعملها .لفهم كيف تقوم هذه التقنية بالتحكم فى القدرة الكهربائية , تخيل جزء من
دائرة على شكل مفتاح "سريع الفعل" والحمل المراد التحكم فيه (مصباح على
سبيل المثال) كما فى الشكل التالى
عندما يكون المفتاح مفتوح open لا يمر تيار فى المصباح وتكون القدرة المغذاة بصفر . فى
لحظة غلق closeالمفتاح
يستقبل الحمل الجهد الكامل للمصدر ويتم الإمداد بأقصى قدرة .
كيف
نمد الحمل بقدرة متوسطة ؟ ولتكن 50% على سبيل المثال . أحد الأفكار هى جعل المفتاح يفتح
ويغلق بسرعة للحصول على زمن فتح 50% وزمن غلق 50% . هذا يعنى أن , فى المتوسط , نصف الزمن يوجد به تيار (قدرة)
ونصف الزمن لا يوجد به تيار (قدرة(
يمكن القول أن القدرة المتوسطة كما لو كنا
طبقنا جهد متوسط بقيمة 50% من جهد الدخل
لاحظ أن غلق المفتاح يمكن أن يحدد عرض (زمن
تواجد ) النبضة طالما أنه ظل فى هذه الحالة , وأن الفترة الزمنية بين النبضات
تستمر طالما أنه مفتوح . ويعرف مجموع الإثنين معا "بالزمن الدورى "
للدورة والذى يتحكم فى التردد . تعرف العلاقة بين زمن تواجد النبضة والزمن الكلى
(الزمن الدورى) "بدورة الخدمة " dutycycle .بتغيير عرض النبضة يمكننا التحكم فى القدرة المتوسطة
المغذاة للحمل. وبالتالى عندما يتغير عرض النبضة من الصفر إلى أقصى قدرة تتغير
أيضا دورة الخدمة كما هو مبين بالشكل التالى
هذا المبدأ يستخدم للتحكم الدقيق باستخدام PWMعن طريق تعديل (تغيير) عرض النبضة للتحكم فى دورة
الخدمة للإشارة المطبقة على الحمل وبالتالى القدرة المغذاة إليه .
التعديل فى عرض النبضات PWM من أحد التقنيات القوية المستخدمة فى أنظمة التحكم حاليا . فهى تستخدم فى التحكم فى سرعة المحركات وفى القياسات وفى الاتصالات وفى التحكم فى القدرة .
يتم إنجاز التعديل فى عرض النبضات بمساعدة "موجة مربعة" والتى يتم تغيير "دورة خدمتها" ( زمن دوام أو فعالية النبضة ONtime وزمن تلاشى أو عدم فعالية النبضة) بغرض الحصول على "جهد خرج متغير" كنتيجة "للقيمة المتوسطة " للشكل الموجى كما فى الشكل العلوى , حيث Ton هو الزمن الذى يكون فيه الخرج مرتفعا و Toff هو الزمن الذى يكون فيه الخرج منخفضا . الزمن الإجمالى هو الزمن الدورى period للموجة حيث
يعرف دورة الخدمة Dutycycle للموجة المربعة بالصيغة التالية :
الدوال التى تتناول الموديول CCP1, هى
ضبط دورة
الخدمة لنظام PWM بالقيمة الموجودة فى متغير وتكون في الصوره التاليهPWM1_Set_Duty(192);وهذا يدل علي نسبه الاشاره 75% حيث يوضع
الارقام من صفر الي 255 حيث صفر يكون الاشاره نسبتها صفر اما 127 فتكون نسبه
الاشاره 50% ووضع الرقم 192 يعني ان الاشاره 75% او بمعني اخر عند اضاءه ليد علي
طرف الذي يدعم PWMتكون الاشاره صفر% اي اليد منطفئ اما 50% فيكون يضئ بنصف طقاته اما 75% فتعنى ان
الليد يضئ بنسبه 75% وهكذا
داله بدايه
العمل بنظامPWMولكن يجب ان يكتب قبله امر اعداد PWMوهوPWM1_Init(5000); وتكون هذه الداله علي
الشكل التالي PWM1_Start();
التعديل فى عرض النبضات PWM من أحد التقنيات القوية المستخدمة فى أنظمة التحكم حاليا . فهى تستخدم فى التحكم فى سرعة المحركات وفى القياسات وفى الاتصالات وفى التحكم فى القدرة .
يتم إنجاز التعديل فى عرض النبضات بمساعدة "موجة مربعة" والتى يتم تغيير "دورة خدمتها" ( زمن دوام أو فعالية النبضة ONtime وزمن تلاشى أو عدم فعالية النبضة) بغرض الحصول على "جهد خرج متغير" كنتيجة "للقيمة المتوسطة " للشكل الموجى كما فى الشكل العلوى , حيث Ton هو الزمن الذى يكون فيه الخرج مرتفعا و Toff هو الزمن الذى يكون فيه الخرج منخفضا . الزمن الإجمالى هو الزمن الدورى period للموجة حيث
Ttotal = Ton +Toff
يعرف دورة الخدمة Dutycycle للموجة المربعة بالصيغة التالية :
D = Ton / (Ton+Toff)= Ton/Ttotal
جهد الخرج يتغيرمع دورة الخدمة بالصيغة
التالية :
Vout = D x Vin
Vout = (Ton/Ttotal) x VIN
Vout = (Ton/Ttotal) x VIN
من هذه العلاقة يتضح أن جهد الخرج يمكن أن
يتغير مباشرة عن طريق تغيير قيمة Ton . فإذا كانت Ton فإن Vout يكون بصفر أيضا .
أمثلة
أمثلة
بالرجوع إلى الشكل العلوى : إذا كان المنطق
صفر logic(0) يدل (يشير) على حالة الفصل switch-off وأن المنطق واحد logic(1) يدل على حالة التوصيل switch-on فإن القدرة التى يستهلكها الحمل سوف تتناسب مباشرة مع
فترة دوام (بقاء – وجود ) النبضة pulseduration.
مثال آخر شائع الاستخدام عمليا هو استخدام الإشارات ذات التعديل فى عرض النبضات PWM فى دوائر لتوليد إشارات بأشكال موجية محددة مثل الشكل الموجى الجيبى.
مثال آخر شائع الاستخدام عمليا هو استخدام الإشارات ذات التعديل فى عرض النبضات PWM فى دوائر لتوليد إشارات بأشكال موجية محددة مثل الشكل الموجى الجيبى.
ثانيا مكتبهPWM
الميكركونترولر PIC16F877A,
على سبيل المثال , فى بناءه الداخلى 2
موديول CCP "إلتقاط – مقارنة - تعديل بعرض النبضة" هما CCP1 و CCP2 .
يمكننا التعامل بسهولة مع التعليمات الخاصة بتوليد أشارة ذات تعديل عرض النبضة PWM بالميكروسى برو.
ملحوظات هامة :
يمكننا التعامل بسهولة مع التعليمات الخاصة بتوليد أشارة ذات تعديل عرض النبضة PWM بالميكروسى برو.
ملحوظات هامة :
بعض الميكروكونترولر بها وحدات CCP متعددة . لكى تستخدم دوال مكتبة وحدة CCP محددة , ببياطة غير الرقم واحد بنموذج الدالة برقم الوحدة التى ترغب فى استخدامها ,
مثل PWM2_Start(); .
جميع وحدات PWM تستخدم المؤقت Timer2 فى عملها , لذلك لن تستطيع تعيين ترددات مختلفة لوحدات PWM مختلفة .
الدوال التى تتناول الموديول CCP1, هى
تستخدم الدالة Pwm_Init() فى تحديد
تردد إشارة PWM بالهرتز (دورة لكل ثانية)
الصيغة :
void PWM1_Init(const
long freq);
هذه الدالة تقوم بتهيئة وحدة PWM للبدء "بنسبة دورة خدمة تساوى الصفر
" . البارامتر freq هوالتردد بالهرتز Hz المطلوب من وحدة PWM العمل به ( يجب الرجوع للداتا شيت الخاصة
بالميكروكونترولر لمعرفة القيم الصحيحة الصالحة مع التردد Fosc ) . هذه الدالة "ليس لها عائد" ويجب
إستدعاؤها قبل استخدام إى دالة أخرى من مكتبة PWM .
ملحوظة
حساب قيمة تردد PWM تم عن طريق المترجم ولذلك يحتاج المترجم لمعرفة البارامتر عند الترجمة وهذا هو السبب فى أن البارامتر freq يجب أن يكون "ثابت" const longوليس متغير
ملحوظة
حساب قيمة تردد PWM تم عن طريق المترجم ولذلك يحتاج المترجم لمعرفة البارامتر عند الترجمة وهذا هو السبب فى أن البارامتر freq يجب أن يكون "ثابت" const longوليس متغير
داله نهايه العمل بنظامPWMولكن يجب ان
يكتب قبله امر اعداد PWMوهوPWM1_Init(5000);وتكون هذه الداله علي الشكل التالي PWM1_Stop();
مخطط الدائرة
البرنامج
sbit DOWN at Rc0_bit;
sbit UP at Rc1_bit;
unsigned short new_DC,
current_DC;
void time(){
Delay_ms(300);
}
void main() {
CMCON = 0x07;
PORTc = 0x00;
TRISc = 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
time();
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
time();
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);
}
|
شرح البرنامج
النتائج
فيديو التجربة
جزاك الله كل خير على هذا الشرح الرائع.
ردحذفجزاك الله خيرا.
ردحذفجعلها الله في ميزان حسناتك
ردحذفكيف نستعمل هذه التعليمة للتحكم في حرارة المزدوجة الحرارية max 6675 مع الميكروكنترولر 16f876
ردحذفأرجو المساعدة
نشكركم
ردحذفاخي العزيز
ردحذفكيف أستطيع تحويل الفولت من 5 فولت الي ٢فولت
وشرح وافي
واذا فيه احد يعرف يعطيني خبر
شكرًا
Win Real Money with JackpotCity Casino - Get a 100% Bonus
ردحذفJackpot City herzamanindir.com/ Casino is an instant-play and mobile casino, 토토사이트 launched in 2017. It is a new 1xbet app online gambling site https://deccasino.com/review/merit-casino/ that features goyangfc.com slots, poker, bingo,