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

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

دعونا نفكك الروابط، كما هو موضح في الفيديو (في الفيديو عند 02:23). أولاً، قم بإعداد القضبان الخاصة بالطاقة: قم بتوصيل الأردوينو الخاص بك5 فولتالصقها بالسكة الموجبة للوحة الدوائر الإلكترونيةGNDقم بتوصيل السلك بالسكة السالبة. هذا يمنحك وصولًا سهلاً إلى الطاقة لجميع مكوناتك.
مقاومات متغيرةيعمل كل بوتنشيومتر كقسم جهد. قم بربط الدبوس الأيمن لكل بوتنشيومتر بـ5فالسكة والدبوس الأيسر إلىجي.إن.دي.سكة حديد. الدبوس الأوسط هو "الممسحة" ويوفر جهدًا متغيرًا. قم بتوصيل الدبوس الأوسط للموصل الأول إلى المدخل التناظريA0، ودبوس المنتصف في الثاني إلىA1(في الفيديو في 03:22).
محركات السيرفو:لكل سيرفو ثلاثة أسلاك. قم بتوصيل السلك ذو اللون الداكن (عادةً أسود أو بني) بـGNDسكة حديد. قم بتوصيل السلك الأوسط (عادةً ما يكون أحمر) بـ5 فولتسكة. أخيرًا، قم بتوصيل سلك الإشارة (عادةً باللون البرتقالي أو الأصفر) إلى أحد الأرجل المدعومة بتقنية PWM على الأردوينو. سلك إشارة السيرفو الأول يذهب إلى الدبوس٣ويسير سلك إشارة المحرك الثاني إلى الدبوس٥(في الفيديو عند 04:01). تذكر أنه يجب عليك استخدام دبابيس تدعم PWM (مميزة بواحد تيلدا "~" على الأونو) للتحكم في السيرفو.
شرح الكود
الكود مبني على مثال "المقبض" القياسي من بيئة تطوير Arduino ولكنه معد لتشغيل سرفوئين. المنطق بسيط: قراءة القيمة التناظرية من المقاوم المتغير، وتحويلها إلى زاوية، وإعطاء أمر للسيرفو للتحرك إلى تلك الزاوية. قسم التكوين في أعلى الكود هو المكان الذي ستقوم فيه بإجراء جميع التعديلات الخاصة بك.
إليك القسم القابل للتكوين من قبل المستخدم الذي يحدد الدبابيس ويشغل كائنات السيرفو:
#include <Servo.h>
//**** servo 1 settings
Servo servo1;
const int servo1PotPin = A0;
const int servo1Pin = 3;// Must use PWM enabled pin
int servo1Value;
//**** servo 1 settings END
//**** servo 2 settings
Servo servo2;
const int servo2PotPin = A1;
const int servo2Pin = 5;// Must use PWM enabled pin
int servo2Value;
//**** servo 1 settings END
هذا هو جوهر التكوين. لإضافة سيرفو ثالث، ستقوم بنسخ كتلة "إعدادات السيرفو 2"، وتغيير جميع "2" إلى "3"، وتعيين دبوس تناظري جديد (على سبيل المثال،A2) ودبوس PWM جديد (مثل،9). TheServoتم بناء الفئة داخل بيئة تطوير Arduino IDE، لذا لا توجد حاجة لمكتبات إضافية.
في الـsetup()دالة، الservo.attach(pin)أمر يحدد للأردوينو أي دبوس متصل بسلك إشارة كل سيرفو. يجب أن يكون لديك سطر لكل سيرفو تستخدمه.
void setup() {
//Robojax.com multiple servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
في الـloop()يقرأ الكود قيمة المتغيرات، ويقوم بتحويلها إلى نطاق من 0 إلى 180 درجة، ثم يكتب تلك الزاوية إلى السيرفو.delay(5)في النهاية هو معلمة ضبط. كما تم توضيحه في الفيديو، فإن تقليل هذه القيمة من 15 إلى 5 مللي ثانية يجعل حركة السيرفو أكثر سلاسة وي eliminate الاهتزاز (في الفيديو عند 12:00).
عرض المشروع الحي
بمجرد توصيل الدائرة وتحميل الكود، تكون العرض فورياً. عند تشغيل جهاز Arduino، سيتحرك كل سيرفو إلى موضع تحدده الإعداد الحالي لمقاومته المتناسبة. بينما تدور المقابض، سيتبع السيرفو حركتك بسلاسة. يُظهر الفيديو أن السيرفين يعملان بشكل مستقل تماماً، مما يسمح بحركات معقدة ومتزامنة. إذا لاحظت أي اهتزاز أو ارتعاش، يمكنك ضبط الـdelay()القيمة في الحلقة هي أول شيء يجب تجربته.
فصول
- [00:00] مقدمة ونظرة عامة على المشروع
- فهم محركات السيرفو
- مخطط الأسلاك لاثنين من السيرفو ومقاومات متغيرة
- [04:15] شرح مفصل للتوصيلات
- شرح الكود: التكوين والإعداد
- [09:15] شرح الكود: منطق التحكم والتخطيط
- [11:15] عرض مباشر وتعديل
/*
* Control two or more servo motors
* using potentiometers.
* Modified by Ahmad Shamshiri on Oct 17, 2019 at 20:13
* in Ajax, Ontario, Canada . www.Robojax.com
* This code on robojax https://robojax.com/RJT766
*
* Original code from Arduino IDE: File->Examples->Servo->knob
*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
* Get this code and other Arduino codes from Robojax.com
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Servo.h>
//**** servo 1 settings
Servo servo1;
const int servo1PotPin =A0;
const int servo1Pin = 3;// Must use PWM enabled pin
int servo1Value;
//**** servo 1 settings END
//**** servo 2 settings
Servo servo2;
const int servo2PotPin =A1;
const int servo2Pin = 5;// Must use PWM enabled pin
int servo2Value;
//**** servo 1 settings END
void setup() {
//Robojax.com multiple servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
void loop() {
//Robojax.com multiple servo
servo1Value = analogRead(servo1PotPin);
servo1Value = map(servo1Value, 0, 1023, 0, 180);
servo1.write(servo1Value);
servo2Value = analogRead(servo2PotPin);
servo2Value = map(servo2Value, 0, 1023, 0, 180);
servo2.write(servo2Value);
delay(5);
//Robojax.com multiple servo
}// loop end
الأشياء التي قد تحتاجها
-
أمازون
-
أمازون
-
إي باي
-
علي إكسبريساشترِ محرك سيرفو SG90 بزاوية 180 أو 360 من علي إكسبريسs.click.aliexpress.com
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
ملفات أخرى
-
ورقة بيانات محرك SG90 Seroo
robojax-servo-SG90_datasheet.pdf0.12 MB