التحكم في محرك سيرفو بأزرار ضغط باستخدام أردوينو

التحكم في محرك سيرفو بأزرار ضغط باستخدام أردوينو

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

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

شرح الأجهزة

لهذا المشروع ستحتاج إلى لوحة أردوينو، محرك السيرفو، وزرّان للضغط. محرك السيرفو مسؤول عن الحركة، بينما تعمل أزرار الضغط كمدخلات للتحكم في اتجاه تلك الحركة. تعالج لوحة أردوينو هذه المدخلات وتُرسل الإشارات المناسبة إلى محرك السيرفو.

يعمل محرك السيرفو بناءً على إشارات تعديل عرض النبضة (PWM). عن طريق إرسال نبضات بعروض مختلفة، يمكنك التحكم في زاوية محرك السيرفو. ستتم توصيل أزرار الضغط بدبابيس الإدخال الرقمية على لوحة Arduino، وسنستخدم مقاومات سحب داخلية (pull-up) لتبسيط التوصيل.

تفاصيل ورقة البيانات

المصنّعمتنوع
رقم القطعةSG90
جهد المنطق/الإدخال والإخراج5 فولت
جهد التغذية4.8-6 فولت
تيار الإخراج (لكل قناة)1.5 A كحد أقصى
التيار الأقصى (لكل قناة)2.5 A كحد أقصى
إرشادات تردد تعديل عرض النبضة50 هرتز
عتبات منطق الإدخال0.3 فولتنسخةإلى 0.7 فولتنسخة
هبوط الجهد / Rمقاومة التصريف-المصدر في حالة التشغيل/ التشبع0.4 فولت
الحدود الحرارية85 درجة مئوية
حزمةبلاستيك
ملاحظات / تنويعاتدوران قياسي بزاوية 180°

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

إرشادات التوصيل الكهربائي

Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons

لتوصيل المكونات، ابدأ بتوصيل محرك السرفو. قم بتوصيل السلك الأحمر للمحرك بدبوس 5V في لوحة الأردوينو، والسلك الأسود بدبوس GND، وسلك إشارة أصفر أو أبيض بدبوس 9 في لوحة الأردوينو. سيتحكم هذا الدبوس في موضع السرفو.

بعد ذلك، قم بتوصيل أسلاك أزرار الضغط. وصل أحد طرفي الزر الأيمن إلى الدبوس 2 والطرف الآخر إلى الأرضي. بالنسبة للزر الأيسر، وصل أحد طرفيه إلى الدبوس 12 والطرف الآخر أيضًا إلى الأرضي. هذا الإعداد يسمح لمقاومات السحب للأعلى الداخلية بالحفاظ على الدبابيس في مستوى عالٍ عندما لا تُضغط الأزرار.

أمثلة على الكود ودليل خطوة بخطوة

لنبدأ بالكود الخاص بالتحكم في السيرفو باستخدام زر ضغط واحد. يقوم الكود بتهيئة كائن السيرفو وتعيين زاوية مبدئية. فيما يلي مقتطف قصير:

int angle = 90;    // initial angle for servo
int angleStep = 10; // step size for movement

في هذا المقتطف،angleيمثل الموضع الحالي للسيرفو، بينماangleStepيحدد مقدار تحرك السيرفو مع كل ضغطة زر. هذا الكود أساسي لتتبع موضع السيرفو.

بعد ذلك، لدينا دالة الإعداد حيث نربط السيرفو ونهيئ دبابيس الإدخال:

void setup() {
  Serial.begin(9600);          // setup serial
  myservo.attach(9);  // attaches the servo on pin 9
  pinMode(2, INPUT_PULLUP); // configure button pin
}

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

أخيرًا، نلقي نظرة على دالة الحلقة التي تتعامل مع ضغط الزر:

while(digitalRead(2) == LOW) {
  angle = angle + angleStep; // increment angle
  myservo.write(angle); // move servo
}

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

عرض توضيحي / ما الذي تتوقعه

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

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

الصور

تحكم في السيرفو باستخدام زر ضغط واحد مع أردوينو
تحكم في السيرفو باستخدام زر ضغط واحد مع أردوينو
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons
98-Control a servo with a single push button using Arduino
اللغة: C++
99-Control a servo with two push buttons using Arduino
اللغة: C++
تم النسخ!

الأشياء التي قد تحتاجها

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

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

ملفات📁

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