الدرس التاسع : محرك السيرفو

وضاح العونيمنذ 8 سنوات

السلام عليكم ورحمة الله وبركاته

 

الدرس التاسع : محرك السيرفو 

Untitled-3.jpg

 

نبذة عن الدرس :

من خلال هذا الدرس سوف نتعرف على محرك السيرفو و كيفية التحكم بإتجاه المحرك .

للمحرك عدة أنواع وتختلف من ناحية الحجم والقوة وأيضا درجة الدوران التي تنحصر بين نوعين دوران بمقدار 180 درجة (يستطيع المحرك الدوران لنصف دائرة فقط ) و دوران بمقدار 360 درجة (يستطيع المحرك الدوران بشكل دائرة كاملة).

وفي هذا الدرس تم استخدام النوع الاول والذي يمكنه الدوارن بمقدار 180 درجة .

 

متطلبات المشروع :

أردوينو أونو

أسلاك توصيل

لوحة تجارب

محرك سيرفو (Servo motor)

 

استخدامات محرك السيرفو :

FUPGRJOHU77OQJQ.MEDIUM.jpg

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

وأيضا يستخدم في الروبوت و غالبا ما يمثل المفاصل للروبوت .

 

 الدائرة الكهربائية  :

 

الدائرة الكهربائية.PNG

 

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


#include <Servo.h>
Servo myservo; 
int pos = 0;  
void setup() {
  myservo.attach(4); 
}
void loop() {
  for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos);             
    delay(15);                       }
  for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos);              
    delay(15);                       
  }
}

هذه المكتبة موجودة تلقائيا في برنامج Arduino IDE لا تحتاج إلى إضافة .


int pos = 0; 

يمثل هذا المتغير قيمة زاوية دوران المحرك .


myservo.attach(4);

دالة لتعريف المنفذ المتصل مع محرك السيرفو وهنا نرى إن المنفذ المتصل هو المنفذ الرابع.

 


  for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos);             
    delay(15);                       
    }
    
  for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos);              
    delay(15);                       
  }

 دالة  for  وظيفتها هو تغير قيمة زواية الدوران بعد 15 ملي ثانية


  for (pos = 0; pos <= 180; pos += 1) { 
    // in steps of 1 degree
    myservo.write(pos);             
    delay(15);                      
  }

في هذه الدالة تتغير الزواية من 0 وحتى 180 درجة بمقدار درجة واحدة كل 15 ملي ثانية .

 


 myservo.write(pos);  

دالة تحتوي على قيمة الزواية تقوم بإرسال قيمة الزواية إلى المحرك .


 for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos);              
    delay(15);                       
  }

أما هنا فهي تتغير الزواية من 180 إلى 0 درجة عكس الدالة الاولى بمقدار درجة واحدة كل 15 مل ثانية .

 

حل تحدي السابق :

التحدي مذكور في هذا المقال

https://3alam.pro/articles/microcontroller/waduino-series-temperature-humidity-sensor/

يمكنك تحميل حل التحدي من هنا :

waduino_4.ino

 

تحدي بسيط :

أجعل المحرك يتسقبل قيمة الزاوية من نافذة المراقب التسلسلي و يقوم أيضا برجوع إلى الزاوية الاصلية .

كلمات دليلية:
1
إعجاب
14377
مشاهدات
0
مشاركة
2
متابع
متميز
محتوى رهيب

التعليقات (1)

سليمان:

تم لكن الكود هذا مانجح يمكن علشانه قديم ؟   

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !