الأردوينو Shield L293D

                                     

- تعد أغطية الأردوينو Shields من أكثر الأمور روعة نظراً لما توفره من سهولة في التعامل في التركيب أو البرمجة  , من ضمن هذه الأغطية غطاء قيادة المحركات من Adafruit المبنية باستخدام الدارة L293  التي تسمى Adafruit Motor Driver L293 Shield  و المدعومة بمكتبة قوية جداً تسمح لهذا الغطاء Shield  التعامل مع المحركات المستمرة DC محركات السيرفو Servo و المحركات الخطوية Stepper 




يمكن لهذا الغطاء التحكم ب 4 محركات DC او محركين سيرفو او محركين خطويين .

سأقتصر في الحديث عن هذا طريقة التحكم في التيار المستمر DC .


- تحتاج فقط لتركيب هذا الغطاء  Shield فوق الأردوينو و توصيل أطراف المحرك معه .



- هذه الغطاء يتكون من الدارة المتكاملة L293 و من الدارة المتكاملة 74595 و الهدف منها توفير تعديل نبضي ذات تردد عالي جداً يصل لغاية 64KHz  .



هذا المخطط بيين كيفية مواضيع توصيل المحركات فيه .


و له مكتبة يمكن تحميلها من هنا .


بعد أن تقوم بفك ضغط الملف و وضع المكتبة في مسار المكتبات داخل مجلد الأردوينو , تستطيع قادراً على استخدام المكتبة .

أمور يجب أن تأخذها بعين الأعتبار ما يلي :

كل مدخل من مداخل هذا الغطاء M1,M2,M3,M4 يستطيع أن يتحمل فقط 600 ملي أمبير فقط , فعندما نريد ربط محركات للوربوت مع هذا الغطاء , نربط فقط محرك واحد على كل مدخل , حتى نتجنب حرق هذا الغطاء .





لتغدية المحركات هناك وسيلتين , أما من الأردوينو مباشرة أو من خلال مصدر خارجي , و حتى لا ندخل في أمور معقدة و في حسابات الخوف من ان نسحب تيار كبير او نعطب بطاقة الأردوينو , فإن كل ما علينا هو نزع Jumper  صغير اسفل الغطاء , و ربط المصدر الخارجي"البطارية مثلاً " مع المدخل المكتوب عليه EXT-Power و يجب وصله بقطبية صحيحة و إلا سيتلف الغطاء .




البرمجة :

بعد توصيل المحركات كما في الشكل , سنبدأ برمجة هذا الغطاء .


في بعض الانواع قد تحتاج لتغيير توصيل M2 و تجعلها بالعكس لأن الأنواع الصينية من هذا الغطاء مطبوعة بشكل مختلف




بداية سأعرض الكود و الذي يقوم بتحريك المحرك مع عقارب الساعة وعكس عقارب الساعة , و  بسرعة تصاعديه و تنازليه 


// Adafruit Motor shield library
//This code to Test 2wheel  robot's Motors , 
AIT LASRI YOUNES

#include <AFMotor.h>

AF_DCMotor Rightmotor(1);
AF_DCMotor Leftmotor(2);
 uint8_t i;
void setup() {   Serial.begin(9600); // set up Serial library at 9600 bps   Serial.println("Motor test!");   // turn on motor   Rightmotor.setSpeed(255);   Leftmotor.setSpeed(255);     Rightmotor.run(RELEASE);   Leftmotor.run(RELEASE); } void loop() {       Rightmotor.run(FORWARD);   Leftmotor.run(FORWARD);   for (i=0; i<255; i++) {    Rightmotor.setSpeed(i);    Leftmotor.setSpeed(i);     delay(10);  }     for (i=255; i!=0; i--) {     Rightmotor.setSpeed(i);     Leftmotor.setSpeed(i);     delay(10);  }      Rightmotor.run(BACKWARD);   Leftmotor.run(BACKWARD);   for (i=0; i<255; i++) {     Rightmotor.setSpeed(i);     Leftmotor.setSpeed(i);     delay(10);  }     for (i=255; i!=0; i--) {     Rightmotor.setSpeed(i);     Leftmotor.setSpeed(i);     delay(10);  }      Rightmotor.run(RELEASE);   Leftmotor.run(RELEASE);   delay(1000); }


كتوضيح لهذا البرنامج أهم أمر في البداية هو :




#include <AFMotor.h>

هذا الأمر يقوم بتحميل المكتبة و يجهزها لبدء العمل 

AF_DCMotor motor(motor #)

و في هذا الأمر نعرف المحركات التي سنتعامل معها و نعطيها اسماً محدداً يمكننا تغييره كما نشاء و نحدد رقم المحرك المربوط به من 1-4 .

يمكن ايضاً التحكم بالتردد الذي يعمل عليه التعديل النبضي من خلال هذا الأمر , لكن توفيراً للبطارية أنصحك بأن لا تستعمله لانه يستهلك البطارية 4 اضعاف التردد العادي"التردد العادي 1KHz "


 motor.setSpeed(255);

و هنا نضبط سرعة المحرك بقيمة ما بين 0-255 

 motor.run();

أوامر حركة الروبوت : هي تجمع كلها في هذا الأمر و نقوم فقط بتغيير ما بين القوسين كما يلي :
RELEASE  توقف
FORWARD   للأمام
BACKWARD   للخلف

كل ما عليك فعله هو فقط احضار القطعة و تركيبها و أن تبدأ بتجربة هذا الغطاء بنفسك .

و هذا فيديو يوضح عملية تجريب هذا الغطاء على هيكل روبوت .


EmoticonEmoticon