 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
29-12-2019, 09:12 PM
المشاركة 3
|
|
التحكم فى سرعة واتجاه محرك التيار المستمر DC motor باستخدام الدائرة المتكاملة L298 والاردوينو :
عن طريق توصيل الدائرة المتكاملة (القتطرة) L298 إلى الاردوينو ، يمكنك التحكم في محرك التيار المستمر DC.
محرك التيار المستمر ، هو أكثر أنواع المحركات شيوعًا. محركات التيار المستمر لها عادة طرفان ، طرف موجب والآخر سالب . إذا قمت بتوصيل هذين الطرفين مباشرة بالبطارية ، فسيتم دوران المحرك. إذا قمت بتبديل الطرفين ، فسيتم دوران المحرك في الاتجاه المعاكس.
للتحكم في اتجاه دوران محرك DC ، دون تغيير طريقة توصيل الأطراف ، يمكنك استخدام دائرة تسمى H-Bridge. هذه القنطرة عبارة عن دائرة إلكترونية يمكنها قيادة المحرك في كلا الاتجاهين. تُستخدم قنطرة H في العديد من التطبيقات المختلفة ، أحد أكثرها شيوعًا هو التحكم في المحركات في الروبوتات. يطلق عليها قتطرة (جسر) H-لأنها تستخدم أربعة ترانزستورات متصلة بطريقة تشبه "H" .
يمكنك استخدام الترانزستورات المنفصلة لإنشاء هذه الدائرة ، ولكن في هذا التدريب ، سنستخدم الدائرة المتكاملة L298. يمكن للدائرة المتكاملة L298 التحكم في سرعة واتجاه محركات التيار المستمر DC motors ومحركات الخطوة stepper motors ويمكنها التحكم في محركين في وقت واحد. معدل تيارها هو2Aلكل محرك. عند هذه التيارات ، سوف تحتاج إلى استخدام مصارف الحرارة heat sinks .
الشكل أدناه يبين توزيع أطراف الدائرة المتكاملة L298 :

هناك ثلاثة أطراف دخل لكل محرك ، هى Input1 (IN1), Input2 (IN2), Enable1 (EN1) للمحرك Motor1 و Input3, Input4, and Enable2 للمحرك Motor2.
نظرًا لأننا سنتحكم في محرك واحد فقط في هذا التدريب ، فسوف نوصل بين Arduino و IN1 (الطرف 5) و IN2 (الطرف 7) و Enable1 (الطرف6) من الدائرة المتكاملة L298. تعتبر الاطراف 5 و 7 مداخل رقمية ، أي تشغيل ON أو إيقاف OFF ، بينما يحتاج الطرف 6 إلى إشارة معدلة بعرض النبضة (PWM) للتحكم في سرعة المحرك.
يوضح الجدول التالي اتجاه دوران المحرك وفقًا للقيم الرقمية لكل من IN1 و IN2.

يتم توصيل الطرف IN1 من L298 إلى الطرف 8 من Arduino بينما يتم توصيل الطرف IN2 إلى الطرف 9 . هذه الأطراف الرقمية من Arduino تتحكم في اتجاه المحرك. ويتم توصيل الطرف EN A من الدائرة المتكاملة إلى الطرف PWM pin 3 من Arduino. هذا الطرف سوف يتحكم في سرعة المحرك.
لتعيين قيم أطراف الاردوينو 8 و 9 ، سوف نستخدم الدالة digitalWrite() ، ولتعيين قيمة الطرف 3 ، سوف نستخدم الدالة analogWrite() .
الدائرة الكهربية :
البرنامج :
كود:
const int pwm = 3 ; //initializing pin 3 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor
void setup()
{
pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
pinMode(in_2,OUTPUT) ;
}
void loop()
{
//For Clock wise motion , in_1 = High , in_2 = Low
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,LOW) ;
analogWrite(pwm,255) ;
/*setting pwm of the motor to 255
we can change the speed of rotaion
by chaning pwm input but we are only
using arduino so we are using higest
value to driver the motor */
//Clockwise for 3 secs
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
//For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
digitalWrite(in_1,LOW) ;
digitalWrite(in_2,HIGH) ;
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
}
يجب أن يدور المحرك أولاً في اتجاه عقارب الساعة (CW) لمدة 3 ثوانٍ ثم عكس اتجاه عقارب الساعة (CCW) لمدة 3 ثوانٍ.
|