- استخدام الدارة المتكاملة L298 و هي دارة تستخدم لقيادة محركين كهربائيين بتيار أعظمي 2أمبير لكل محرك , و تتميز بسهولة التحكم و تحملها لفولتيات حتى12 فولت .
- استخدام الدارة المتكاملة بحد ذاته يحتاج مركبات الكترونية جانبية , مثل الدايودات و المقاومات و مبددات الحرارة , لذلك أُفضل الحديث عن القطعة التي تسمى 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 لنستطيع التحكم بسرعة المحرك .
كمثال بسيط , سنقوم بتوصيل المحركين بتوصيلة كالتالي :
هذا مثال بسيط لكيفية التحكم بمحرك .
- توصيلة المداخل مع الأردوينو سهلة , من المفضل توصيلها مع مداخل تدعم ال PWM مثل 3,5,6,9,10,11 لنستطيع التحكم بسرعة المحرك .
كمثال بسيط , سنقوم بتوصيل المحركين بتوصيلة كالتالي :
و سنقوم بعمل برنامج يقوم بدوران المحرك مع و عكس عقارب الساعة و توقيفه بسهولة .
التوصيل :
البرنامج :
/*
// This code to drive 2 DC Motor using L298 Module
// Connect :
IN1 >>>> D3
IN2 >>>> D5
IN3 >>>> D6
IN4 >>>> D9
code written For
https://www.facebook.com/arduino.electromaroc/
AIT LASRI YOUNES
*/
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 OUTPUT
pinMode( 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);
}
و هذا البرنامج للتحكم بسرعة المحرك .
/*
// This code to drive 2 DC Motor using L298 Module
// Connect :
IN1 >>>> D3
IN2 >>>> D5
IN3 >>>> D6
IN4 >>>> D9
code written For
http://www.genotronex.com
Mohannad Rawashdeh
*/
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 OUTPUT
pinMode( IN1 ,OUTPUT);
pinMode( IN2 ,OUTPUT);
pinMode( IN3 ,OUTPUT);
pinMode( IN4 ,OUTPUT);
}
void ClockWise(int Speed){
//When we want to let Motor To Rotate clock wise
// just void this part on the loop section .
analogWrite(IN1,0);
analogWrite(IN2,Speed);
analogWrite(IN3,Speed);
analogWrite(IN4,0);
}
void CounterClockWise(int Speed){
//When we want to let Motor To Rotate Counter clock wise
// just void this part on the loop section .
analogWrite(IN1,Speed);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,Speed);
}
void Stop(){
//When we want to let Motor To Rotate clock wise
// just void this part on the loop section .
analogWrite(IN1,0);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,0);
}
void loop() {
//Rise Up
for(int i=0;i<255;i++){
ClockWise(i);
delay(10);
}
for(int i=255;i>0;i--){
ClockWise(i);
delay(10);
}
for(int i=0;i<255;i++){
CounterClockWise(i);
delay(10);
}
for(int i=255;i>0;i--){
CounterClockWise(i);
delay(10);
}
}
EmoticonEmoticon