تعلم الوحدات · الدرس 2.23

محركات التيار المستمر (DC Motors)

العودة إلى الدروس

المحرك ومزود الطاقة

ستتحكم بمحرك التيار المستمر (DC Motor) صغير باستخدام UNO R3 ودائرة قيادة المحرك (L293D IC). قد يحتاج المحرك قدرة أكبر مما يتحمله المنفذ الرقمي؛ توصيله مباشرة قد يتلف اللوحة، لذلك نستخدم وحدة تغذية (Power Supply Module).

المكونات المطلوبة

وحدة تغذية لوحة التجارب (Breadboard Power Supply)

وحدة تغذية لوحة التجارب (Breadboard Power Supply)
وحدة تغذية لوحة التجارب (Breadboard Power Supply)

يمكن ضبط خرج اليمين واليسار مستقلين بنقل الوصلات. إذا كانتا في OFF فلن يعمل مؤشر الطاقة ولا قضبان التغذية.

اختيار خرج 5V أو 3.3V
اختيار خرج 5V أو 3.3V

وضع وحدة الطاقة (Power Supply Module) ودائرة قيادة المحرك (L293D IC)

تركيب وحدة التغذية (Power Supply Module) بمحاذاة قطبية لوحة التجارب (Breadboard)
تركيب وحدة التغذية (Power Supply Module) بمحاذاة قطبية لوحة التجارب (Breadboard)

L293D

تتحكم بمحركين مستقلين. نستخدم نصفها فقط هنا؛ معظم أطراف اليمين للمحرك الثاني.

دائرة قيادة المحرك (L293D IC)
دائرة قيادة المحرك (L293D IC)

المواصفات: منتجات L293 و L293D من Unitrode لدى Texas Instruments؛ تغذية 4.5–36V؛ تغذية مستقلة لمنطق المداخل؛ حماية ESD؛ إيقاف حراري؛ مداخل عالية المناعة للضجيج؛ تشابه وظيفي مع SGS L293 و L293D. تيار كل قناة 1A في L293 و 600mA في L293D؛ والذروة 2A و 1.2A على الترتيب. تضم L293D صمامات تثبيت لكبح النبضات الناتجة عن الأحمال الحثية.

ترتيب أطراف L293D
ترتيب أطراف L293D

عمل الجسر H

L293 و L293D أربع مراحل نصف جسر H عالية التيار. يقود الأول تيارًا ثنائي الاتجاه حتى 1A، والثاني حتى 600mA، عند 4.5–36V. يستخدمان للمرحلات والملفات اللولبية ومحركات التيار المستمر (DC Motors) والمحركات الخطوية (Stepper Motor) ثنائية القطب والأحمال مرتفعة التيار والجهد ذات التغذية الموجبة.

المداخل متوافقة مع TTL. لكل خرج مرحلة Totem-pole، بترانزستور Darlington للسحب و Pseudo-Darlington للإمداد. يمكّن 1,2EN المرحلتين 1 و 2، و 3,4EN المرحلتين 3 و 4. عند HIGH تكون المخارج نشطة وتوافق المداخل؛ وعند LOW تتعطل وتصبح عالية الممانعة. يشكل كل زوج مع بيانات التحكم المناسبة جسر H كاملًا قابلًا للعكس لقيادة ملف أو محرك.

ترتيب التوصيل

يوضح الدرس ثلاثة أسلاك تحكم إلى Arduino، وسلكين إلى المحرك، واتصالًا بتغذية البطارية. يسار الشريحة للمحرك 1، ويمينها للمحرك 2؛ ويمكن تشغيل محرك واحد فقط.

مخطط الكتل وأطراف قيادة المحركين
مخطط الكتل وأطراف قيادة المحركين

وصّل M1 PWM بمنفذ PWM، مثل 5 في UNO. القيم 0 للإطفاء و 128 لنصف السرعة و 255 للأقصى. وصّل مدخلي اتجاه M1 بمنفذين رقميين؛ HIGH و LOW يديران المحرك في اتجاه، وعكسهما LOW و HIGH يعكس الاتجاه.

توصيل الدائرة

المخطط الكهربائي لمحرك التيار المستمر (DC Motor) مع L293D
المخطط الكهربائي لمحرك التيار المستمر (DC Motor) مع L293D
توصيل المحرك ووحدة الطاقة (Power Supply Module) ولوحة أردوينو (UNO R3 Board)
توصيل المحرك ووحدة الطاقة (Power Supply Module) ولوحة أردوينو (UNO R3 Board)

البرنامج والتجربة

تتولى L293D قيادة المحرك وعزل منافذ التحكم عن تياره. اتبع مخطط التوصيل لتغذية المحرك من وحدة الطاقة (Power Supply Module)، مع توصيل الأرضي المشترك بلوحة أردوينو (UNO R3 Board).

رسائل تجربة المحرك في المراقب التسلسلي
رسائل تجربة المحرك في المراقب التسلسلي

افتح ملف البرنامج DC_Motor.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.

إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.

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

الكود

DC_Motor/DC_Motor.ino

//www.elegoo.com
//2016.12.12

/************************
Exercise the motor using
the L293D chip
************************/

#define ENABLE 5
#define DIRA 3
#define DIRB 4

int i;
 
void setup() {
  //---set pin direction
  pinMode(ENABLE,OUTPUT);
  pinMode(DIRA,OUTPUT);
  pinMode(DIRB,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  //---back and forth example
    Serial.println("One way, then reverse");
    digitalWrite(ENABLE,HIGH); // enable on
    for (i=0;i<5;i++) {
    digitalWrite(DIRA,HIGH); //one way
    digitalWrite(DIRB,LOW);
    delay(500);
    digitalWrite(DIRA,LOW);  //reverse
    digitalWrite(DIRB,HIGH);
    delay(500);
  }
  digitalWrite(ENABLE,LOW); // disable
  delay(2000);

  Serial.println("fast Slow example");
  //---fast/slow stop example
  digitalWrite(ENABLE,HIGH); //enable on
  digitalWrite(DIRA,HIGH); //one way
  digitalWrite(DIRB,LOW);
  delay(3000);
  digitalWrite(ENABLE,LOW); //slow stop
  delay(1000);
  digitalWrite(ENABLE,HIGH); //enable on
  digitalWrite(DIRA,LOW); //one way
  digitalWrite(DIRB,HIGH);
  delay(3000);
  digitalWrite(DIRA,LOW); //fast stop
  delay(2000);

  Serial.println("PWM full then slow");
  //---PWM example, full speed then slow
  analogWrite(ENABLE,255); //enable on
  digitalWrite(DIRA,HIGH); //one way
  digitalWrite(DIRB,LOW);
  delay(2000);
  analogWrite(ENABLE,180); //half speed
  delay(2000);
  analogWrite(ENABLE,128); //half speed
  delay(2000);
  analogWrite(ENABLE,50); //half speed
  delay(2000);
  analogWrite(ENABLE,128); //half speed
  delay(2000);
  analogWrite(ENABLE,180); //half speed
  delay(2000);
  analogWrite(ENABLE,255); //half speed
  delay(2000);
  digitalWrite(ENABLE,LOW); //all done
  delay(10000);
}
   

ملفات الدرس والمكتبات

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.