الثلاثاء، 5 نوفمبر، 2013

غطاء قيادة المحرك L293 Shield

دارة قيادة المحرك L293 




تعد أغطية الأردوينو 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 , 
// Mohannad Rawashdeh
//http://www.genotronex.com/

#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   للخلف

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

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



23 التعليقات :

  1. سلام عليكم !
    موضوع جيد كنت بانتظاره , يبدو أني لم أكن مخطئ حين ظننت أن هذا shield لا يمكنك من إدخال أي نوع من الحساسات , هل أنا مخطئ ؟

    ردحذف
    الردود
    1. اهلاً بك .

      لا هذا غير صحيح ! يمكنك وصل الحساسات حيث ان المداخل من A0-A5 يمكن استخدامها لهذه الوظيفة , و يمكن ايضاً استخدام بعض المداخل الرقمية التي لا تستخدم مع دارة القيادة الخاصة بالمحرك , لكن أفضل استخدام المداخل التماثلية A0-A5 لأنه كما هو واضح في الصورة في الجزء الايمن السفلي يمكن توصيل Pin header و توصيل الحساسات معها بسهولة بالغة , و المقالات القادمة سأتحدث عنها عندما سندخل في بناء الروبوت .

      شكراً لك و اتمنى ان تبقى على تواصل معنا .

      حذف
    2. شكراً على الرد ! فهمت ما قصدت عندما نظرت إليها من الأسفل ... أرجو ان تقومو بشرح استخدام المداخل الرقمية و المداخل التماثلية و توصيل الحساسات.
      شكراً على المجهود .

      حذف
  2. السلام عليكم بارك الله فيكم
    هل يمكنني استخدام ثلاث محركات ستيبر وشكرا على جهودكم

    ردحذف
    الردود
    1. لا , محرك ستبر واحد فقط .

      حذف
  3. لسلام عليكم بارك الله
    لدى Arduino due هل يمكننى استخدامه في مشروع ثلاث محركات استيبر مع شيلد وتعلمون فولتيه تشغله اى الاردوينو دىو هى 3.3 ارجو مساعدتكم في مشروعى وان ترشدونى في الاستفاده في تطبيقا ت لمحركات الاستيبر على Arduino due مع فائق الشكر

    ردحذف
    الردود
    1. ال DUE مختلفة كلياً في كل شيء , بالعموم هناك سلسلة ستكون مخصصة عنها في المدونة ستنطلق بداية الشهر القادم .

      يعتمد كل شيء على نوع المحرك , و دارة القيادة , الأفضل ان تبنيها بنفسك صديقي او ان تشتري شيلد مخصص لل DUE

      حذف
  4. sch : صيغة ملفات مخطط توصيل الدارة في برامج الرسوم "مثل Eagle "
    brd : صيغة ملفات ال PCB للدارة على برامج الرسوم مثل ال Eagle

    ردحذف
  5. طيب سؤال لو سمحت هل هناك مكتبة من نفس النوع ولكن تتحكم فى اكتر من اربعة محركات DC وما هو اقصى تيار وجهد تتحمله

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

      حذف
  6. عفواً اقصد غطاء بدلا من مكتبة

    ردحذف
  7. السلام عليكم وشكرا على مجهودكم الرائع
    بس ازاي محركين يقوموا بتوجيه الروبوت يمين وشمال وفي نفس الوقت امام وخلف اللي اعرفه 5 محركات للقيام بذلك ولو حابب دفع رباعي
    ولو حابب اعمل كدا تنصحني استخدم شيلد ايه

    ردحذف
    الردود
    1. لا غلط .

      في حال تريد التفاف و السير للامام و الخلف في آن واحد يجب ان تستعمل 2 محركين للدفع للامام و الخلف و محرك ثالث حركته تكون فقط باتجاه اليمين و اليسار كما هو موجود في العاب ال RC تماماً .

      حذف
    2. لا غلط .

      في حال تريد التفاف و السير للامام و الخلف في آن واحد يجب ان تستعمل 2 محركين للدفع للامام و الخلف و محرك ثالث حركته تكون فقط باتجاه اليمين و اليسار كما هو موجود في العاب ال RC تماماً .

      حذف
  8. يعطيك العافية كم عدد ال pin يلي بيحجزها من ال 14 pin تبع الاردوينو اونو ياريت تفيدني بهالمعلومة باسرع وقت ممكن
    وشكرا موضوع جميل...

    ردحذف
  9. السلام عليكم
    لوسمحت انا عندي مشكلة انا
    انا نزلت المكتبة بس مش ظاهرة في الامثلة ارجووووووووووو الرد

    ردحذف
  10. هل هذه الدارة يمكن وصلها بكمبيوتر ومن خلال الكمبيوتر تتحكم بالمحركات

    ردحذف
    الردود
    1. نعم يمكن واذا غذيت المحركات من الحاسوب فعليك الأنتباه لان المحرك يسحب تيار عالي ثد يؤدي لتلف منفذ ال usb بجهازك , فاذا اقدمت على ذلك فليكن على مسؤوليتك الشخصية .

      حذف
  11. معلومات مفيدة شكرا لك

    ردحذف
  12. السلام عليكم

    شرح رائع
    عندي سؤال
    أي من ال pin على الاردوينو تتصل M1 M2 M3 M4 على الشيلد

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.