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

عند تدوير المقاومة المتغيرة يتغير مقدار زاوية محرك السيرفو من 0 إلى 180 درجة. سنستخدم المدخل التناظري في الأردوينو لقراءة قيمة المقاومة المتغيرة ثم نربط هذه القيمة بنطاق السيرفو باستخدام معادلة بسيطة. هذا المشروع وسيلة ممتازة لفهم كيفية عمل المدخلات التناظرية وكيفية التحكم في المحركات باستخدامها (في الفيديو عند 01:45).
شرح الأجهزة
لهذا المشروع نحتاج إلى لوحة أردوينو ومحرك سيرفو ومقاوم متغير (بوتنشيوميتر). يعمل المقاوم المتغير كمقاومة متغيرة، ويقدّم خرجًا جهديًا يتوافق مع موضعه. يُقرأ هذا الخرج عبر المدخل التناظري في لوحة الأردوينو، مما يتيح لنا تحديد مدى دوران محرك السيرفو.
محرك السيرفو هو نوع من المحركات يمكن توجيهه إلى زاوية محددة. يتلقى إشارة تحكم تُحدد الموضع المرغوب. يدور المحرك إلى تلك الزاوية اعتمادًا على المدخلات التي يتلقاها من الأردوينو، مما يجعله مفيدًا لتطبيقات متنوعة مثل الروبوتات وأجهزة التحكم عن بُعد.
تفاصيل ورقة البيانات
| الشركة المصنعة | متنوعة |
|---|---|
| رقم القطعة | سيرفو قياسي |
| جهد المنطق/الإدخال/الإخراج | 5 فولت |
| جهد التغذية | 4.8 - 6 فولت |
| تيار الإخراج (لكل قناة) | حتى 1 أمبير |
| تيار الذروة (لكل قناة) | حتى 2 A |
| إرشادات تردد PWM | 50 هرتز |
| عتبات منطقية للإدخال | 0.8 V (منخفض) / 2.0 V (مرتفع) |
| هبوط الجهد / RDS(عند التشغيل) / التشبع | 0.5 فولت |
| الحدود الحرارية | 85 درجة مئوية |
| حزمة | المقاس القياسي |
| ملاحظات / متغيرات | متوفر بأحجام وتصنيفات عزم دوران مختلفة |
- تأكد من أن مصدر الطاقة ضمن الحدود (4.8 - 6 فولت).
- استخدم قيمة مقاومة مناسبة للمقاوم المتغير (10 kΩ موصى بها).
- تحقق من قطبية التوصيلات لتجنب التشغيل العكسي.
- كن حذراً من الحرارة؛ تأكد من أن السرفو ليس محمّلاً أكثر من اللازم.
- اجعل الأسلاك قصيرة لتقليل التداخل.
- استخدم مكثفات فك الارتباط عبر مداخل الطاقة عند الحاجة.
- تحقق من أن المقاوم المتغير متصل بشكل صحيح بالدبوس التماثلي A0.
تعليمات التوصيل الكهربائي

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

أمثلة على الكود وشرح خطوة بخطوة
دعونا نلقي نظرة على الأجزاء الرئيسية من الكود. أولاً، نقوم بتضمين مكتبة Servo وننشئ كائن سيرفو:
#include
Servo myservo; // create servo object to control a servo
يقوم هذا الكود بتهيئة محرك السيرفو ويجهزه للتحكم. الخطوة التالية تتضمن قراءة قيمة المقاومة المتغيرة:
int val = analogRead(potpin); // reads the value of the potentiometer
هنا، تُخزّن القيمة المقروءة من المقاوم المتغير في المتغيرval. ستكون القيمة بين 0 و1023، بما يتوافق مع موضع المقاوم المتغير. ثم نقوم بتحويل هذه القيمة إلى نطاق السيرفو:
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
يقوم هذا السطر بتحويل قيمة المقاوم المتغير إلى مدى مناسب لمحرك السيرفو. أخيرًا، نقوم بضبط السيرفو على الموضع المحسوب:
myservo.write(val); // sets the servo position according to the scaled value
يأمر هذا الأمر محرك السيرفو بالتحرك إلى الزاوية المحددة استنادًا إلى موضع المقاوم المتغير. يمكنك العثور على الكود الكامل المحمّل أسفل المقالة.
عرض توضيحي / ما الذي تتوقعه
عند تشغيل البرنامج، سيؤدي تدوير المقاومة المتغيرة إلى ضبط زاوية محرك السرفو بسلاسة. يجب أن ترى قيم الزاوية تُطبع في المراقب التسلسلي أثناء تدوير المقبض. إذا تصرف السرفو بشكل غير متوقع، فتحقق من التوصيلات، خاصة الوصلات إلى المقاوم المتغير والسرفو (في الفيديو عند 04: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
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri for Robojax.com in Ajax, Ontario, Canada
Watch video for this code at https://youtu.be/X_drE5tLbz0
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
// Servo knob demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// Servo knob demo by Robojax.com
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
Serial.print(val);
Serial.print(" ");
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
// Servo knob demo by Robojax.com
Serial.print(val);
Serial.println();
delay(200); // waits for the servo to get there
}
الأشياء التي قد تحتاجها
-
أمازونمحرك سيرفو على أمازونamzn.to
-
علي إكسبريساشترِ محرك سيرفو SG90 بزاوية 180 أو 360 من علي إكسبريسs.click.aliexpress.com
الموارد والمراجع
-
خارجيمحركات SG90amzn.to
ملفات📁
لا توجد ملفات متاحة.