قيادة المحركات الخطوية ( الجزء الثاني )

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

قيـادة المحركات الخطوية

باستخــدام الآردوينو 











بعد ان تعرفنا في المقال السابق على المحرك الخطوي  و اجزائه  , سنقوم في هذا المقال  
بالتعرف على كيفية ربط المحرك مع الاردوينو , و أهم التطبيقات عليه !



علمنا من خلال المقال السابق انه يجب تطبيق نبضات كهربائية بتسلسل معين على 

المحرك ليعمل بشكل صحيح !



و لأننـا لا يمكننا تطبيق هذا الجهد مباشرة من الاردوينو , سوف نستخدم الترانزيستور مع مصدر جهد خارجي ! 






• ماذا احتاج ؟

- بطاقة اردوينو .

- محرك خطوي 5V (سوف نستخدم 28BYJ-48).







ULN2003A IC  ( أو L293D IC ) .





- لوحة تجارب مثقبة (Breadboard).



- اسلاك توصيل .






• لنبــدأ ؟


استخدمنا هذا المحرك لأنه يعمل على جهد 5V الذي يمكن توفيره مباشرة من الاردوينو , و سعره الذي لا يتجاوز 5 دولارات :) .

هذا المحرك احادي القطبية له خمسة اسلاك , و التركيب الداخلـي للمحرك كمـا في الصورة التالية :



  لمعرفة خصائص المحرك ◄ Datasheet 28BYJ-48►


من خلال نشرة بيانات  المحرك (Datasheet) نجد جدول تسلسل التشغيل , الذي يوضح تسلسل تطبيق الجهد على الاسلاك كالتالــي ...



و الذي يعني انه يجب اولاً تطبيق الجهد على السلك البرتقالي فقط ! , ثم البرتقالي و الاصفر معاً , ثم على السلك الاصفر فقـط , ... , ألخ .


كما ذكرنا سابقاً سنوصل المحرك بـ ULN2003A  و هي عبارة عن مجموهة ترانزيستورات يمكنك التعامل معها كأنك تملك 7 ترانزيستور  في علبة واحدة , و هي ستمكننا من تشغيل محركات بجهد اعلى من 5V  باستخدام الاردوينو ... 


 للإطلاع على نشرة البيانات الخاصة بها  ◄ ULN2003 Datasheet ►





و تكون دارة التوصيل كما في الصورة :








• البرمجــة :


لنكتب برنامج بسيط يقوم بتطبيق جهد على مخارج الاردوينو 8,9,10,11 حسب التسلسل الموجود بالجدول السابق ...



_______________________________________________________

/*
   Stepper Motor 
   By : Ali Hadabeen , Hashemite University, 2013
   https://www.facebook.com/ali.hadabeen 
*/
int Pin0 = 10;
int Pin1 = 11;
int Pin2 = 12;
int Pin3 = 13; 

void setup()
{
 pinMode(Pin0, OUTPUT); 
 pinMode(Pin1, OUTPUT); 
 pinMode(Pin2, OUTPUT); 
 pinMode(Pin3, OUTPUT); 
}

 void loop()
{

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, HIGH);
     delay(1);

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, HIGH);
     delay(1);

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, LOW);
     delay(1);

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, LOW);
     delay(1);

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     delay(1);

     digitalWrite(Pin0, HIGH); 
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     delay(1);

     digitalWrite(Pin0, HIGH); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     delay(1);

     digitalWrite(Pin0, HIGH); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, HIGH);
     delay(1);

     digitalWrite(Pin0, LOW); 
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     delay(1);

}
_______________________________________________________




هذا البرنامج ابسط طريقة لتشغيل المحرك بدوران كامل !


هناك مكتبة جاهزة في الاردوينو للتحكم بالمحركات الخطوية .

و للتعامل مع هذه المكتبة : 



• اولا يجب اضافة المكتبة للبرنامج  :

#include <Stepper.h>




•  ثم نعرف المخارج الموصولة مع الاردوينو  :

Stepper motor(500, in1Pin, in2Pin, in3Pin, in4Pin);

_______________________________________

اول رقم يمثل عدد خطوات المحرك في الدورة الواحدة 

 يمكن معرفة ذلك من خلال نشرة البيانات للمحرك 

لكن يجب الانتباه ان المحركات يضاف لها مسننات تزيد من دقتها 

ويجب حساب الدقة النهائية للمحرك و من ثم اضافتها للكود
________________________________________




• ثم نحدد سرعة المحرك التي نريد التشغيل بها (RPM)

motor.setSpeed(30);



• ثم نقوم بكتابة الامر التالي لتشغيل المحرك بعدد معين من الخطوات 

    motor.step(steps);

و هذا الامر سيوقف البرنامج حتى اتمام تنفيذه ( حسب سرعة المحرك ) 

نضع الرقم موجباً كي يتحرك باتجاه عقارب الساعة و سالباً لعكس اتجاه الحركة .








بعض المشاريع المميزة باستخدام المحرك الخطوي :



• الطابعات ثلاثية الابعـــاد :






شــاهـــد :










• XY Table :









شـــــاهـــــــد :




___________________________

المصادر : 
- adafruit learning system 
- GE tech 
___________________________

هل أعجبك الموضوع ؟

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

إرسال تعليق

جميع الحقوق محفوظة - علي الهضابين ©2012-2013 | ، يرجى ذكر المصدر عند النقل . Privacy-Policy | أنضم ألى فريق التدوين


تصميم alwan-blogger | تطوير Reda Yagoub