You are currently viewing Controlling DC Motors with L298N Dual H-Bridge and Arduino Motor Shield
Setup showing a DC motor connected to an L298N Dual H-Bridge and Arduino Motor Shield.

التحكم في المحركات التي تعمل بالتيار المستمر باستخدام L298N Dual H-Bridge وMotor Shield

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

سنتعلم في هذا الدرس المفصل كيف يعمل متحكم المحرك L298N Dual H-Bridge ومتحكم المحرك Motor Shield. في مشاريع الروبوتات والأتمتة، هذه الأجزاء ضرورية للتحكم في المحركات التي تعمل بالتيار المستمر. سنتحدث عن كيفية عملها وكيفية توصيلها وكيفية برمجتها باستخدام Arduino، مع إعطاء أمثلة وبرامج.

تُعَدُّ المحركات التي تعمل بالتيار المستمر جزءًا مهمًا من العديد من المشاريع الكهربائية. فهي تحول الطاقة الكهربائية إلى حركة ميكانيكية، مما يجعلها مفيدة في كل شيء من الألعاب البسيطة إلى الروبوتات المعقدة. لتحقيق حركات دقيقة، تحتاج إلى القدرة على التحكم في اتجاه وسرعة المحركات. تجعل متحكمات المحركات القيادة مثل L298N Dual H-Bridge وArduino Motor Shield هذا ممكنًا.

متحكم المحرك الجسر H

الجسر H هو تكوين دائرة يسمح بتطبيق جهد عبر الحمل (مثل المحرك) في أي اتجاه. هذه القدرة ضرورية لعكس اتجاه المحرك.

كيف يعمل:

  • الاتجاه إلى الأمام: عندما تكون المفاتيح S1 و S4 مغلقة (والمفاتيح S2 و S3 مفتوحة)، يتدفق التيار من مصدر الطاقة عبر المحرك، مما يجعله يدور في اتجاه واحد.
  • الاتجاه العكسي: عندما تكون المفاتيح S2 و S3 مغلقة (والمفاتيح S1 و S4 مفتوحة)، يتدفق التيار في الاتجاه المعاكس، مما يجعل المحرك يدور في الاتجاه المعاكس.

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

متحكم المحرك الجسر L298N H

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

الميزات الرئيسية:

  • يتحكم في محركين يعملان بالتيار المستمر
  • يتعامل مع التيارات العالية (حتى 2 أمبير لكل قناة)
  • يستخدم PWM للتحكم في السرعة

الروابط:

  • Input Pins (IN1, IN2, IN3, IN4): التحكم في اتجاه المحركات.
  • Enable Pins (ENA, ENB): التحكم في السرعة عبر إشارات PWM.
  • Motor Power (VCC): يتم التوصيل بمصدر طاقة المحرك.
  • الأرضي (GND): أرضي مشترك للدائرة.

التوصيل الأساسي:

  1. وصِّل IN1 و IN2 و IN3 و IN4 بدبابيس Arduino الرقمية.
  2. وصِّل ENA وENB بدبابيس Arduino PWM.
  3. قم بتوصيل VCC بمصدر طاقة المحرك (عادةً 5-12 فولت).
  4. وصِّل GND بأرضي Arduino.

برمجة الأردوينو

بمجرد توصيل كل شيء، ستحتاج إلى برمجة Arduino للتحكم في المحرك.

/**
 * Author: Omar Draidrya
 * Date: 2024/06/07
 * This code controls the forward and backward movement of a motor using an H-bridge.
 */

#define IN1 9  // Motor 1 control pin 1
#define IN2 8  // Motor 1 control pin 2
#define IN3 7  // Motor 2 control pin 1
#define IN4 6  // Motor 2 control pin 2
#define ENA 10 // Motor 1 speed control
#define ENB 5  // Motor 2 speed control

void setup() {
    // Set all the motor control pins to outputs
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(ENA, OUTPUT);
    pinMode(ENB, OUTPUT);

    // Initialize all the control pins to LOW
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
}

void loop() {
    // Move forward
    digitalWrite(IN1, HIGH); // Set motor 1 forward
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH); // Set motor 2 forward
    digitalWrite(IN4, LOW);
    analogWrite(ENA, 128);   // Set motor 1 speed
    analogWrite(ENB, 128);   // Set motor 2 speed
    delay(2000);             // Move forward for 2 seconds

    // Stop
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    delay(2000);             // Stop for 2 seconds

    // Move backward
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH); // Set motor 1 backward
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH); // Set motor 2 backward
    analogWrite(ENA, 128);   // Set motor 1 speed
    analogWrite(ENB, 128);   // Set motor 2 speed
    delay(2000);             // Move backward for 2 seconds

    // Stop
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    delay(1000);             // Stop for 1 second
}
    

درع محرك اردوينو (Arduino Motor Shield)

يعمل درع المحرك Arduino Motor Shield على تبسيط التحكم في المحرك من خلال نهج التوصيل والتشغيل، مما يوفر واجهة سهلة لتوصيل محركات التيار المستمر إلى Arduino الخاص بك.

الميزات الرئيسية:

  • يتحكم في محركي تيار مستمر أو محرك متدرج واحد
  • يتعامل مع التيارات العالية (حتى 2 أمبير لكل قناة)
  • يدعم PWM للتحكم في السرعة

الروابط:

  • Motor Terminals (A+, A-, B+, B-): يتم التوصيل بأسلاك المحرك.
  • Power Supply (Vin, GND): مصدر طاقة خارجي للمحركات.
  • Control Pins (DIR A, DIR B, PWM A, PWM B): تحكم في اتجاه المحرك وسرعته.

التوصيل الأساسي:

  1. وصِّل درع المحرك بـ Arduino.
  2. قم بتوصيل المحركات بالطرفين A+ و A- للمحرك A، و B+ و B- للمحرك B.
  3. قم بتوصيل مصدر طاقة خارجي ب Vin وGND.

برمجة الأردوينو

/**
 * Author: Omar Draidrya
 * Date: 2024/06/07
 * This code controls the forward and backward movement of a motor using an H-bridge.
 */

#define DIR_A 12  // Motor A direction control
#define DIR_B 13  // Motor B direction control
#define PWM_A 3   // Motor A speed control
#define PWM_B 11  // Motor B speed control

void setup() {
    // Set all the motor control pins to outputs
    pinMode(DIR_A, OUTPUT);
    pinMode(DIR_B, OUTPUT);
    pinMode(PWM_A, OUTPUT);
    pinMode(PWM_B, OUTPUT);
}

void loop() {
    // Move forward
    digitalWrite(DIR_A, HIGH); // Set motor A forward
    digitalWrite(DIR_B, HIGH); // Set motor B forward
    analogWrite(PWM_A, 255);   // Set motor A speed to maximum
    analogWrite(PWM_B, 255);   // Set motor B speed to maximum
    delay(2000);               // Move forward for 2 seconds

    // Stop
    analogWrite(PWM_A, 0);     // Stop motor A
    analogWrite(PWM_B, 0);     // Stop motor B
    delay(1000);               // Stop for 1 second

    // Move backward
    digitalWrite(DIR_A, LOW);  // Set motor A backward
    digitalWrite(DIR_B, LOW);  // Set motor B backward
    analogWrite(PWM_A, 255);   // Set motor A speed to maximum
    analogWrite(PWM_B, 255);   // Set motor B speed to maximum
    delay(2000);               // Move backward for 2 seconds

    // Turn left
    digitalWrite(DIR_A, LOW);  // Set motor A backward
    digitalWrite(DIR_B, HIGH); // Set motor B forward
    analogWrite(PWM_A, 255);   // Set motor A speed to maximum
    analogWrite(PWM_B, 255);   // Set motor B speed to maximum
    delay(2000);               // Turn left for 2 seconds

    // Turn right
    digitalWrite(DIR_A, HIGH); // Set motor A forward
    digitalWrite(DIR_B, LOW);  // Set motor B backward
    analogWrite(PWM_A, 255);   // Set motor A speed to maximum
    analogWrite(PWM_B, 255);   // Set motor B speed to maximum
    delay(2000);               // Turn right for 2 seconds
}
    

متحكم المحرك الجسر L298N H ARD SHD

درع محرك ARD SHD L293D يبسط التحكم في المحركات بواجهة مباشرة لتوصيل والتحكم في المحركات التي تعمل بالتيار المستمر مع Arduino. يستخدم شريحة L293D، التي يمكنها التعامل مع الفولتية والتيار العالي، مما يجعله مناسبًا للمحركات الأكبر.

الميزات الرئيسية:

  • يتحكم في ما يصل إلى أربعة محركات تيار مستمر أو محركين متدرجين
  • يوفر 0.6 أمبير تيار مستمر لكل قناة (1.2 أمبير ذروة)
  • يدعم جهد المحرك من 4.5 فولت إلى 25 فولت
  • حماية حرارية مدمجة

الروابط:

  • Motor Terminals (M1, M2, M3, M4): قم بتوصيل أسلاك المحرك بهذه الأطراف.
  • Power Supply (Vin, GND): مصدر طاقة خارجي للمحركات.
  • Control Pins: معيّن داخلياً إلى دبابيس Arduino.

التوصيل الأساسي:

  1. وصِّل درع المحرك بـ Arduino.
  2. قم بتوصيل المحركات بالطرفين M1 و M2 للمحرك A، و M3 و M4 للمحرك B.
  3. قم بتوصيل مصدر طاقة خارجي ب Vin وGND.

برمجة الأردوينو

إليك كيفية برمجة درع محرك ARD SHD L293D باستخدام مكتبة Adafruit Motor Shield. توفر هذه المكتبة طريقة سهلة للتحكم في المحركات.

تثبيت مكتبة درع المحرك Adafruit

  1. افتح Arduino IDE.
  2. انتقل إلى Sketch > Include Library > Manage Libraries.
  3. ابحث عن "Adafruit Motor Shield" وقم بتثبيته.
/**
 * Author: Omar Draidrya
 * Date: 2024/06/07
 * This code controls the forward and backward movement of two DC motors using the Adafruit Motor Shield.
 */

#include <AFMotor.h>

// Create motor objects for two DC motors
AF_DCMotor motor1(1); // Motor on M1
AF_DCMotor motor2(2); // Motor on M2

void setup() {
    // Set the speed of the motors (0-255)
    motor1.setSpeed(200);
    motor2.setSpeed(200);
}

void loop() {
    // Move forward
    motor1.run(FORWARD); // Set motor1 to move forward
    motor2.run(FORWARD); // Set motor2 to move forward
    delay(2000);         // Move forward for 2 seconds

    // Stop
    motor1.run(RELEASE); // Stop motor1
    motor2.run(RELEASE); // Stop motor2
    delay(1000);         // Stop for 1 second

    // Move backward
    motor1.run(BACKWARD); // Set motor1 to move backward
    motor2.run(BACKWARD); // Set motor2 to move backward
    delay(2000);          // Move backward for 2 seconds

    // Stop
    motor1.run(RELEASE); // Stop motor1
    motor2.run(RELEASE); // Stop motor2
    delay(1000);         // Stop for 1 second
}
    

اختبار متحكمات المحركات

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

الخاتمة

عند استخدام درع محرك Arduino أوL298N Dual H-Bridge، يمكنك التحكم في المحركات التي تعمل بالتيار المستمر بعدة طرق مختلفة.

omartronics

مرحبًا بكم في OmArTronics، مركز عشاق التكنولوجيا والعقول المبدعة! اسمي عمر، مؤسس هذا الموقع الإلكتروني وقناة اليوتيوب، وأنا مهندس شغوف ذو خلفية في الهندسة الكهربائية والميكانيكية، وأتابع حاليًا دراسة الماجستير في الميكاترونيكس في ألمانيا.

This Post Has One Comment

اترك تعليقاً