دائرة التحكم فى دوران محرك السيرفو / servo motor control circuit using arduino
دائرة التحكم فى دوران محرك السيرفو servo motor Positional/Micro Servo بإستخدام لوحة الأردوينو using arduino
مرحبا بكم اصدقائي متابعي مدونة سوفت بيديا في قسم الأردوينو او سلسلة مواضيع الاردوينو في موضوع جديد يخص التحكم بمحرك السيرفو خطوة بخطوة..
وكما تعودنا ان نبدأ دوما مع دارات ومشاريع بسيطة لترسيخ الفهم ثم ننتقل للأعقد منها بالتدريج حسب المجال البرمجي.. وهذا مثال للمشاريع المعقدة وهو جزء واحد من سبعة اجزاء لاكن قابلة للتنفيذ بلوح اردوينو using arduino MEGA ميغا وملحقات اخرى حسب نوع المشروع...
شرح دائرة التحكم فى دوران محرك سيرفو باستخدام الأردوينو
في هذا الموضوع سوف نتطرق إلى أبسط دائرة على الإطلاق للأردوينو arduino للتحكم بواحد فقط من السيرفو موتور او محرك السيرفو او محرك الخطوة، والكود أيضا سيكون بسيط للغاية والهدف كما أسلفنا هو بمعرفة اساسيات العتاد اللازم والكود لتشغيل محرك خطوي واحد ثم لك الحرية لاحقا في تعقيد التصميم وفق ما تراه مناسبا او حسب الدارة أو المشروع الخاص بك ، ففي هذا الموضوع او المشروع سنستخدم ثلاث عناصر فقط أردوينو أونو او ميغا او أيا كان نوعه، مع محرك ميكرو سارفو خطوة بخطوة ، مع بوتونسيو متر او مقاومة متغيرة 250 kΩ Potentiometer..
وكلما أدرنا المقاومة Potentiometer لجهة معينة وبزاوية معينة سيدور محرك السيرفو servo motor Positional/Micro Servo بنفس الحركة والزاوية او بالأصح التحكم في السيرفو موتور عن طريق مقاومة متغيرة Arduino Servo Motor PWM (Arduino) ، قد يسأل أحدهم ما الهدف من هذا المشروع البسيط..
الهدف من المشروع والتطويرات اللاحقة المحتملة له
الهدف من المشروع والتطويرات اللاحقة المحتملة له
الإجابة بسيطة الهدف من هذا المشروع البسيط كما أسلفنا فإنه وكلما أدرنا المقاومة لجهة معينة وبزاوية معينة سيدور محرك السيرفو servo motor بنفس الحركة والزاوية ، ويصلح هذا المشروع كجزء بسيط من مشروع اكبر او منفرد ، منفرد مثل فتح باب ثلاجة بيت ..الخ (لمشروع مدرسي..) او كتحريك يد روبوط بزاوية ما والتحكم بالزاوية اما بالمقاومة المتغيرة Potentiometer او بالكمبيوتر او ببرامج حفظ الحركة وتكرارها باليد الآلية الصناعية كنموذج اولي.. ، وإذا أظفنا محرك ثاني سنحصل على حركة أكثر تعقيدا وثالث سنحصل على ملقط وبإظافة يد روبوطية ثانية سنحصل على شبه روبوط جاهز لأداء بعض المهام البسيطة والتي تصبح ذات فعالية بالتركيز على تفاصيل المشروع الإلكترونية وطباعة الحوامل والاجزاء بتقنية الطباعة الثلاثية الأبعاد وكذالك التركيز على الجانب البرمجي..الخ
طريقة تركيب العناصر أو الدارة
الآن بمخطط التركيب بالأسفل نشاهد محرك السيرفو موتور مع الاردوينو arduino والمقاومة المتغيرة ، وبهذا المخطط المتحرك البسيط نستطيع مشاهدة حركة محرك السيرفو servo motor Positional/Micro Servo بالتوازي مع تغيير زاوية المقاومة المتغيرة والتي تمثل في هذه الحالة ذراع التحكم في المحرك..
ونشاهد اماكن ربط محرك السيرفو موتور والمقاومة المتغيرة Potentiometer بمداخل ومخارج الأردوينو ،حيث نوصل كل من Vcc و Gnd للسيرفو موتور والمقاومة المتغيرة ب 5v و Gnd للأردوينو ، ونوصل مدخرج الإشارة للمقومة المتغيرة والذي هو مدخل للأردوينو بA0 مدخل الأنالوجيك لأخذ القراءات للاردوينو ،ثم نوصل مخرج الأردوينو الديجيتال PWM رقم pin9 بمحرك السيرفو للتحكم في زاوية دورانه..
مخطط التركيب التوضيحي لمحرك السيرفو مع الاردوينو اينو والمقاومة المتغيرة
شاهد المثال التوضيحي التالي.. مخطط التركيب مخطط التركيب التوضيحي لمحرك السيرفو servo motor Positional Micro Servo مع الاردوينو اينو arduino UNO والمقاومة المتغيرة
المكونات والعناصر المستخدمة في دائرة التحكم فى دوران محرك سيرفو
المكونات والعناصر المستخدمة هي:
- محرك السيرفو servo motor
- الاردوينو اينو
- المقاومة المتغيرة Potentiometer
وبالأسفل الجدول يوضح التسميات للعناصر المستخدمة والكمية والاسم ، يمكنك إقتناؤها من الأماكن او المحلات المخصصة لبيع لوازم الأردوينو arduino والإلكترونيات..
Name | Quantity | Component |
---|---|---|
U1 | 1 | Arduino Uno R3 |
Rpot2 | 1 | 250 kΩ Potentiometer |
SERVO1 | 1 | Positional Micro Servo |
الكود البرمجي المستخدم
الكود البرمجي المستخدم بسيط جدا لاكنه فعال جدا ايضا لن تحتاج أكثر منه في هذا المشروع ويمكنك فهمه ثم تطويره لاحقا ليناسب مشروعك، يمكنك نسخه بالأسفل وإلصاقه ببرنامج arduino IDE ثم تحميله على لوحة الأردوينو arduino ليبدأ العمل مباشرة..
#include
Servo my_servo;
int pot_pin = A0;
int val=0;
void setup(){
my_servo.attach(9);
}
void loop(){
val = analogRead(pot_pin);
val = map (val , 0 , 1023 , 0 , 180) ;
my_servo.write(val);
delay(15);
}
int pot_pin = A0;
int val=0;
void setup(){
my_servo.attach(9);
}
void loop(){
val = analogRead(pot_pin);
val = map (val , 0 , 1023 , 0 , 180) ;
my_servo.write(val);
delay(15);
}
شرح الكود البرمجي المستخدم دائرة التحكم فى دوران محرك سيرفو باستخدام الأردوينو
تابع شرح الكود البرمجي المستخدم دائرة التحكم فى دوران محرك سيرفو باستخدام الأردوينو / servo motor control arduino
مجموعة التعاريف..
هنا إظافة مكتبة محرك السيرفو
#include <Servo.h>
Servo my_servo;
A0 هنا تعريف مدخل المقاومة المتغيرة بالأنالوجيك
int pot_pin = A0;
int val=0;
ندخل لقسم void setup
void setup()
{
تعريف مخرج محرك السيرفو موتور الخطوي بمخرج الديجيتال pwm رقم 9
my_servo.attach(9);
}
ندخل لقسم اللوب void loop
void loop()
{
هذا أمر لقرائة قيمة مدخل الأنالوجيك للمقاومة المتغيرة Potentiometer وتخزينها مؤقتا في val التي سبق وعرفناها سابقا واعطيناها قيمة أولية صفرية
val = analogRead(pot_pin);
إعطاء قيمة جديدة لval وفق خريطة تعطيها زاوية معينة من 0 الى 180 درجة حسب القرائة القادمة من المقاومة المتغيرة والتي قد تكون من 0 الى 1023 اي مثلا: إذا كانت القيمة المقروئة في A0 للمقاومة المتغيرة تساوي 1023 فإن القيمة الجديدة التي سيحصل عليها Val هي 180 وهكذا تقل زاوية Val الجديدة بمقدار يتناسب مع قرائة A0 في كل مرة..
val = map (val , 0 , 1023 , 0 , 180) ;
أخيرا إعطاء أمر لمحرك السيرفو لتنفيذ القرائة الأخيرة لVal التي تناسب وضع المقاومة المتغيرة..
my_servo.write(val);
هنا زمن افتراضي قبل إعادة تكرار اللوب مجددا..
delay(15);
}
فيديوهات إظافية دوائر أخرى للتحكم فى دوران محرك سيرفو بإستخدام الأردوينو
التحكم في السيرفو موتور عن طريق مقاومة متغيرة Arduino Servo Motor PWM (Arduino )
طريقة التحكم في السيرفو موتور لاسلكيا عن طريق الموبايل (تطبيق remoteXY + إيثرنت شيلد)
أنواع المحركات الكهربائية ومكونات محرك السيرفو موتور servo motor بالتفصيل
ختامــــــا
إلى هنا نكون قد أكملنا هذا الموضوع البسيط والمفيد في نفس الوقت حول دائرة التحكم فى دوران محرك سيرفو باستخدام الأردوينو / servo motor control arduino المكونات مخطط التركيب والكود البرمجي وشرح لكل خطوة على حدى..
لاننسى أن المشاريع المعقدة تبدأ بمكونات بسيطة وفهم جيد لطريقة التركيب البرمجة والعمل، وبالمثابرة وكثرة الإطلاع والتطبيق خاصة سيتسنى لنا في كل مرة إتقان مهارات جديدة تؤهلنا في آخر المطاف للقيام بمعظم المشاريع مهما كانت معقدة وتخطيطها سلفا والقيام بتنفيذها دون إهدار للمعدات والوقت ونكون أكثر إفادة وإنتاجية لأنفسنا (مشاريع منزلية خاصة بنا للقيام بأمور بسيطة او معقدة نحتاجها لتسهيل حياتنا) أو لغيرنا (والمجال هنا مفتوح..).
أرجوا ان ينال هذا الموضوع افادتكم وانتظرونا في المزيد من المواضيع و الدروس والشروحات المكتوبة والمصورة و المفيدة في الأردوينو arduino , لاتنسوا مشاركة الموضوع مع أصدقائكم.. بالتوفيق للجميع..
تقبلو تحياتي.
والسلام عليكم ورحمة الله تعالى وبركاته
اللهم صلي وسلم على نبينا محمد
(صلى الله عليه وسلم)
لمزيد من المواضيع والدروس يمكنك الإنتقال للروابط بالأسفل:
ليصلك جديدنا تابعنا على صفحاتنا الاجتماعية: الفيسبوك, التويتر ,tumblr, pinterest, linkedin, instagram