تحكم في محركات DC, Stepper و Servo مع L293D Driver Shield اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

ـــــــــــ

إذا كنت تخطط لتجميع روبوتك الجديد ، فستحتاج في النهاية إلى معرفة المزيد حول التحكم في مجموعة متنوعة من المحركات مثل محركات DC ، ومحركات Stepper و servos. واحدة من أسهل وأرخص طريقة للقيام بذلك هو الدرايفر L293D Motor Driver Shield مع الاردوينو . إنه درع موتور كامل المواصفات – مثالي للعديد من مشاريع الروبوت و CNC .

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

  • 4 محركات DC ثنائية الاتجاه مع اختيار سرعة 8 بت (0-255) .
  • 2 محرك أستيبر (أحادي القطب أو ثنائي القطب) مع لفائف واحدة ، لفائف مزدوجة ، معشق أو خطوة صغيرة .
  • 2 من المحركات السيرفو .

لقد تمت مناقشة المحركات المذكورة أعلاه في مقال سابق بعنوان ” ثلاث أنواع من المحركات كثيرة الاستخدام في مشاريع الاردوينو تعرف عليها ” .

مسجل الازاحة 74HC595 و دائرة الدرايفر L293D Motor Driver :

L293D-Motor-Driver-Shield-Chipset

الدرايفر L293D هو دائرة تكاملية تستطيع تحريك محرك ثنائي القناة H-Bridge قادر على قيادة زوج من محركات التيار المستمر أو محرك فردي .

نظرًا لأن الدرع يأتي مع شريحتين من محركات L293D ، فهذا يعني أنه يمكن أن يقود بشكل فردي ما يصل إلى أربعة محركات DC مما يجعله مثاليًا لبناء منصات روبوت رباعي .

يوفر الدرع إجمالي 4 قناطر H-Bridges ويمكن لكل قنطرة H تقديم ما يصل إلى 0.6A للمحرك الواحد .

يأتي الدرع أيضًا مع مسجل أزاحة 74HC595 يمتد 4 دبابيس رقمية من Arduino إلى 8 دبابيس للتحكم في الاتجاه لرققتين L293D .

التزويد بالطاقة للدرايفر Power Supply :

L293D-Motor-Driver-Shield-Power-Supply-Terminals

هناك ثلاثة سيناريوهات عندما يتعلق الأمر بتوفير الطاقة للمحركات من خلال الدرع وهي .

مصدر طاقة DC واحد لكل من الاردوينو والمحركات :

إذا كنت ترغب في الحصول على مصدر طاقة DC واحد لكل من الاردوينو والمحركات ، ما عليك سوى توصيله بمقبس DC على الاردوينو أو كتلة EXT_PWR ثنائية السنون على الدرع . ضع وصلة الطاقة على واقي المحرك . يمكنك استخدام هذه الطريقة فقط عندما يكون جهد تزويد المحرك أقل من 12V .

(مستحسن) يعمل الاردوينو من خلال USB ومحركات من خلال مصدر طاقة DC :

إذا كنت ترغب في تشغيل الاردوينو خارج USB ومحركات بالطاقة من مصدر طاقة DC ، قم بتوصيل كبل USB . ثم قم بتوصيل تزويد المحرك بلوك EXT_PWR على الدرع . لا تضع العبور على الدرع .

مزودان منفصلان لتيار التيار المستمر لاردوينو والمحركات :

إذا كنت ترغب في الحصول على اثنين من امدادات الطاقة لتيار مستمر لاردوينو والمحركات , قم بتوصيل وحدة تزويد الاردوينو بمقبس التيار المباشر ، وقم بتوصيل وحدة تزويد المحرك بلوك EXT_PWR . تأكد من إزالة العبور من واقي المحرك .

تحذير :

لا تقم بتوصيل مصدر الطاقة EXT_PWR عندما يكون العبور في مكانه , قد يؤدي إلى تلف الدرع الحركي وكذلك اردوينو الخاص بك !

  •  يوفر الدرع الميزات التالية :
    • يأتي الدرع مزودًا بمجموعة مقاوم خفض للحفاظ على إيقاف تشغيل المحركات أثناء التشغيل .
    • يشير مؤشر LED الموجود على اللوحة إلى أن مصدر طاقة المحرك على ما يرام . إذا لم تكن مضاءة ، فلن تعمل المحركات .
    • إعادة تعيين ليست سوى زر إعادة ضبط اردوينو . انها مجرد طرح أعلى للراحة .

أطراف الخرج للدرايفر Output Terminals :

L293D-Motor-Driver-Shield-Output-Terminals-Pinout

أطراف ربط المحركات كما تظهر في الصورة أعلاه ,يتم تقسيم قنوات الخرج الخاصة بشرائح L293D إلى حافة الدرع من خلال طرفي برغي من 5 أسنان. M1 ، M2 ، M3 و M4. يمكنك توصيل أربعة محركات تيار مستمر بها ذات فولتيات تتراوح بين 4.5 إلى 25 فولت لهذه الاطراف  .

يمكن لكل قناة على الوحدة النمطية توصيل ما يصل إلى 600 مللي أمبير إلى محرك التيار المستمر . ومع ذلك ، فإن مقدار التيار الموفر للمحرك يعتمد على مصدر طاقة النظام .

يمكنك أيضا توصيل اثنين من المحركات الاستيبر إلى محطات الإخراج . يمكن أن يوصل محرك أستيبر واحد الي الاطراف  M1-M2 والاخر إلى M3-M4 .

يقوم الدرع بإخراج خطوط الإخراج PWM  ذات 16 بت إلى رأسين بثلاثة أسنان يمكنك من خلاله توصيل محركين سيرفو .

دبابيس أو أطراف غير مستخدمة على الدرع أو الدرافر L293D :

لا يتم استخدام الاطراف الرقمية رقم 2 و 13 والاطراف التماثلية A0-A5 بواسطة الدرع .

يتم كسر الدبابيس التناظرية في الزاوية اليمنى السفلى حيث دبوس 2 لديه اندلاع صغير. إذا كنت تريد استخدام هذه الاطراف، يمكنك توصيل بعض الرؤوس بها .

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

قيادة محركات التيار المستمر مع درع L293D :

الآن بعد أن عرفنا كل شيء عن الدرع ، يمكننا أن نبدأ في ربطه بأردوينو ! ابدأ بتوصيل الدرع أعلى اردوينو .
بعد ذلك ، قم بتوصيل مصدر الطاقة للمحركات . على الرغم من أنه يمكنك توصيل محركات التيار المستمر ذات الفولتية ما بين 4.5 إلى 25 فولت بالدرع ، إلا أننا هنا نستخدم محركات DC التي تم ذات جهد 9 فولت . لذلك ، سوف نقوم بتوصيل وحدة تزويد الطاقة الخارجية 9V إلى محطة EXT_PWR .

الآن ، قم بتوصيل المحرك بأطراف المحرك M1 أو M2 أو M3 أو M4. في تجربتنا نحن نربطها بـ M4 .

بعد  ذلك يمكنك كتابة الكود البرمجي ورفعه الي الاردوينو , وأستمتع بالتجربة ^_^ .

Wiring-DC-Motor-to-L293D-Motor-Shield-Arduino

سوف يوفر لك الكود التالي فهمًا تامًا لكيفية التحكم في السرعة واتجاه الدوران لمحرك DC مع درع L293D للمحرك ، ويمكن أن يكون بمثابة أساس لمزيد من التجارب والمشاريع العملية .

لتحميل الكود البرمجي اضغط هنا
#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
  //Set initial speed of the motor & stop
  motor.setSpeed(200);
  motor.run(RELEASE);
}

void loop() 
{
  uint8_t i;

  // Turn on motor
  motor.run(FORWARD);
  
  // Accelerate from zero to maximum speed
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }
  
  // Decelerate from maximum speed to zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Now change motor direction
  motor.run(BACKWARD);
  
  // Accelerate from zero to maximum speed
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Decelerate from maximum speed to zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Now turn off motor
  motor.run(RELEASE);
  delay(1000);
}

قيادة محركات الاستيبر مع الدرع L293D :

دعنا نربط محرك الاستيبر بدرع L293D ولكن يجب النظر لنوع المحرك المراد ربطه هنالك نوعين يكثر أستخدامهما كما يلي , ابدأ بتوصيل الدرع أعلى اردوينو .

بالنسبة الاستيبر من النوع ذا القطب الواحد 28 BYJ-48 :

إذا كنت تستخدم 28BYJ-48 الاستيبر أحادي القطب ، يتم تصنيف تلك المحركات عند 5V وتقدم 48 خطوة لكل حركة . لذلك ، قم بتوصيل وحدة تزويد الطاقة الخارجية 5V بمحطة EXT_PWR .

تذكر أن يجب إزالة طرف PWR.

الآن ، قم بتوصيل المحرك إلي الاطراف M1-M2 (المنفذ رقم 1) أو M3-M4 (المنفذ رقم 2) .

Wiring-Unipolar-Stepper-Motor-to-L293D-Motor-Shield-Arduino

بالنسبة لمحركات الاستيبر ذات القطبين NEMA 17 :

إذا كنت تستخدم الاستيبر NEMA 17 ذات القطبين ، فيتم تصنيف تلك المحركات على 12V وتوفر 200 خطوة لكل حركة . لذلك ، قم بتوصيل مصدر الطاقة 12V الخارجية إلى محطة EXT_PWR .

تذكر أنه يجب  إزالة الطرف PWR .

Wiring-Bipolar-Stepper-Motor-to-L293D-Motor-Shield-Arduino

سوف يمنحك الكود التالي فهماً تامًا لكيفية التحكم في محرك السائر أو الاستيبر أحادي القطب أو ثنائي القطب مع درع L293D وهو مماثل لكل من المحركات باستثناء معلمات stepsPerRevolution .

غيّر هذه المعلمة وفقًا لمواصفات محركك قبل تجربة الكود . على سبيل المثال ، بالنسبة لـ NEMA 17 ، قم بتعيينها على 200 و 28BYJ-48 اضبطها على 48 .

لتحميل الكود البرمجي اضغط هنا
#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Interleave coil steps");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micrsostep steps");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

قيادة محركات السيرفو موتور مع درع L293D :

إن قيادة السيرفو موتور  باستخدام درع L293D أمر سهل مثل الفطيرة ^_^ .

يكسر واقي المحرك فعليًا دبابيس إخراج PWM رقم 16 بت من Arduino إلى حافة الدرع برأسين بثلاثة أسنان .

تأتي Power for the Servos من منظم Arduino 5V المدمج على متن البورد، لذلك لا يتعين عليك توصيل أي شيء بمحطة EXT_PWR . الصورة بالاسفل توضح كل شئ , وتجربة ممتعة نتمناها لكم مع الدرايفر الشامل , وأن كان هنالك أي أستفسار فلا تتردد من كتابته في التعليقات في الاسفل ^_^ .

Wiring-Servo-Motor-to-L293D-Motor-Shield-Arduino

نظرًا لأننا نستخدم دبابيس PWM الموجودة على متن اللوحة ، فإن الكود التالي يستخدم مكتبة Servo المدمجة في IDE .

لتحميل الكود البرمجي اضغط هنا
#include <Servo.h> 

Servo myservo;	// create servo object to control a servo
int pos = 0;	// variable to store the servo position

void setup() 
{
  // attaches the servo on pin 10 to the servo object
  myservo.attach(10);   
}

void loop() 
{
  // sweeps from 0 degrees to 180 degrees
  for(pos = 0; pos <= 180; pos += 1) 
  {
    myservo.write(pos);
    delay(15);
  }
  // sweeps from 180 degrees to 0 degrees
  for(pos = 180; pos>=0; pos-=1)
  {
    myservo.write(pos);
    delay(15);
  }
}

أنتهت !!!

اترك تعليقاً



لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *