السبت، 31 يناير، 2015

دارة قيادة المحرك mc33886

mc33886 Motor Driver Module



لعمل تحكم بالمحركات الكهربائية , نحتاج دائماً لدارة تحكم بالمحرك Motor driver وظيفتها تأمين تيار كافي لعمل المحرك من مصدر التغذية , و عزل لدارة التحكم عن دارة القدرة "المحرك " .
اختيار دارة القيادة يعتمد بالأساس على القيمة العظمي للجهد و التيار التي تستطيع دارة التحكم احتمالها بالدرجة الأولى .



عرضت قبلاً عدة طرق للتحكم بالمحركات الكهربائية مثل استخدام دارة القيادة L298 , L293 

لكن التيار الأعظمي الذي تستطيع دارة القيادة L298 تحمله هو 2 أمبير كتيار حمل Continuous Current في حالات تكون هناك بعض المحركات ذات تيارات أعلى من ذلك , عندها سنحتاج دوائر تغذية أخرى .

افضل هذه الدوائر هي MC33886 وهي بالأساس دارة متكاملة تستطيع قيادة محرك كهربائي واحد .



تتميز هذه الدارة بالخصائص التالية :
  1. جهد حمل عالي من 5 - 40 فولت , اي يمكن تشغيل اي محرك يعمل على جهد بين 5 - 40 فولت 
  2. امكانية التحكم بها بواسطة PWM Freq بتردد حتى 10كيلو هيرتز .
  3. تعمل عند درجات حرارة من -40 س لغاية 125 س 
  4. تيار حمل حتى 5 امبير . 

النشرة الفنية للقطعه يمكنك تحميلها من هنا 


سنقوم خلال هذه التجربة بالتحكم بمحركين كهربائيين بواسطة دارة القيادة mc33886  و الأردوينو .

في البداية , سنحتاج للقطع التاليه :


1)بطاقة أردوينو arduino Board
2)دارة القيادة mc33886 
3)محرك كهربائي عدد 2 
4)مصدر تغذية "بطارية , Power source "
5) اسلاك توصيل 
6) مفك " لتثبيت اسلاك المحرك بدارة القيادة 


التوصيل :



البرنامج : 

هذا برنامج بسيط يمكنك من خلاله التحكم باتجاه الحركة و ايضاً بالسرعة .

/*
MC33886 Motor driver Module .
demo Code to control the speed of two motor
Using MC33886 Motor driver Module :
Conection : 
 MC33886    Arduino Board Uno/Nano/Mega/DUE
 5V            5V
 IN1           D10
 IN2           D9
 IN3           D6
 IN4           D5
 GND           GND 
 
 Code wrote By Mohannad Rawashdeh
 http://www.genotronex.com
*/

#define forward  1 
#define backward 0
#define IN1      10
#define IN2      9
#define IN3      6
#define IN4      5
byte Speed = 128 ; //of 255 
//.....................
void Forward(int pin1 , int pin2 , byte Sp=128)
{
 analogWrite(pin1,Sp);
 analogWrite(pin2,0);
}
void Backward(int pin1 , int pin2 , byte Sp=128)
{
 analogWrite(pin2,Sp);
 analogWrite(pin1,0);
}
void Stop(int pin1,int pin2){
 analogWrite(pin2,0);
 analogWrite(pin1,0);
  
}

//.....................

void setup() {
  // put your setup code here, to run once:
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
delay(1000);
//move Two Motor forward , speed increasing to full speed
for( byte i = 0 ; i<255 ; i++ ){
  Forward(IN1,IN2,i);
  Forward(IN3,IN4,i);
 delay(20);
}
delay(1000);//wait for 2 second 
//move Two Motor forward , speed decreasing until Stop
for( byte i = 255 ; i>0 ; i-- ){
  Forward(IN1,IN2,i);
  Forward(IN3,IN4,i);
 delay(20);
}
//stop 
Stop(IN1,IN2);
Stop(IN3,IN4);

//move Two Motor Backward , speed increasing to full speed
for( byte i = 0 ; i<255 ; i++){
  Backward(IN1,IN2,i);
  Backward(IN3,IN4,i);
 delay(20);
}
//move Two Motor Backward , speed decreasing until stop
for( byte i = 255 ; i>0 ; i-- ){
  Backward(IN1,IN2,i);
  Backward(IN3,IN4,i);
 delay(20);
}
//stop 
Stop(IN1,IN2);
Stop(IN3,IN4);

}

void loop() {
  
}




كشرح بسيط , يمكن استدعاء امر الامام او الخلف و تعريف المدخلين الخاصين بكل محرك IN1,IN2,IN3,IN4 و من ثم تحديد السرعة الخاصة بالمحرك كقيمة بين 0 و 255 .

اتمنى ان يكون الموضوع مفيداً للجميع , تحياتي 



5 التعليقات :

  1. جزاك الله خير

    ممكن تشرح لنا عمل Ethernet shield وطريقه توصيله

    ردحذف
    الردود
    1. سنحاول على قدر المستطاع .

      حذف
  2. شكرا عالشرح ...ممكن شرح لل 4WD وكيفية التحكم بالموتور سواء mc88663 او بال L293D ?

    ردحذف
    الردود
    1. متى ما عرفت كيفية التحكم بالمحرك للامام و الخلف ستستطيع التحكم بأي عدد من المحركات .

      حذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.