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

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

ـــــــــــــــ

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

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

التحكم في محرك التيار المستمر DC

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

  • 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- جسر .

Untitled

L298N Motor Driver IC

L298N-Motor-Driver-Module-IC

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

مزود الطاقة

L298N-Motor-Driver-Module-5V-Jumper-Power-Supply-Pins-Regulator

يتم تشغيل وحدة تشغيل المحرك L298N من خلال أطراف لولبية بطول 3.5 ملم . وهي تتألف من دبابيس لإمدادات الطاقة (Vs) ، وإمدادات الطاقة VV (VSS).

يمتلك الدرايفر L298N للمحرك IC فعليًا اثنين من اطراف قوة الدخل “Vss” و “Vs”.

من Vs pin ، تحصل H-Bridge على قوتها في قيادة المحركات التي يمكن أن تكون من 5 إلى 35 فولت . يستخدم Vss لقيادة الدوائر المنطقية التي يمكن أن تكون من 5 إلى 7V .  وكلاهما يغرقان في أرضية مشتركة تسمى “GND” .

تحتوي الوحدة على منظم جهد 78M05 5V على متن اللوحة من STMicroelectronics . يمكن تمكينه أو تعطيله من خلال الربط بسلك .

عندما يكون هذا السلك في مكانه الصحيح ، يتم تمكين منظم 5 فولت ، مما يوفر مصدر طاقة منطقي (Vss) من مزود طاقة المحرك (Vs) . في هذه الحالة ، يعمل طرف إدخال 5 فولت بمثابة دبوس إخراج وتقدم 5 فولت 0.5A . يمكنك استخدامه لتشغيل اردوينو أو الدوائر الأخرى التي تتطلب امدادات الطاقة 5V .
عند إزالة سلك العبور أو القصر ، يتم تعطيل منظم الجهد 5V وعلينا تزويد 5 فولت بشكل منفصل من خلال مصدر إدخال 5 فولت .

تحذير :

يمكنك وضع سلك العبور في مكانه ، إذا كان مصدر طاقة المحرك أقل من 12V . إذا كان حجمها أكبر من 12 فولت ، فيجب عليك إزالة سلك العبور لتجنب إتلاف منظم 5V الموجود على متن اللوحة .

لا تقم أيضًا بتزويد كل من مدخلات مصدر الطاقة للمحرك وإدخال مصدر الطاقة بجهد 5 فولت عند وضع سلك العبور في مكانه .

هبوط الجهد في L298N

انخفاض الجهد في L298N هو حوالي 2V . ويرجع ذلك إلى انخفاض الجهد الداخلي في الترانزستورات التبديل في الدائرة H-Bridge .

لذلك ، إذا قمنا بتوصيل 12V إلى مصدر تزويد الطاقة ، فإن المحركات ستتلقى الجهد حول 10V . وهذا يعني أن محرك التيار المستمر 12V لن تدور أبدا في أقصى سرعة لها .
للحصول على أقصى سرعة ، يجب أن يكون مصدر طاقة المحرك أعلى قليلاً من الجهد (2V) من متطلبات الجهد الفعلي للمحرك .

النظر في انخفاض الجهد من 2V ، إذا كنت تستخدم محركات 5V ستحتاج إلى توفير 7V في محطة امدادات الطاقة الحركية. إذا كان لديك محركات 12V ، فيجب أن يكون جهد تزويد المحرك لديك 14V.

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

L298N-Motor-Driver-Module-Motor-Connection-Pinout

يتم تقسيم قنوات الخرج الخاصة بمحرك المحرك L298N الي A و B إلى  مع طرفي برغي بطول 3.5 ملم .

يمكنك توصيل اثنين من محركات التيار المستمر ذات الفولتية بين 5 إلى 35 فولت لهذه الاطراف .
يمكن لكل قناة توصيل ما يصل إلى 2A للمحرك DC . ومع ذلك ، فإن مقدار التيار الموفر للمحرك يعتمد على مصدر طاقة النظام .

منافذ التحكم

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

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

L298N-Motor-Driver-Module-Spinning-Direction-Control-Pins

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

تحتوي الوحدة على دبابيس تحكم في الاتجاه لكل قناة . تتحكم دبابيس IN1 و IN2 في اتجاه الدوران للمحرك A بينما  IN3 و IN4 هي دبابيس المحرك B .

يمكن التحكم في اتجاه الدوران للمحرك من خلال تطبيق إما منطق عالي (5 فولت) أو منطق منخفض (0 فولت) على هذه المدخلات . الرسم البياني أدناه يوضح كيف يتم ذلك .

Input1 Input2 Spinning Direction
Low(0) Low(0) Motor OFF
High(1) Low(0) Forward
Low(0) High(1) Backward
High(1) High(1) Motor OFF

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

L298N-Motor-Driver-Module-Speed-Control-Pins

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

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

أطراف L298N Motor Driver Module

دعونا نلقي نظرة على اطراف الوحدة أدناه .

L298N-Motor-Driver-Module-Pinout
  • VCC دبوس إمدادات الطاقة للمحرك . يمكن أن يكون في الحدود 5 إلى 35V . تذكر ، إذا كان سلك العبور 5V-EN في مكانه ، فأنت بحاجة إلى توفير فولتين إضافيين من متطلبات الجهد الفعلي للمحرك ، من أجل الحصول على أقصى سرعة من المحرك .
  • GND هو دبوس الأرضي المشتركة .
  • 5V يوفر الطاقة لدارات منطق التبديل داخل L298N IC . إذا كان العبور 5V-EN في مكانه ، يعمل هذا الدبوس كإخراج ويمكن استخدامه لتزويد الاردوينو بالطاقة . إذا تمت إزالة وصلة المرور 5V-EN ، فستحتاج إلى توصيلها بطرف 5V على الاردوينو .
  • ENA يتم استخدام هذا الطرف للتحكم في سرعة المحرك A .
  • ENB  تُستخدم هذه الدبابيس للتحكم في سرعة المحرك B .
  •  IN1 و IN2 يتم استخدام دبابيس IN1 و IN2 للتحكم في اتجاه الدوران للمحرك A . عندما يكون أحدهما عاليًا والآخر منخفض ، فإن المحرك A سوف يدور . إذا كان كل من المدخلات إما عالية أو منخفضة فإن المحرك A سوف يتوقف .
  • IN3 و IN4 يتم استخدام دبابيس IN3 و IN4 للتحكم في اتجاه الدوران للمحرك B . عندما يكون أحدهما عاليًا والآخر منخفض ، فإن المحرك B سوف يدور . إذا كان كل من المدخلات إما عالية أو منخفضة فإن المحرك B سيتوقف .
  • OUT1 & OUT2 يتم توصيل دبابيس OUT1 و OUT2 بالمحرك A .
  • OUT3 & OUT4 يتم توصيل دبابيس OUT3 و OUT4 بمحرك B .

الأسلاك - ربط وحدة الدرايفر L298N مع اردوينو UNO

الآن بعد أن عرفنا كل شيء عن الوحدة ، يمكننا أن نبدأ في ربطها مع الاردوينو !

ابدأ بربط مصدر الطاقة بالمحركات . في تجربتنا ، نحن نستخدم محركات DC Gearbox (المعروفة أيضًا باسم محركات “TT”) التي توجد عادةً في روبوتات ثنائية الدفع . لذلك ، سوف نقوم بتوصيل التيار الكهربائي 12V الخارجية إلى محطة VCC . النظر في انخفاض الجهد الداخلي من L298N IC ، سوف تتلقى المحركات 10V وتدور في دورة في الدقيقة أو أقل قليلا. ولكن هذا على ما يرام .

بعد ذلك ، نحن بحاجة إلى توفير 5 فولت للدوائر المنطقية L298N . سوف نستفيد من منظم 5V الموجود على متن اللوحة ونشتق 5 فولت من مزود طاقة المحرك ، لذلك ، ابق على العبور 5V-EN في مكانه .

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

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

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

Wiring-L298N-Motor-Driver-Module-with-DC-TT-motors-and-Arduino-UNO
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

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

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

لتحميل الكود البرمجي اضغط هنا
// 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);
}

أنتهت !!!

اترك تعليقاً



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