دارة قيادة المحركات (MOTOR DRIVER L298)
سأتحدث في هذه التدوينة عن استخدام
الدارة المتكاملة L298 و هي دارة تستخدم
لقيادة محركين كهربائيين بتيار أعظمي 2أمبير لكل محرك , و تتميز بسهولة التحكم و
تحملها لفولتيات حتى 36 فولت .
استخدام الدارة المتكاملة بحد ذاته
يحتاج مركبات الكترونية جانبية , مثل الدايودات و المقاومات و مبددات الحرارة ,
لذلك أُفضل الحديث عن القطعة التي تسمى L298 Module و هو لوحة جاهزة تسهل التعامل مع هذه الدارة المتكاملة و تختصر
الوقت
مبدأالتحكم
لهذه القطعة عدة مداخل و هي :
مبدأالتحكم
لهذه القطعة عدة مداخل و هي :
مداخل المحركات : و عددها 4 مداخل و
موزعة بواقع مدخلين في كل جهة , و يربط بهما المحرك الكهربائي
تكون هذه المخارج مرقمة ب OUT1-OUT4 , نربط المحرك الأول بالمدخلين OUT1 ,OUT2 و المحرك الثاني بالمدخلين OUT3,OUT4 هكذا نستطيع التحكم بسهولة باتجاه دوران المحرك ,
تكون هذه المخارج مرقمة ب OUT1-OUT4 , نربط المحرك الأول بالمدخلين OUT1 ,OUT2 و المحرك الثاني بالمدخلين OUT3,OUT4 هكذا نستطيع التحكم بسهولة باتجاه دوران المحرك ,
هناك المداخل ENA,ENB هذان مدخلان التفعيل , إذا تم تطبيق
صفر منطقي LOW فإن المحرك لن
يدور ابداً و سيتوقف , و اذا كان بوضع التفعيل HIGH فإن التحكم ينتقل عن طريق المداخل
IN1-IN4 بصورة عامة و
توفيراً للمداخل Pins في الأردوينو ,
يتم وضع jumper صغير بين هذه
المداخل مع ال 5v لتفعيلها دائماً
.
التحكم يكون عن طريق المداخل من IN1-IN4 حيث أن IN1 يتحكم بالمدخل OUT1 و الIN2 يتحكم ب OUT2 و هكذا , فبتطبيق 1 منطقي "5
فولت" على مدخل IN1 مثلاً سيتم تمرير
التيار ممن خلال OUT1 و عند تطبيق 0
منطقي سيتم ايقاف مرور التيار عبر OUT1 .هذا مثال بسيط لكيفية التحكم بمحرك
.توصيلة المداخل مع الأردوينو سهلة ,
من المفضل توصيلها مع مداخل تدعم ال PWM مثل 3,5,6,9,10,11
لنستطيع التحكم بسرعة المحرك .
سنقوم بعمل برنامج يقوم بدوران المحرك مع و عكس
عقارب الساعة و توقيفه بسهولة
const int IN1=3;
const int IN2=5;const int IN3=6;const int IN4=9;void setup() {// fIRST , define the Motor's pin as an OUTPUTpinMode( IN1 ,OUTPUT);pinMode( IN2 ,OUTPUT);pinMode( IN3 ,OUTPUT);pinMode( IN4 ,OUTPUT);}void ClockWise(){//When we want to let Motor To Rotate clock wise// just void this part on the loop section .digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);}void CounterClockWise(){//When we want to let Motor To Rotate Counter clock wise// just void this part on the loop section .digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);}void Stop(){//When we want to let Motor To Rotate clock wise// just void this part on the loop section .digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW);}void loop() {// put your main code here, to run repeatedly:ClockWise();delay(2000);Stop();delay(500);CounterClockWise();delay(2000);Stop();delay(500);}

ليست هناك تعليقات :