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


لإعداد هذا، ستحتاج إلى توصيل المكونات كما يلي:
قم بتوصيل الدبوس الأوسط لمقياس الجهد (الممسحة) بدبوس الأنالوج في الأردوينو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- عرض المشروع المكتمل
هذا الدليل هو جزء من: محركات سيرفو
- التحكم في محرك سيرفو بأزرار ضغط باستخدام أردوينو
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- التحكم في محرك سيرفو باستخدام مقاوم متغير (بوتنشيوميتر) مع أردوينو
- التحكم في محرك سيرفو بواسطة بوتنشيوميتر وشاشة LCD1602 باستخدام أردوينو
- تحكم في محركات سيرفو باستخدام جهاز تحكم عن بُعد بالأشعة تحت الحمراء مع أردوينو
- التحكم في موضع السيرفو بإيماءات اليد لاردوينو
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- كود أردوينو وفيديو لمتحكم السيرفو PCA9685 ذو 16 قناة و12 بت V1
- Build an Arduino Servo Toggle Switch with a Push Button
/*
* المصدر الأصلي: أردوينو 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 مللي ثانية لبلوغ السيرفو الموضع
}
}
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
لا توجد ملفات متاحة.