- تعد أغطية الأردوينو Shields من أكثر الأمور روعة نظراً لما توفره من سهولة في التعامل في التركيب أو البرمجة , من ضمن هذه الأغطية غطاء قيادة المحركات من Adafruit المبنية باستخدام الدارة L293 التي تسمى Adafruit Motor Driver L293 Shield و المدعومة بمكتبة قوية جداً تسمح لهذا الغطاء Shield التعامل مع المحركات المستمرة DC محركات السيرفو Servo و المحركات الخطوية Stepper
يمكن لهذا الغطاء التحكم ب 4 محركات DC او محركين سيرفو او محركين خطويين .
سأقتصر في الحديث عن هذا طريقة التحكم في التيار المستمر DC .
و له مكتبة يمكن تحميلها من هنا .
بعد أن تقوم بفك ضغط الملف و وضع المكتبة في مسار المكتبات داخل مجلد الأردوينو , تستطيع قادراً على استخدام المكتبة .
أمور يجب أن تأخذها بعين الأعتبار ما يلي :
كل مدخل من مداخل هذا الغطاء 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