كود البحث

تحكم في محرك سيرفو باستخدام مقاومة متغيرة

تحكم في محرك سيرفو باستخدام مقاومة متغيرة

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

لتحقيق ذلك، سنستخدم لوحة أردوينو، ومحرك سيرفو، ومقاوم متغير. يعمل المقاوم المتغير كمقاوم متغير، موفراً مدخلاً تناظرياً إلى الأردوينو، الذي سيحدد بعد ذلك موضع محرك السيرفو وفقاً لذلك. هذا المشروع ليس ممتعاً فحسب، بل تعليمياً أيضاً، حيث يوضح مفاهيم رئيسية في الإلكترونيات والبرمجة. للحصول على شرح أكثر تفصيلاً، تأكد من مشاهدة الفيديو (في الفيديو عند 00:00).

شرح الأجهزة

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

يعمل محرك السيرفو عن طريق تلقي إشارة PWM (تعديل عرض النبضة) التي تشير إلى الموضع المطلوب. يقوم المتغير، عند تدويره، بتغيير مقاومته، والتي يتم قراءتها بواسطة الأردوينو كجهد تناظري. يعمل محرك السيرفو بجهد 5 فولت. لا يعمل بجهد 3.3 فولت. ثم يتم تحويل هذا الجهد إلى نطاق حركة محرك السيرفو، مما يسمح بحركة سلسة من 0 درجة إلى 180 درجة.

تفاصيل ورقة البيانات لمحرك السيرفو SG90

المصنعبارالاكس
رقم الجزءSG90
جهد المنطق/المدخلات والمخرجات5 فولت
جهد الإمداد٤.٨-٦ ف
تيار الخرج (لكل قناة)~500 مللي أمبير
التيار الذروي (لكل قناة)١ أ
إرشادات تردد PWM50 هرتز
عتبات منطق الإدخال0.5 فولت (منخفض)، 2.5 فولت (مرتفع)
انخفاض الجهد / Rدي إس (أون)/ تشبع0.5 فولت عند 500 مللي أمبير
الحدود الحرارية0°C إلى 60°C
حزمةسيرفو قياسي 9 جرام
ملاحظات / متغيراتيستخدم بشكل شائع في تطبيقات التحكم عن بعد

  • تأكد من أن السيرفو لا يتجاوز تصنيفه الأقصى للتيار.
  • استخدم مبرد حرارة إذا كان السيرفو يعمل باستمرار تحت أحمال عالية.
  • قم بتوصيل المتغير إلى دبوس تناظري للحصول على قراءات دقيقة.
  • كن حذرًا من توقيت إشارة PWM للتحكم في السيرفو.
  • تحقق من نطاق حركة السيرفو لتجنب العوائق المادية.

تعليمات التوصيل

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

لإعداد هذا، ستحتاج إلى توصيل المكونات كما يلي:

قم بتوصيل الدبوس الأوسط لمقياس الجهد (الممسحة) بدبوس الأنالوج في الأردوينوA0يجب توصيل الدبوسين الآخرين من المتغير إلى5VوGNDعلى الأردوينو. بالنسبة لمحرك السيرفو، قم بتوصيل السلك الأحمر إلى5Vالسلك الأسود إلىGND، والسلك الأصفر أو الأبيض إلى الدبوس الرقمي9على الأردوينو. يتيح هذا الترتيب للمقاوم المتغير تقديم مدخل تناظري إلى الأردوينو، الذي سيتحكم في موضع محرك السيرفو بناءً على تلك المدخلات.

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

أمثلة الشيفرة وشرح الخطوات

فيما يلي مقتطف من الشيفرة التي تقوم بتهيئة السيرفو وقراءة قيمة المقاومة المتغيرة:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

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

في هذا الكود، نقوم بتضمين مكتبة السيرفو وننشئ كائن سيرفو يسمىmyservo. يتم توصيل السيرفو بالدبوس9، مما يتيح لنا التحكم فيه باستخدام هذه الدبوس.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

في دالة الحلقة، نقرأ قيمة المقاومة المتغيرة من الدبوسA0وخرائطه من نطاقه (0-1023) إلى نطاق السيرفو (0-180 درجة). الـmyservo.write(pos)ثم يقوم الأمر بتحريك السيرفو إلى الموضع المطلوب بناءً على دوران المقاومة المتغيرة.

عرض / ما يمكن توقعه

عند تشغيل هذا البرنامج، يجب أن ترى محرك السيرفو يتحرك بسلاسة من 0 إلى 180 درجة أثناء دورانك لمقاومة الجهد. إذا لم يتحرك السيرفو كما هو متوقع، تحقق من الأسلاك وتأكد من أن مقاومة الجهد تعمل بشكل صحيح. بالإضافة إلى ذلك، تأكد من أن الأردوينو مزود بالطاقة بشكل صحيح وأن الكود تم تحميله بدون أخطاء. يمكنك أن تتوقع رؤية السيرفو يعكس موضع مقاومة الجهد في الوقت الحقيقي (في الفيديو عند 02:00).

طوابع زمنية للفيديو

  • 00:00- مقدمة عن المشروع
  • 01:30- شرح إعداد الأجهزة
  • ٠٣:٤٥- تعليمات التوصيل
  • 05:00- استعراض الشيفرة
  • 07:30- عرض المشروع المكتمل

الصور

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
اللغة: C++
/*
 * المصدر الأصلي: أردوينو IDE  
 * مشروع أردوينو: التحكم في موضع السيرفو  
 * يتم استخدام هذا الكود مع فيديو تعليمي لموقع Robojax.com  
 * نُشر في 24 أبريل 2017، من أجاكس، أونتاريو، كندا.  
 * كتب/حرر بواسطة أحمد شمشيري  
 * شاهد الفيديو على يوتيوب: https://youtu.be/kZ9b31gVemc  
 * عرض صفحة الدروس لهذا الكود https://robojax.com/RJT8  
 * التحكم في موضع السيرفو باستخدام مقاومة متغيرة (مقاوم متغير)
 */
#include <Servo.h>

Servo myservo; // إنشاء كائن السيرفو للتحكم في السيرفو
 // يمكن إنشاء اثني عشر كائن سيرفو على معظم اللوحات.

int pos = 0; // متغير لتخزين موضع السيرفو

void setup() {
  myservo.attach(9); // يوصل السيرفو على الدبوس 9 إلى كائن السيرفو
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // يذهب من 0 درجة إلى 180 درجة
 // بخطوات قدرها درجة واحدة
    myservo.write(pos); // قل للعبة servo أن تذهب إلى الوضع الموجود في المتغير 'pos'
    delay(15); // ينتظر 15 مللي ثانية لبلوغ السيرفو الموضع
  }
  for (pos = 180; pos >= 0; pos -= 1) { // يذهب من 180 درجة إلى 0 درجة
    myservo.write(pos); // قل للعبة servo أن تذهب إلى الوضع الموجود في المتغير 'pos'
    delay(15); // ينتظر 15 مللي ثانية لبلوغ السيرفو الموضع
  }
}

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.