مبادئ التحكم في محرك التيار المستمر
سنتعلم في هذا الدرس المفصل كيف يعمل متحكم المحرك 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): أرضي مشترك للدائرة.
التوصيل الأساسي:
- وصِّل IN1 و IN2 و IN3 و IN4 بدبابيس Arduino الرقمية.
- وصِّل ENA وENB بدبابيس Arduino PWM.
- قم بتوصيل VCC بمصدر طاقة المحرك (عادةً 5-12 فولت).
- وصِّل 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): تحكم في اتجاه المحرك وسرعته.
التوصيل الأساسي:
- وصِّل درع المحرك بـ Arduino.
- قم بتوصيل المحركات بالطرفين A+ و A- للمحرك A، و B+ و B- للمحرك B.
- قم بتوصيل مصدر طاقة خارجي ب 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.
التوصيل الأساسي:
- وصِّل درع المحرك بـ Arduino.
- قم بتوصيل المحركات بالطرفين M1 و M2 للمحرك A، و M3 و M4 للمحرك B.
- قم بتوصيل مصدر طاقة خارجي ب Vin وGND.
برمجة الأردوينو
إليك كيفية برمجة درع محرك ARD SHD L293D باستخدام مكتبة Adafruit Motor Shield. توفر هذه المكتبة طريقة سهلة للتحكم في المحركات.
تثبيت مكتبة درع المحرك Adafruit
- افتح Arduino IDE.
- انتقل إلى Sketch > Include Library > Manage Libraries.
- ابحث عن "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، يمكنك التحكم في المحركات التي تعمل بالتيار المستمر بعدة طرق مختلفة.
Pingback: Building an Obstacle-Avoiding Robot Car | بناء سيارة روبوت تتجنب العوائق