مواجهة الدرايفر L293D IC للتحكم في محرك التيار المستمر مع اردوينو اكتب تعليقُا

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

ــ

إذا كنت تخطط لتجميع صديقك الآلي الجديد ، فستحتاج في النهاية إلى معرفة كيفية التحكم في محركات التيار المستمر . واحدة من أسهل الطرق وأرخصها للتحكم في محركات التيار المستمر هي التواصل مع L293D Motor Driver IC مع الاردوينو . يمكنها التحكم في كل من السرعة والاتجاه الدوار لمحركين DC .

وكمكافأة ، يمكنها حتى التحكم في محرك السائر أحادي القطب مثل 28BYJ-48 أو محرك السائر ثنائي القطب مثل NEMA 17 .

التحكم في DC Motor

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

  • PWM – للتحكم في السرعة .
  • H-Bridge – للتحكم في اتجاه الدوران

PWM - للتحكم في السرعة

يمكن التحكم في سرعة محرك التيار المستمر عن طريق تغيير جهد الإدخال . أسلوب شائع للقيام بذلك هو استخدام PWM (تعديل عرض النبض) .

PWM هي تقنية يتم فيها ضبط متوسط قيمة جهد الدخل عن طريق إرسال سلسلة من نبضات ON-OFF .
متوسط الجهد يتناسب مع عرض النبضات المعروفة باسم دورة التشغيل .

كلما زادت دورة التشغيل ، زاد متوسط الجهد المطبق على محرك التيار المستمر (السرعة العالية) وانخفاض دورة التشغيل ، كلما انخفض متوسط الجهد المطبق على محرك التيار المستمر (سرعة منخفضة) .

أدناه الصورة يوضح تقنية PWM مع دورات العمل المختلفة ومتوسط الجهد .

Pulse-Width-Modulation-PWM-Technique-with-Duty-Cycles

H-Bridge - للتحكم في اتجاه الدوران

يمكن التحكم في اتجاه دوران محرك DC عن طريق تغيير قطبية جهد الإدخال . من الأساليب الشائعة للقيام بذلك استخدام H-Bridge .

تحتوي دارة H-Bridge على أربعة مفاتيح حيث يكون المحرك في المنتصف يشبه ترتيب الحرف H .
إغلاق مفتاحين معينين في نفس الوقت يعكس قطبية الجهد المطبق على المحرك . هذا يسبب التغيير في اتجاه الغزل للمحرك .

أدناه الرسوم المتحركة يوضح عمل الدائرة H-Bridge .

Untitled

L293D Motor Driver IC

L293D-Dual-H-Bridge-Motor-Driver-IC-Pinout

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

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

مزود الطاقة

L293D-Power-Supply-Connections

تمتلك الشريحة L293D IC للمحرك فعليًا اثنين من اطراف إدخال الطاقة . “Vcc1” و “Vcc2”.

  • Vcc1 يستخدم Vcc1 لقيادة الدوائر المنطقية الداخلية التي يجب أن تكون 5V .
  • Vcc2 من دبوس Vcc2 ، يحصل H-Bridge على قوته في قيادة المحركات التي يمكن أن تكون من 4.5 فولت إلى 36 فولت . وكلاهما تغرغ على أرضية مشتركة تسمى GND .

أطراف الخرج للمحركات

L293D-Output-Terminals

يتم توصيل قنوات إخراج L293D للمحرك A و B إلى الاطراف OUT1 و OUT2 و OUT3 و OUT4 على التوالي .

يمكنك توصيل اثنين من محركات التيار المستمر ذات الفولتية بين 4.5 إلى 36V لهذه الاطراف .

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

منافذ أو أطراف التحكم

لكل قناة من القنوات L293D ، يوجد نوعان من دبابيس التحكم التي تسمح لنا بالتحكم في السرعة واتجاه الدوران لمحركات التيار المستمر في الوقت نفسه . دبابيس التحكم في الاتجاه ودبابيس التحكم في السرعة .

دبابيس التحكم في الاتجاه

L293D-Direction-Control-Inputs

باستخدام دبابيس التحكم في الاتجاه ، يمكننا التحكم فيما إذا كان المحرك يدور للأمام أو للخلف . تتحكم هذه الاطراف فعليًا في مفاتيح الدائرة H-Bridge داخل L293D IC .

لدى IC دبابيس تحكم في الاتجاه لكل قناة . تتحكم دبابيس IN1 ، IN2 في اتجاه الدوران للمحرك A بينما تتحكم IN3 ، IN4 في الاتجاه للمحرك B .
يمكن التحكم في اتجاه الدوران للمحرك من خلال تطبيق إما منطق مرتفع (5 فولت) أو منطق منخفض (أرضي) على هذه الاطراف . الرسم البياني أدناه يوضح كيف يتم ذلك .

IN1 IN2 Spinning Direction
Low(0) Low(0) Motor OFF
High(1) Low(0) Forward
Low(0) High(1) Backward
High(1) High(1) Motor OFF

دبابيس التحكم في السرعة

L293D-Speed-Control-Inputs

دبابيس التحكم في السرعة بمعنى . تستخدم ENA و ENB لتشغيل ، إيقاف والتحكم في سرعة المحرك A والمحرك B على التوالي .

توصيل هذه الاطراف بقيمة HIGH سيجعل المحركات تدور ، وتوصيلها  LOW سيجعلها تتوقف . ولكن ، باستخدام تعديل عرض النبض (PWM) ، يمكننا بالفعل التحكم في سرعة المحركات .

الأسلاك - ربط L293D IC مع اردوينو UNO

الآن بعد أن عرفنا كل شيء عن IC ، يمكننا أن نبدأ بتثبيته على الاردوينو !

ابدأ بربط مصدر الطاقة بالمحركات . في تجربتنا ، نحن نستخدم محركات DC Gearbox (المعروفة أيضًا باسم محركات “TT”) التي توجد عادةً في روبوتات ثنائية الدفع . يتم تغذيتها بجهد من 3 إلى 9V . لذلك ، سوف نقوم بتوصيل مزود الطاقة الخارجي 9V إلى دبوس Vcc2 .
بعد ذلك ، نحتاج إلى توفير 5 فولت للدوائر المنطقية لـ L293D . قم بتوصيل Vcc1 إلى منفذ 5V على اردوينو .

الآن ، يتم توصيل دبابيس الإدخال والتمكين (ENA و IN1 و IN2 و IN3 و IN4 و ENB) من L293D IC بستة دبابيس إخراج رقمية من Arduino (9 و 8 و 7 و 5 و 4 و 3) . لاحظ أن دبابيس الإخراج Arduino 9 و 3 كلاهما تمكين PWM .

أخيرًا ، قم بتوصيل محرك واحد عبر OUT1 و OUT2 والمحرك الآخر عبر OUT3 و OUT4 . يمكنك تبديل اتصالات محركك ، من الناحية الفنية ، لا توجد طريقة صحيحة أو خاطئة .

عندما تنتهي ، يجب أن يكون لديك شيء يشبه الرسم التوضيحي الموضح أدناه .

Wiring-L293D-Motor-Driver-IC-with-DC-Motors-Arduino
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

كود الاردوينو - التحكم في محرك التيار المستمر

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

لتحميل الكود البرمجي اضغط هنا
// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
  // Set all the motor control pins to outputs
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  // Turn off motors - Initial state
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop() {
  directionControl();
  delay(1000);
  speedControl();
  delay(1000);
}

// This function lets you control spinning direction of motors
void directionControl() {
  // Set motors to maximum speed
  // For PWM maximum possible values are 0 to 255
  analogWrite(enA, 255);
  analogWrite(enB, 255);

  // Turn on motor A & B
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(2000);
  
  // Now change motor directions
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);
  
  // Turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors
void speedControl() {
  // Turn on motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  
  // Accelerate from zero to maximum speed
  for (int i = 0; i < 256; i++) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  
  // Decelerate from maximum speed to zero
  for (int i = 255; i >= 0; --i) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  
  // Now turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

أنتهت !!!

اترك تعليقاً

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