Robocon Assiut

مرحبا بك عزيزي الزائر في منتدي روبوكون اسيوط
يمكنك التسجيل للمشاركة

روبوكون 2014 Robocon Egypt


    الدرس السادس micro control

    شاطر
    avatar
    abdalhy
    Magic Admin
    Magic Admin

    ذكر عدد المساهمات : 68
    نقاط : 1405
    تاريخ التسجيل : 15/08/2010
    العمر : 26

    الدرس السادس micro control

    مُساهمة من طرف abdalhy في السبت سبتمبر 11, 2010 12:32 pm

    بسم الله الرحمن الرحيم

    في هذا الدرس سوف ينقسم الي 3 اجزاء جزء نظري والكتروني وبرمجة
    وفي نهاية الدرس يوجد سرح بلفيديو

    اولا الجزء النظري
    (جزء منها منقول من القرية الالكترونية)

    قد تعلمنا في الدرس السابق عمل 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 هي المسؤولة عن هذا .
    الجزء: الدوئر الالكترونيا


    وهو يمثل تغير في الدئرة الالكترونية لتشغيل الموتور
    سوف يكون هناك ثلاثات اطراف متصل ب 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


    ناتي لدور البرنامج
    الكود:

    #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



    او حمل الفيديو من هنا
    mediafire.com ?b3osyyd5s3eptp9
    ينابع







    _________________


    .

    avatar
    Eng MBH
    مدير
    مدير

    ذكر عدد المساهمات : 98
    نقاط : 2213
    تاريخ التسجيل : 15/08/2010
    العمر : 27

    رد: الدرس السادس micro control

    مُساهمة من طرف Eng MBH في الأحد سبتمبر 12, 2010 10:11 am

    شكرا و بارك الله فيك


    _________________

    the collector
    عضو في روبوكون
    عضو في  روبوكون

    ذكر عدد المساهمات : 11
    نقاط : 20
    تاريخ التسجيل : 08/09/2010
    العمر : 27

    رد: الدرس السادس micro control

    مُساهمة من طرف the collector في الأحد سبتمبر 12, 2010 2:16 pm

    الله على الشغل الجامد يا عبد الحى وربنا يزيدك
    avatar
    eng_heikal
    الكبير
    الكبير

    ذكر عدد المساهمات : 105
    نقاط : 2197
    تاريخ التسجيل : 15/08/2010
    العمر : 27
    الموقع : http://engineeringforall.0-up.com/

    رد: الدرس السادس micro control

    مُساهمة من طرف eng_heikal في الخميس سبتمبر 16, 2010 9:51 am

    بسم الله ما شاء الله
    بارك الله فيك


    _________________

    Fares Elsaraab
    عضو في روبوكون
    عضو في  روبوكون

    ذكر عدد المساهمات : 57
    نقاط : 58
    تاريخ التسجيل : 13/10/2010
    العمر : 27
    الموقع : شمال غرب الجنوب على طول...اول شمال على ايدك اليمين بالضبط...

    رد: الدرس السادس micro control

    مُساهمة من طرف Fares Elsaraab في الجمعة أكتوبر 15, 2010 9:53 pm

    بجد...ربنا يبارك فيك ويجزيك خيرا ان شاء...(اقرأ سورة الفلق بسرعة...)

    samielmadssia
    عضو جديد
    عضو جديد

    ذكر عدد المساهمات : 1
    نقاط : 1
    تاريخ التسجيل : 29/04/2012
    العمر : 24

    رد: الدرس السادس micro control

    مُساهمة من طرف samielmadssia في الإثنين أبريل 30, 2012 12:01 am

    جزاك الله خيرا

    eng.basem515
    عضو جديد
    عضو جديد

    ذكر عدد المساهمات : 1
    نقاط : 1
    تاريخ التسجيل : 27/09/2012
    العمر : 27
    الموقع : جـــدغــيــرــة

    رد: الدرس السادس micro control

    مُساهمة من طرف eng.basem515 في السبت سبتمبر 29, 2012 11:03 pm

    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته

    حبيت اهنيكـ على مجهودكـ الافضل من راائع
    وياليت تستمر في عطائكـ
    لانه الموضوع له سنتين
    لا تمت تكملته

    وتقبلو مني فائق الاحترام والتقدير

      الوقت/التاريخ الآن هو الخميس نوفمبر 23, 2017 2:46 am