الخميس، 4 أكتوبر 2012

Stepper motor driver

stepper motorتحدثنا المره السابقه عن الـ
او محرك الخطوه
ولاحظنا ان ما يميزه هو انه يتحرك عدة خطوات فى الدوره الكامله مما يوفر الدقه المطلوبه فى بعض التطبيقات
والآن سوف نستعرض كيفيه استعماله من جانب كتابة الكود الخاص بتشغيله وتوصليه فى اى دائره

High toruqe, half step & wave drive وفى البدايه يجب ان نختار بين اوضاع تشغيله المتاحه وهى
:wave drive فاما الـ
power consumptionفانه يقلل من الت
فانه يوفر عزم قوى وسرعه مناسبه   high torqueبينما الـ
 فيضاعف من مجال الخطوه الواحده  half step والـ

من الملاحظ ان لكل منهم التطبيق الذى يستوجب استخدام احدى هذه الحالات ولعلنا قبل ان نبدأ بكتابة الاكواد ان ننظر الى هذا الجدول







ولكن يمكن استخدام انواع اخرى واخترنا هذا النوع لأنه الاكثر شيوعاً PIC 16f877a والآن نبدأ بكتابة الكود وسوف نستخدم





//PICهنا نعرف اماكن وضع اطراف الموتور على ال

sbit m1 at portd.b0;
sbit m2 at portd.b1;
sbit m3 at portd.b2;
sbit m4 at portd.b3;

//stateثم نقوم بتعريف متغير  

int state=1;

//ونعطيه قيمه مبدأيه مثلاً الواحد الصحيح وسوف نرى الهدف منه فى باقى الكود

void main() {
//المتصل باطراف الموتور بصفر  port لكل اطراف ال  intialize وهنا نعرف اطراف الموتور على انها اطراف خرج ونقوم بعمل
trisd=0;
portd=0;
   while(1){
//حيث سنقوم بعمل اختبار على قيمته وبناءأ عليها نحدد الخرج على الاطراف stateهنا تظهر فائدة المتغير
    switch(state){

          case 1: //(if state==1) هذه الخطوه تعادل
          m1=1;m2=0;m3=0;m4=0;state=2;delay_ms(500);break;
          case 2:
          m1=0;m2=1;m3=0;m4=0;delay_ms(500);state=3;break;
          case 3:
          m1=0;m2=0;m3=1;m4=0;delay_ms(500);state=4;break;
          case 4:
          m1=0;m2=0;m3=0;m4=1;delay_ms(500);state=1;break;

          }
          }
}

wave dirve فى هذا الكود قد استخدمنا حالة
switch case لاستخدام اى حاله اخرى سيكون كل التغيير فى جزء
half step فمثلاً اذا اردنا حالة
الموجوده بالكود السابق switch case فسيكون هذا هو الجزء الذى سنضعه مكان

switch(state){

 case 1: //(if state==1) هذه الخطوه تعادل
          m1=0;m2=0;m3=0;m4=1;state=2;delay_ms(500);break;
 case 2:
          m1=0;m2=0;m3=1;m4=1;delay_ms(500);state=3;break;
case 3:
          m1=0;m2=0;m3=1;m4=0;delay_ms(500);state=4;break;
case 4:
          m1=0;m2=1;m3=1كm4=0;delay_ms(500);state=5;break;
case 5:
          m1=0;m2=1;m3=0;m4=0;delay_ms(500);state=6;break;
case 6:
          m1=1;m2=1;m3=0;m4=0;delay_ms(500);state=7;break;
case 7:
          m1=1;m2=0;m3=0;m4=0;delay_ms(500);state=8;break;
case 8:
          m1=1;m2=0;m3=0;m4=1;delay_ms(500);state=1;break;


          }

وكذلك يمكن تغير هذا الجزء ليتناسب مع الحاله الثالثه
ULN2003 ICوهكذا نكون قد انتهينا من كتابة الكود الخاص بمحرك الخطوه والآن سنعطى مثالاً لتوصليه فى اى دائره مستخدمين
IC وهو عباره عن مجموعه من الترانزستورات بداخل نفس الـ
وكيفية التوصيل تتضح فى هذه الرسمه


المتصله باطراف الموتور الاربعهPIC هى ارجل الـ m1, m2, m3, m4حيث

.Stepper motor انتظرونا فى المقاله القادمه ونوع آخر من انواع الـ

ليست هناك تعليقات:

إرسال تعليق