مــا نحــنُ إلا طُـــلاب عــلمِ نسعـــى لنشـــر الرحمـــة مــن خــلال العــلـــم ----- مطلوب مدرس - مدرب لديه خبره في الإلكترونيات التفاعلية و الأردوينو، راسلنا على رسائل الموقع
image

طريقة برمجة محركات السيرفو بالأردوينو

في هذا الدرس سوف نتعلم طريقتين للتحكم في محركات السيرفو عن طريق مكتبة الـ Servo، في الطريقة الأولى سنتعرف على طريقة التحكم في السيرفو بواسطة مقاومة متغيرة بينما في الطريقة الثانية سنتعلم كيف يمكننا تحريك السيرفو بزاوية 180 درجة لليمين و لليسار.

العناصر الإلكترونية المطلوبة:

  • لوحـة الأردوينـو
  • محرك سيرفـو
  • مقاومـة متغيرة 10 كيلو أوم
  • أسلاك توصيل
  • مكثفـات
  • مصدر طاقـة

متطلبات الطاقـة للمحركات السيرفو:

تختلف متطلبات الطاقة للسيرفو اعتمادًا على الحجم والحمل الذي يقع على المحرك. يتطلب محرك سيرفو شائع مثل Feetech Mini Servo Motor ما بين 4.8 - 6 فولت عند 5 - 6 مللي أمبير في وضع الخمول. لا يتطلب الأمر الكثير من الطاقة للوقوف ساكناً. ولكن بمجرد أن يبدأ المحرك في التحرك، فإنه يبدأ في استخدام المزيد من الطاقة، ويحصل على هذه الطاقة عن طريق سحب المزيد من التيار من مصدر الطاقة.

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

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

  • جهـد التشغيل Operating voltage range
  • تيار الخمـول Idle Current
  • تيار التشغيل Runnig Current
  • تيار الحمـل Stall Current

لتشغيل سيرفو 4.8 - 6 فولت، يمكنك استخدام محول تيار متردد 5 فولت 1 أمبير، وقطع الكابل، وتوصيل الأسلاك بالسيرفـو باستخدام على سبيل المثال. لوحـة التجارب.

إذا كان مشروعك يحتاج إلى التحرك بحرية دون توصيله بمنفذ طاقة، فيمكنك أيضًا اختيار البطاريات لتشغيل السيرفو. إذا كنت بحاجة إلى 5 فولت بالضبط، فيمكنك استخدام بطاريتين Li-Ion 18650 مع محول خافض للجهد Step Down Converter. هناك حاجة إلى المحـول الخافض لأن بطاريات 18650 Li-Ion ستمنحك حوالي 7.4 فولت. يعتمد الحد الأقصى للتيار على البطارية المحددة ولكن معظمها مصمم لإخراج أعلى من 1 أمبير وهو ما يكفي لتشغيل محركات السيرفو الصغيرة.

 

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

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

تحتوي محركات السيرفو على ثلاثة أسلاك: الطاقة والأرضي والإشارة. عادةً ما يكون سلك الطاقة باللون الأحمر، ويجب توصيله بالقطب الموجب (+) لمصدر الطاقة لديك. عادة ما يكون السلك الأرضي أسود أو بني ويجب توصيله بالقطب السالب (-) لمصدر الطاقة. عادةً ما يكون طرف الإشارة أصفر أو برتقالي ويجب توصيله بمنفذ PWM الموجود على اللوحة. في هذه الأمثلة، هوالمنفذ رقـم 9.

 

دائرة المقاومــة المتغيرة

قم بتوصيل المقاومـة المتغيرة Potentiometer بحيث يتم توصيل طرفيها الخارجيين بالطاقة (+5 فولت) والأرضي، ويكون الطرف الأوسط متصلاً بـ A0 على اللوحة. ثم قم بتوصيل محرك السيرفو كما هو موضح في الدائرة التالية.

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

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}

دائرة تحريك السيرفو 180 درجة

قم بتوصيل محرك سيرفو كما هو موضح في الدائرة التالية.

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

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

المخترع المجنـون

مدون و كاتب محتوى تكنولوجي و متخصص في علوم الإلكترونيات

التعليقات

سجل الدخول لتترك تعليق

نقوم بالتبرع بـ 5 % من قيمـة المنتجات للأعمال الخيرية

تـواصـل معنـا

الطائــف - المملكــة العربيــة السعــوديـة

المـوقـع مـوثـق من

المختــرع المجنــون © جميـــع الحقــوق محفوظــة