كود البحث

استخدام سائق المحرك L298N للتحكم في محرك خطوي بأربعة أسلاك

استخدام سائق المحرك L298N للتحكم في محرك خطوي بأربعة أسلاك

في هذا الدرس، سنستكشف كيفية التحكم في محرك خطوة بأربعة أسلاك باستخدام مشغّل المحرك L298N بالتعاون مع لوحة Arduino. يُعدّ L298N مُشغّلاً متعدد الاستخدامات من نوع جسر H مزدوج، يتيح لنا التحكم بفعالية في اتجاه وسرعة محركات الخطوة. بحلول نهاية هذا الدليل، سيكون لديك إعداد عملي قادر على تدوير محرك الخطوة في كلا الاتجاهين والتحكم في سرعته باستخدام مقاومة متغيرة (بوتنشيومتر).

L298N motor driver (yellow connector)

لمساعدتك على فهم العملية بشكل أفضل، أوصي بمشاهدة الفيديو المرتبط، الذي يقدم عرضًا مرئيًا للتوصيلات والبرمجة (في الفيديو عند 01:30).

شرح الأجهزة

تم تصميم سائق المحرك L298N للتحكم بالمحركات من خلال السماح لك بتشغيلها في الاتجاهين الأمامي والعكسي. يستخدم تكوين جسر H، مما يعني أنه يمكنه تبديل قطبية الجهد المطبق على المحرك، وبالتالي عكس اتجاهه. يمكن لهذا السائق التعامل مع جهد تغذية يصل إلى 46V وتيار مستمر بقيمة 2A لكل قناة، مما يجعله مناسبًا للعديد من التطبيقات.

في إعدادنا سنستخدم أربعة دبابيس للتحكم بالمحرك المتدرج. الدبابيس الرئيسية هي:ENAوENB, والذي يجب تعيينه على HIGH (5V) لتمكين المشغل. الأطرافIN1،IN2،IN3، وIN4سيتحكم في حالات ملفات المحرك، مما يسمح له باتخاذ خطوة في الاتجاه المرغوب.

تفاصيل ورقة البيانات

الشركة المصنعةإس تي مايكروإلكترونيكس
رقم القطعةL298N
جهد المنطق/الإدخال والإخراج5 فولت
جهد التغذية5-46 فولت (VS)
تيار الخرج (لكل قناة)2 A كحد أقصى لكل قناة (مستمر)
تيار الذروة (لكل قناة)3 A كحد أقصى
إرشادات تردد PWMمن 1 كيلو هرتز إلى 20 كيلو هرتز
عتبات منطق الإدخال0.8 V (منخفض)، 2.0 V (مرتفع)
هبوط الجهد / Rالمصرف-المصدر (عند التشغيل)/ التشبع1.5 فولت كحد أقصى
الحدود الحرارية150 °م كحد أقصى
حزمةDIP-15
ملاحظات / متغيراتمتوفر أيضًا بنُسخ مسطحة (L298P)

  • تأكدENAوENBمتصلة بـ5 فولت لتعمل بشكل صحيح.
  • استخدم مشتت حرارة مناسب في التطبيقات ذات التيار العالي لمنع السخونة الزائدة.
  • حافظ على الأرضي المشترك بين الأردوينو ووحدة تشغيل المحرك.
  • كن حذرًا من قطبية الأسلاك لتجنب تلف المحرك أو وحدة القيادة.
  • ركّب مكثفات فك الارتباط بالقرب من دبابيس الطاقة لتصفية الضوضاء.
  • اضبط تردد PWM استنادًا إلى مواصفات المحرك لتحقيق الأداء الأمثل.

تعليمات التوصيل الكهربائي

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)

لتوصيل سائق المحرك L298N بلوحة Arduino والمحرك المتدرج، ابدأ بتوصيل مصدر الطاقة. قم بتوصيل الـVINوصل دبوس الـL298N إلى مصدر الطاقة 12V الخاص بك. بعد ذلك، قم بتوصيل الـGNDوصل دبوس في L298N إلى الأرضي لمصدر الطاقة الخاص بك وإلى أرضي الأردوينو أيضًا.

الآن، بالنسبة لدبابيس التحكم، قم بتوصيلENAإلى الدبوس 2 في لوحة الأردوينو وENBإلى الدبوس 3. بعد ذلك، قم بتوصيلIN1إلى الدبوس 8،IN2إلى الدبوس 9,IN3إلى الدبوس 10، وIN4إلى الدبوس 11 في لوحة الأردوينو. أخيرًا، قم بتوصيل أسلاك محرك الخطوة بأطراف الإخراج في وحدة L298N. تأكد من توصيل الزوجين من أسلاك المحرك بالمخارج بشكل صحيح.

أمثلة على الشيفرة وشرح خطوة بخطوة

في الشيفرة، نقوم أولاً بتضمين الـStepper.hمكتبة لتبسيط التحكم في محرك الخطوة. نعرّف إجمالي عدد الخطوات لكل دورة، وهو أمر حاسم للحركة الدقيقة. المعرفات الرئيسية في الشيفرة تشملstepsPerRevolution، الذي يحدد عدد الخطوات اللازمة للدوران الكامل، وmyStepper, الذي يهيئ كائن محرك الخطوة باستخدام الدبابيس المحددة.

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper library

يهيئ هذا المقتطف محرك الخطوة باستخدام الدبابيس المناسبة. في الـsetup()في الدالة، نضبط سرعة المحرك ونفعّل مشغل المحرك عن طريق ضبط الدبابيس 2 و3 على HIGH.

void setup() {
  myStepper.setSpeed(300); // set the speed at 60 rpm
  pinMode(2,OUTPUT); // for EN1
  digitalWrite(2,HIGH); // enable EN1
  pinMode(3,OUTPUT); // for EN2
  digitalWrite(3,HIGH); // enable EN2
}

في الـloop()في الدالة، يقوم المحرك بدورة واحدة في كلا الاتجاهين، في اتجاه عقارب الساعة وعكسه، مع تأخير بينهما. هذا يتيح لك ملاحظة عمل المحرك.

void loop() {
  myStepper.step(stepsPerRevolution); // step one revolution in one direction
  delay(500); // wait half a second
  myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
  delay(500); // wait half a second
}

يُظهر هذا المقتطف كيفية التحكم في المحرك لتدويره في كلا الاتجاهين. الكود الكامل مدرج أدناه بعد المقال للرجوع إليه.

عرض توضيحي / ما الذي تتوقعه

بمجرد توصيل كل شيء بشكل صحيح ورفع الكود، ينبغي أن ترى محرك الخطوة يدور دورة كاملة في اتجاه واحد، تليها دورة كاملة في الاتجاه المعاكس. بالإضافة إلى ذلك، إذا أضفت المقاومة المتغيرة للتحكم في السرعة، فإن تعديلها سيغير سرعة دوران المحرك. انتبه إلى تيار المحرك؛ فكلما زادت السرعة قد يسحب المحرك تيارًا أكبر، مما قد يؤدي إلى ارتفاع حرارته إذا لم يُدار ذلك بشكل صحيح (في الفيديو عند 09:45).

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

الطوابع الزمنية للفيديو

  • 00:00- مقدمة
  • 01:30- شرح الأسلاك
  • 05:00- نظرة عامة على الكود
  • 09:45- عرض توضيحي للتحكم بالمحرك

الصور

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
Nema17_stpper_motor-1
Nema17_stpper_motor-1
Nema17_stpper_motor-2
Nema17_stpper_motor-2
94-Code for One Revolution
اللغة: C++
/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada

 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  // initialize the serial port:
  Serial.begin(9600);
  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

// L298N for Robojax.com 
  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
95-Code for rotating a stepper motor one step at a time
اللغة: C++
/*
 Stepper Motor Control - one step at a time

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor will step one step at a time, very slowly. You can use this to
 test that you've got the four wires of your stepper wired to the correct
 pins. If wired correctly, all steps should be in the same direction.

 Use this also to count the number of steps per revolution of your motor,
 if you don't know it. Then plug that number into the oneRevolution
 example to see if you got it right.

 Created 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
  // initialize the serial port:
  Serial.begin(9600);

  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}  


void loop() {
  // step one step:
    // L298N for Robojax.com 
  myStepper.step(-1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(200);
}

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.