درس 92: کنترل چندین سروو هر کدام با پتانسیومتر | دوره آموزشی Arduino مرحله به مرحله
در این پروژه، شما یاد خواهید گرفت که چگونه یک کنترلر سرو مستقل و چندکاناله با استفاده از آردوینو Uno و دو پتانسیومتر بسازید. به جای یک سروو که یک دستگیره را دنبال میکند، این راهنما نشان میدهد که چگونه به هر سروو ورودی آنالوگ اختصاصی خود را بدهید، که به شما این امکان را میدهد که دو تا شش موتور سرو را به طور مستقل و همزمان کنترل کنید. این یک بلوک ساختمانی بنیادی برای هر پروژه است که به کنترل دستی دقیق چندین قسمت متحرک نیاز دارد.
این تنظیمات فوقالعاده چندمنظوره است. در اینجا چند راه عملی برای استفاده از آن آمده است:
- رباتیک:کنترل حرکت افقی و عمودی یک گیبلا دوربین یا مفاصل پایه و بازوی یک ربات کوچک.
- عروسکهای متحرکایجاد حرکات واقعگرایانه برای یک عروسک یا شخصیت انیماترونیک با کنترل مستقل سر و چشمهای آن.
- کنترل مدل:ساخت یک کنترلر سفارشی برای وسایل نقلیه کنترلی یا هواپیماهای مدل به منظور تنظیم دقیق فلپها و آیلرونها.
- خودکارسازی:ایجاد یک ایستگاه کنترل دستی برای یک ردیاب خورشیدی یا یک دستگاه موقعیتیابی چندمحوری.
سختافزار مورد نیاز
- آردوینو اونو (یا هر بورد سازگار دیگر)
- ۲ عدد موتور سرو (در اینجا از سرو موتورهای استاندارد ۱۸۰ درجه استفاده شده است)
- دو عدد پتانسیومتر (۱۰کیلو اهم گزینهای رایج است)
- بورد آزمایش و سیمهای جامپر
- منبع تغذیه خارجی 5 ولت (توصیه شده برای چندین سرو)
راهنمای سیمکشی
این پروژه به کمی بیشتر از سیمکشی نسبت به یک تنظیم سروو منفرد نیاز دارد، عمدتاً به این دلیل که شما باید انرژی و زمین را به چندین مؤلفه توزیع کنید. کلید کار این است که از ریلهای قدرت برکبرد برای ایجاد یک بیس مشترک ۵ ولت و GND استفاده کنید. یک دیاگرام سیمکشی برای این ساخت ضروری است.

بیایید ارتباطات را تجزیه و تحلیل کنیم، همانطور که در ویدیو توضیح داده شده است (در ویدیو در 02:23). ابتدا ریلهای قدرت خود را راهاندازی کنید: آردوینو را متصل کنید۵ ولتبه ریل مثبت پایه مدار متصل کنید وGNDپایه را به ریل منفی وصل کنید. این به شما دسترسی آسان به انرژی برای تمام قطعاتتان میدهد.
پتانسیومترها:هر پتانسیومتر به عنوان یک تقسیمکننده ولتاژ عمل میکند. پایه راست هر پتانسیومتر را به۵ ولتریل و پایه چپ بهGNDریل. پایه وسط "قلممو" است و ولتاژ متغیری را تامین میکند. پایه وسط اولین پتانسیومتر را به ورودی آنالوگ متصل کنید.A0و پایه میانی دوم بهA1(در ویدیو در ۰۳:۲۲).
موتورهای سروو:هر سروو دارای سه سیم است. سیم تیره رنگ (معمولاً سیاه یا قهوهای) را بهGNDریل. سیم وسط (معمولاً قرمز) را به متصل کنید5 ولتریل. در نهایت، سیم سیگنال (که معمولاً نارنجی یا زرد است) را به یک پایه دارای قابلیت PWM در آردوینو متصل کنید. سیم سیگنال سرو موتور اول به پایه3و سیم سیگنال سرو موتور دوم به پایه میرود۵(در ویدیو در ۰۴:۰۱). به خاطر داشته باشید، شما باید از پایههای دارای PWM (که با یک تیوید "~" در آونو علامتگذاری شدهاند) برای کنترل سروو استفاده کنید.
توضیح شِفر (کود)
شِفر (کود) بر اساس مثال استاندارد "دکمه" از IDE آردوینو است اما به گونهای تغییر یافته است که دو سروو را مدیریت کند. منطق آن ساده است: مقدار آنالوگ را از پتانسیومتر بخوانید، آن را به یک زاویه نگاشت کنید و به سروو فرمان دهید که به آن زاویه حرکت کند. بخش پیکربندی در بالای شِفر (کود) جایی است که همه تنظیمات خود را انجام خواهید داد.
اینجا بخش قابل پیکربندی کاربر وجود دارد که پایهها را تعریف کرده و اشیاء سروو را ایجاد میکند:
#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
این هسته پیکربندی است. برای افزودن یک سروو سوم، شما باید بلوک "تنظیمات سروو ۲" را کپی کنید، تمامی "۲"ها را به "۳" تغییر دهید و یک پایه آنالوگ جدید اختصاص دهید (برای مثال،A2) و یک پایه PWM جدید (به عنوان مثال،9). TheServoکلاس در IDE آردوینو گنجانده شده است، بنابراین به هیچ کتابخانه اضافی نیاز نیست.
درsetup()تابع، الservo.attach(pin)دستوری به آردوینو میگوید که کدام پایه به سیم سیگنال هر سروو متصل است. شما باید برای هر سروویی که استفاده میکنید، یک خط داشته باشید.
void setup() {
//Robojax.com multiple servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
درloop()شِفر (کود) مقدار پتانسیومتر را خوانده، آن را به دامنه ۰-۱۸۰ درجه نگاشته و آن زاویه را به سروو مینویسد.delay(5)در انتها یک پارامتر تنظیم وجود دارد. همانطور که در ویدئو نشان داده شده است، کاهش این مقدار از ۱۵ به ۵ میلیثانیه باعث میشود حرکت سروو بسیار صافتر شود و لرزش را از بین ببرد (در ویدئو در ۱۲:۰۰).
نمایش پروژه زنده
هنگامی که مدار را سیمکشی کردهاید و شِفر (کود) را بارگذاری کردهاید، نمایش بلافاصله انجام میشود. زمانی که آردوینو را روشن میکنید، هر سروو به موقعیتی که با تنظیم فعلی پتانسیومتر مربوطه تعیین شده، حرکت خواهد کرد. وقتی که یک ولوم را بچرخانید، سروو آن به آرامی حرکت را دنبال میکند. ویدئو نشان میدهد که دو سروو به طور کامل مستقل کار میکنند و این امکان را برای حرکات پیچیده و همزمان فراهم میکند. اگر هرگونه لرزش یا نوسانی مشاهده کردید، تنظیم کردنdelay()مقدار در حلقه اولین چیزی است که باید امتحان شود.
فصلها
- [00:00] مقدمه و مروری بر پروژه
- :56 درک موتورهای سرو
- نمودار سیم کشی برای دو سرو و پتانسیومترها
- [04:15] توضیحات دقیق سیمکشی
- [06:49] توضیح شِفر (کود): پیکربندی و راهاندازی
- [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 با زاویه ۱۸۰ یا ۳۶۰ را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
سایر فایلها
-
دیتاشیت موتور SG90 Seroo
robojax-servo-SG90_datasheet.pdf0.12 MB