ربط محرك استيبر 5 فولت مع الاردوينو والتحكم به 1

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

مقدمــــــة عن المشروع

تحية طيبة للجميع !!!!

الحديث اليوم عن الموتور ولكن نواع محدد من أنواع الموتور  وهو استيبر موتور “Stepper Motor” هو نوع من انواع ال DC موتور  ولكن يختلف  عنه  في أن له  عزم دوران كبير ، غير انه مضبوط الخطوة و دقيق جدا ، من اهم استخدامات ال stepper Motorا نه يستخدم في ماكنات  ال cnc و ال 3D printer . ولكنه يعاب في صعوبة التعامل مع المايكروكنترول . غير انه يختلف من استيبر موتور لأخر .

بعد تحميل الكود البرمجي للمشروع ستلاحظ حركة استيبر موتور حركة خطية بسيطة ولكن من خلال الكود يمكنك التحكم في عدد الخطوات وسرعتها .

والان هيااا لنبدأ …..

  1. اردوينو أونو مع كابل USB
  2. محرك استيبر وسائق محرك استيبر
  3. عدد 10 أسلاك التوصيل ذكر الي أنثي
  4. لوحة تجارب صفيرة
  5. مزود الطاقة 5 فولت

طريقة العمل والتوصيل

stepper-28byj48-arduino-wiring-768x460

يتم ربط المكونات وفقا للمخطط أعلاه . ويفضل أستخدام نفس الدرايفر المرفقة في المخطط أو الواضحة من خلال الصورة البارزة للمشروع  , ولكن في حال عدم توفرها لا بأس باستخدام الدرايفر ULN2003 بنفس طريقة الربط مع الاردوينو ومع الموتور .

لتحميل الداتاشيت للأستيبرموتو أضغك هنـــــــــا .

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكـــــــــود البرمجي

لتحميل الكود البرمجي اضغط هنا
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;
void setup()
{
Serial.begin(115200);
pinMode(IN1, OUTPUT); 
pinMode(IN2, OUTPUT); 
pinMode(IN3, OUTPUT); 
pinMode(IN4, OUTPUT); 
// delay(1000);

}
void loop()
{
  while(steps_left>0){
  currentMillis = micros();
  if(currentMillis-last_time>=1000){
  stepper(1); 
  time=time+micros()-last_time;
  last_time=micros();
  steps_left--;
  }
  }
   Serial.println(time);
  Serial.println("Wait...!");
  delay(2000);
  Direction=!Direction;
  steps_left=4095;
}

void stepper(int xw){
  for (int x=0;x<xw;x++){
switch(Steps){
   case 0:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   case 1:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, HIGH);
   break; 
   case 2:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 3:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 4:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 5:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
     case 6:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 7:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   default:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
}
SetDirection();
}
} 
void SetDirection(){
if(Direction==1){ Steps++;}
if(Direction==0){ Steps--; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
}

أنتهت !!!

One Comment

  1. السلام عليكم استاذ
    انا اريد التحكم في محركين خطوين بواسطة الاردوينو والشيلد l293d هل يوجد عندك برنامج للتشغيل

اترك تعليقاً



لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *