بسم الله الرحمن الرحيم
في هذا الدرس سوف ينقسم الي 3 اجزاء جزء نظري والكتروني وبرمجة
وفي نهاية الدرس يوجد سرح بلفيديو
وفي نهاية الدرس يوجد سرح بلفيديو
اولا الجزء النظري
(جزء منها منقول من القرية الالكترونية)
قد تعلمنا في الدرس السابق عمل soft start للروبوت ولكن بطريقة مملة
عن طريق اطفاء وتشغيل الموتور وبالتالي تم التحكم في الجهد الواصل لموتور عن طريق اخذ متوسط مدة التشغيل
ام في هذا الدرس سوف نتكلم عن شيئ جد يد يسمي pwm
(جزء منها منقول من القرية الالكترونية)
قد تعلمنا في الدرس السابق عمل soft start للروبوت ولكن بطريقة مملة
عن طريق اطفاء وتشغيل الموتور وبالتالي تم التحكم في الجهد الواصل لموتور عن طريق اخذ متوسط مدة التشغيل
ام في هذا الدرس سوف نتكلم عن شيئ جد يد يسمي pwm
Pulse Width Modulation
[center]ما هو ؟
نشاهد الصورة التالية
كما تشاهدون أن الـ PWM عبارة عن نبضة أو Puls لها بداية و لها نهاية هذه النبضة تتكون من التالي
Ton & Toff & Ttotal
قبل الدخول للقوانين ما هي الفائدة من PWM ؟
هو التحكم بقيم تماثلية عن طريق قيم رقمية يعني استطيع التحكم بالفولت عن Duty cycle .
قبل الشرح الفائدة يجب أن تعرف بعض الأشياء
ما هو الـ Duty Cycle ?
نشاهد القانون التالي
نسبة الـ Ton لـ Ttotal .
القانون هذا لا يستخدم عادا ولكن ذكرناه للعلم فقط
[center]نشاهد القانون التالي
و نحن نعرف أن دخل البك يساوي 5 فولت و بالتالي خرج أطرافه حالتين إما صفر أو 5 فولت . و من خلال مبدأ الـ PWM استطيع أن اجعل الخرج يبدأ من صفر حتى 5 فولت . كيف ذلك ؟ نأخذ مثال لتوضيح ذلك
لو أردت أن اجعل خرج البك عن طريق الـ PWM يساوي 2.5 فولت كيف ذلك ؟ نشاهد التالي
من خلال القوانين السابقة نستطيع جعل الخرج 2.5 فولت عن طريق التحكم بالـ Duty Cycle و لا تنسى أن الـ Duty Cycle عبارة عن نسبة مئوية يعني لو كان الـ Duty Cycle يساوي 50 % فإن نصف الخمسة فولت سوف تصبح 2.5 فولت و كلما زاد الـ Duty Cycle زادت قيمة الخرج فالعلاقة بين Vout و الـ Duty Cycle علاقة طردية .
شاهد العلاقة التالية
Vout = 0.5*5 = 2.5V
و بالطريقة هذه استطيع التحكم بالخرج .
الآن نرجع للسؤال ما هي الفائدة من الـ PWM ؟ باختصار لو كان هناك DC motor مشبوك بطرف البك الذي يولد لي الـ PWM لاستطعت التحكم بسرعته من خلال تغيير Duty Cycle الذي بدوره يغير الخرج و كلما زاد الخرج زادت سرعة الـ DC motor . ارجو أنك عرفت ما هي الفائدة من هذا النوع و للمعلومية هناك فوائد أخرى تستطيع أن توظف هذه الميزة من خلال ما تريد عمله من مشاريع .
الأكثر إثارة في التالي
هناك أنواع كثيرة من البك تدعم هذه الخاصية نأخذ مثال و هو البك رقم 16f877 و لاحظ أن هذا البك يحتوي على رجلين تولد لي هذه الخاصية نشاهد التالي
لاحظ كلمة CCP أي هذه الرجل هي التي سوف تولد لي الـ PWM و هذا البك يمتلك رجلين لتوليد الـ PWM فهي تعتبر ميزة إذاً في البك 16f877 الرجل 16 و 17 هي المسؤولة عن هذا .
الآن نرجع للسؤال ما هي الفائدة من الـ PWM ؟ باختصار لو كان هناك DC motor مشبوك بطرف البك الذي يولد لي الـ PWM لاستطعت التحكم بسرعته من خلال تغيير Duty Cycle الذي بدوره يغير الخرج و كلما زاد الخرج زادت سرعة الـ DC motor . ارجو أنك عرفت ما هي الفائدة من هذا النوع و للمعلومية هناك فوائد أخرى تستطيع أن توظف هذه الميزة من خلال ما تريد عمله من مشاريع .
الأكثر إثارة في التالي
هناك أنواع كثيرة من البك تدعم هذه الخاصية نأخذ مثال و هو البك رقم 16f877 و لاحظ أن هذا البك يحتوي على رجلين تولد لي هذه الخاصية نشاهد التالي
لاحظ كلمة CCP أي هذه الرجل هي التي سوف تولد لي الـ PWM و هذا البك يمتلك رجلين لتوليد الـ PWM فهي تعتبر ميزة إذاً في البك 16f877 الرجل 16 و 17 هي المسؤولة عن هذا .
الجزء: الدوئر الالكترونيا
وهو يمثل تغير في الدئرة الالكترونية لتشغيل الموتور
سوف يكون هناك ثلاثات اطراف متصل ب pic
طرف لتحديد الاتجاه يمين وطرف اخر للاتجاه يسار
وطرف اخر للسرعة
يتم توصيل القاعدة للترانزستور Q1 بقاعدة الترانزستور Q2
ويخرج منهما بطرف للاتجاه يمين مثلا
يوصل ب pic عندما ياخذ high يمر التيار في اتجاه فيتحرك الموتور
يتم توصيل القاعدة للترانزستور Q3 بقاعدة الترانزستور Q4
ويخرج منهما بطرف للاتجاه يسار مثلا
يوصل ب pic عندما ياخذ high يمر التيار في اتجاه فيتحرك الموتور
سوف يكون هناك ثلاثات اطراف متصل ب pic
طرف لتحديد الاتجاه يمين وطرف اخر للاتجاه يسار
وطرف اخر للسرعة
يتم توصيل القاعدة للترانزستور Q1 بقاعدة الترانزستور Q2
ويخرج منهما بطرف للاتجاه يمين مثلا
يوصل ب pic عندما ياخذ high يمر التيار في اتجاه فيتحرك الموتور
يتم توصيل القاعدة للترانزستور Q3 بقاعدة الترانزستور Q4
ويخرج منهما بطرف للاتجاه يسار مثلا
يوصل ب pic عندما ياخذ high يمر التيار في اتجاه فيتحرك الموتور
ام الطرف الثالث فهو الطرف الجديد لا يعمل الموتور بدونها لا نها عبارة عن ترنزستور يعمل كمفتاح
يقفل الدئرة ويشغلها
ويوصل بطرف pwm في pic
وهذا صورة توضحية
بذلك لتشغيل الموتور لاد تحديد الاتجاه ثم السرعة
لو اردنا التحرك ال اليمين نخرج high علي رجل من رجول ال pic
ثم تشغيل pwm
ثالثا : جزء البرمجة
في هذا الجزء لن نتعمق كثيرا فيا مكونات ال pic من الداخل
لذلك نكتفي ببعض النبذات عنها
وهو يعمل عن طريق timer 2
والاوامر الخاصة بها
هي
اوام تكتب في اول البرنامج فقط
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
اومر تكتب لتغير السرعة او duty
set_pwm1_duty (value); j
////// تخص pin C2
set_pwm2_duty (value); j
/// تخص pin C1
قيمة المتغير value بين0 و 1024
لو اردنا انا يكون السرعة سريعة جدا توضع 1023
لو اردنا ان تكون نصف السرعة تكون 512
لو اردنا الاطفاء توضع 0
ناتي لدور البرنامج
شرح البرنامج
او حمل الفيديو من هنا
http://www.mediafire.com/?b3osyyd5s3eptp9
ينابع
يقفل الدئرة ويشغلها
ويوصل بطرف pwm في pic
وهذا صورة توضحية
بذلك لتشغيل الموتور لاد تحديد الاتجاه ثم السرعة
لو اردنا التحرك ال اليمين نخرج high علي رجل من رجول ال pic
ثم تشغيل pwm
ثالثا : جزء البرمجة
في هذا الجزء لن نتعمق كثيرا فيا مكونات ال pic من الداخل
لذلك نكتفي ببعض النبذات عنها
وهو يعمل عن طريق timer 2
والاوامر الخاصة بها
هي
اوام تكتب في اول البرنامج فقط
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
اومر تكتب لتغير السرعة او duty
set_pwm1_duty (value); j
////// تخص pin C2
set_pwm2_duty (value); j
/// تخص pin C1
قيمة المتغير value بين0 و 1024
لو اردنا انا يكون السرعة سريعة جدا توضع 1023
لو اردنا ان تكون نصف السرعة تكون 512
لو اردنا الاطفاء توضع 0
ناتي لدور البرنامج
- الكود:
#include "C:\Documents and Settings\a\Desktop\New Folder (3)\6.h"
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
///////////////////////
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
////////////////////////////////////
// TODO: USER CODE!!
output_high(pin_b0); //
set_pwm1_duty (512);
delay_ms(3000);
set_pwm1_duty (750);
delay_ms(3000);
set_pwm1_duty (1023);
delay_ms(3000);
}
شرح البرنامج
- الكود:
تم اخراج علي
b0== high
لكي ياخذ اتجاه الحركة
ثم توضع السرعة 512 اي يتحرك بنصف السرعة لمدة 3 ثواني
ثم توضع السرعة 750 اي يتحرك بسرعة اعلي لمدة 3 ثواني
ثم توضع السرعة1023 اي يتحرك اعلي سرعة لمدة 3 ثواني
ملاحظا : لا توضع القيمة 1024 لا ن عندهها لن يعمل الموتور
ولكن توضع ب 1023
او حمل الفيديو من هنا
http://www.mediafire.com/?b3osyyd5s3eptp9
ينابع