أفضل شرح للسيرفو وربطه ببطاقة الأردوينو مع الكود البرمجي
موضوع محركات السيرفو من المواضيع المتكررة التي طالما يسأل عنها المهتمين بعلوم الالكترونيات و الروبوتات , و لذلك احببت عرض سلسلة محركات السيرفو و كيفية التحكم بها ضمن بيئة أردوينو البرمجية Arduino IDE .
في البداية ما هو محرك السيرفو ؟
محرك السيرفو هو عبارة عن محرك يأتي مع علبة تروس Gear و ناقل حركة Shaft يعطي الحركة عزماً أكبر و دقة كبيرة , و يستطيع هذا المحرك الألتفاف 180درجة و في بعض الأنواع 360 درجة .
سأتكلم في الجزء الأول عن طريقة التحكم في المحرك ذو ال180 درجة .
طريقة التحكم :
يتكون محرك السيرفو داخلياً من دارة تحكم "تكون في الغالب مايكروكنترولر " , و عندما نعطي المحرك نبضات Pulses بثابت زمني معين يدور المحرك للزاوية حسب هذا الثابت الزمني .
في كل نوع يختلف الثابت الزمني من محرك إلى الآخر حسب جهة التصنيع و النشرة الفنية التي تأتي مع محرك السيرفو .
في بيئة أردوينو البرمجية هناك مكتبة تسمى Servo Library مثبتة في البرنامج , هذه المكتبة تعطينا الإمكانية للتحكم في أغلب محركات السيرفو ذو ال180درجة , و مع نهاية هذه التدوينة ستكون لديك القدرة على استخدام اوامر هذه المكتبة عن طريق الأمثلة العملية .
ما ستحتاجه لتنفيذ هذه التجربة :
1)بطاقة أردوينو.
2)محرك سيرفو .
3)اسلاك توصيل.
4)مصدر تغذية خارجي" Power supply,battery "
طريقة التوصيل :
تذكر إذا كان محرك السيرفو الذي تملكه كبير أو يحتاج لتيار عالي , يجب توصيله مع مصدر جهد خارجي كالبطارية "و هو أفضل و أكثر أماناً
لمحرك السيرفو الذي نستخدمه 3 اسلاك و هي :
1) مدخل تغذية Vcc "و يكون بين 4.8 - 6 فولت"
2) مدخل الأرضي Gnd
3) مدخل التحكم Data و الذي نرسل الأوامر عبره لمحرك السيرفو .
بعد هذا سنبدأ بالبرمجة :
هذا البرنامج البسيط يقوم بتدوير المحرك بمقدار 9 درجات كل مرة بثابت زمني 200ملي ثانية مع و عكس عقارب الساعة
بعد هذا سنبدأ بالبرمجة :
هذا البرنامج البسيط يقوم بتدوير المحرك بمقدار 9 درجات كل مرة بثابت زمني 200ملي ثانية مع و عكس عقارب الساعة
// created by Mohannad Rawashdeh
//for Genotronex blog
//connect Data pin of servo with D9
#include <Servo.h>
Servo S3003; //Define the name of Servo object
int t=200;
int Servo_angle=0;// set the angle of servo
void setup(){
S3003.attach(9);//connect servo to Pin D9
Serial.begin (9600);
}
void loop(){
for(Servo_angle=0;Servo_angle<180;Servo_angle+=9) {
S3003.write(Servo_angle);
delay(t);
}
for(Servo_angle=180;Servo_angle>0;Servo_angle-=9) {
S3003.write(Servo_angle);
delay(t);
}
}
لنتذكر أمراً مهماً جداً هو أن السيرفو يحتاج لنبضات دقيقة للتحكم به , و ليست كل مداخل المتحكم مؤهلة للتعامل مع محرك السيرفو .
يمكنك استخدام أي مدخل من المداخل التناظرية Analoge (A0-A5) و استخدام المداخل الرقمية التي تدعم التعديل النبضي PWM و هي (D3,D5,D6,D9,D10,D11) " في بطاقات الأردوينو التي تستخدم المتحكم ATMEGA328 مثل الUNO "
حتى تبدأ استخدام أي مكتبة يجب عليك وضع هذا الكود
#include<lib.h>
بالنسبة لمكتبة السيرفو نحمّل المكتبة عن طريق الكود
#include <Servo.h>
الآن نستطيع التعامل مع اوامر هذه المكتبة .
ثم يجب أن ننشئ اسماً لمحرك السيرفو لنتعامل معاه في البرنامج , يكتب الأمر على الصورة
Servo Name;
Name: هو اي اسم تختاره للتعامل مع محرك السيرفو
لكي نُعرّف المدخل pin الذي اوصلنا محرك السيرفو معاه , نكتب الكود :
Name.attach(Pin Number);
Name: هو اسم محرك السيرفو الذي وضعناه في بداية البرنامج
Pin number: رقم المدخل الموصول معه محرك السيرفو
لكي نرسل أمر للمحرك بالدوران , هذا الأمر بسيط و يكون بالشكل التالي :
Name.write(val)
Name: هو اسم محرك السيرفو الذي وضعناه في بداية البرنامج
val : قيمة صحيحة محصورة بين 0 – 180
لنتذكر أمراً مهماً جداً هو أن السيرفو يحتاج لنبضات دقيقة للتحكم به , و ليست كل مداخل المتحكم مؤهلة للتعامل مع محرك السيرفو .
يمكنك استخدام أي مدخل من المداخل التناظرية Analoge (A0-A5) و استخدام المداخل الرقمية التي تدعم التعديل النبضي PWM و هي (D3,D5,D6,D9,D10,D11) " في بطاقات الأردوينو التي تستخدم المتحكم ATMEGA328 مثل الUNO "
أفضل شرح للسيرفو وربطه ببطاقة الأردوينو مع الكود البرمجي
Reviewed by Génie Electrique
on
10:51 ص
Rating:
ليست هناك تعليقات: