به نام خدا
سروو موتور (Servo motor) یا موتور کنترل نوعی از موتورهای الکتریکی است که با هدف بکارگیری در سیستمهای کنترل فیدبک طراحی میشود. این موتور ها قدرت زیادی دارند و میتوانند وزن زیادی را متحمل شوند. زاویه چرخش سروو موتور ها از ۰ تا ۱۸۰ درجه است اما سروو موتور هایی وجود دارند که میتوانند ۳۶۰ درجه هم دور بزنند. با استفاده میکرو کنترل ها و دادن پالس به آن می توانیم موقعیت شافت را بصورت دقیق مشخص کنیم ، سرعت عملکرد سروو موتور ها بسیار زیاد است . چون میزان لختی یا اینرسی در آن بسیار کم است و همچنین قدرت زیادی دارند از آنها در موارد مختلف مانند هواپیما های مدل ، چرخش تخم های دستگاه جوجه کشی ، ساختن انواع بازو های الکترونیکی ، ساختن ربات های انسان نما و … مورد استفاده قرار می گیرند .
برای راه اندازی این نوع موتور ها ، باید پالسی بین ۱ تا ۲ میلی ثانیه ایجاد کرد.
لوازم مورد نیاز برای انجام پروژه :
- آردوینو (arduino) — خرید از فروشگاه
- سروو(servo) موتور (مدلش مهم نیست) — خرید از فروشگاه
- پتانسیومتر ۱۰ کیلو — خرید از فروشگاه
اتصالات :
- سیم زرد سروو(servo) به پین ۹ آردوینو (arduino)
- سیم قرمز سروو(servo) به ۵v Vcc
- سیم قهوه ای سروو(servo) به Gnd
- Vcc و Gnd پتانسیومتر رو خودتون وصل کنید
- خروجی پتانسیومتر به پین A0 آردوینو (arduino)
این هم از کد :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <Servo.h> Servo myservo; int pot; void setup() { myservo.attach(9); } void loop() { pot = analogRead(A0); pot = map(pot, 0, 1023, 0, 180); myservo.write(pot); } |
فراخوانی کتابخانه سروو جهت ارتباط برقرار کردن با سروو(servo) موتور
1 |
#include <Servo.h> |
ایجاد یک شی جدید از جنس سروو با نام myservo
1 |
Servo myservo; |
ایجاد یک متغییر با نام pot که قرار است مقدار آنالوگ پتانسیومتر در آن ریخته شود
1 |
int pot; |
شروع حلقه ی محدود Setup
1 |
void setup() { |
مشخص کردن سریال کاری دریچه ی سریال
1 |
Serial.begin(9600); |
معرفی پایه ای که سروو به آن متصل است و پایان حلقه ی Setup
1 2 |
myservo.attach(9); } |
شروع حلقه ی loop
1 |
void loop() { |
خواندن مقدار آنالوگ پتانسیومتر (پین A0 آردوینو) و ریختن آن در رجیستر pot
1 |
pot = analogRead(A0); |
تناسب بندی توسط تابع map بین مقدار آنالوگ پتانسیومتر از ۰ تا ۱۰۲۳ بین درجه ی سروو(servo) از ۰ تا ۱۸۰
1 |
pot = map(pot, 0, 1023, 0, 180); |
دستور دادن به سروو(servo) توسط تابع write و رفتن در زاویه ی مورد نظر توسط پتانسیومتر
1 |
myservo.write(pot); |
نوشتن زاویه ی سروو(servo) در دریچه ی سریال
1 |
Serial.println(pot); |
صبر برای قرار گیری سروو(servo) در زاویه ی مورد نظر و پایان حلقه ی loop
1 2 |
delay(100); } |
اگر بخواهیم سروو(servo) به صورت خودکار و بدون پتانسیومتر در درجه ای دلخواه قرار گیرد برنامه بدین شکل تغییر میکند :
1 2 3 4 5 6 7 8 9 10 |
#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); } void loop() { myservo.write(180 تا 0 از دلخواه درجه نوشتن); } |
اگه مشکلی داشتین تو قسمت نظرات بنویسید تا رفعش کنم….
یه اموزش هم برای موتور های ۳۶۰ درجه بزارید لطفا یا بگید چجوری با اردوینو کنترلش کنم خیلی نیاز دارم ممنون
سروو موتور ۳۶۰ درجه فرق زیادی با سروو ی ۱۸۰ درجه نداره !!! فقط برای سروو ی ۱۸۰ در قسمت write میتونید یه عدد از ۰ تا ۱۸۰ وارد کنید و سروو تو همون زاویه میمونه ولی در سروو موتور ۳۶۰ در قسمت write هر عددی وارد کنید موتور به همون تعداد دور میزنه!!! من اینجوری راه انداختمش…
۱- دریچه ی سریال چیه و چرا ۹۶۰۰ انتخاب کردین
۲-مقدار ۰-۱۰۲۳ چی هست؟ واحدش چیه؟
ممنون از مطلب بسیار مفیدتون
سلام ، ممنون بابت توضیحات کامل شما دوست عزیز…
سروو موتور من در حالت استارت اولیه لرزش داره ، چطوری میتونم لرزشش رو بگیرم ؟
سلام
ممنون از آموزش خوبتون.
آیا میشه سرعت سروو موتور رو کنترل کرد؟
با سلام
ضمن تشکر از توجه شما، خیر سرعت سروو موتور ثابت است و فقط میتوانید زاویه را کنترل کنید.
سلام خسته نباشید من دو تا سرو موتور MG996R رو با اردینو میخوام روشن کنم رو شن نمیشه…این برنامه هم دادم اما روشن نشد…
باید چیکار کنم؟؟؟
پروژه دنبال کننده خورشیدی هست..
با سلام
این سرو نیاز به جریان بیشتر از توان آردوینو دارد. از منبع تغذیه مجزا استفاده کنید. سپس موارد را از همین طریق اطلاع رسانی کنید.
سلام اگه میشه برنامه ای بزارین که بشه با اردینو پتانسیومتر رفت و برگشت سرو ها رو درست کرد.برای رباط بازو با چهار درجه ازادی وقابلیت۱۸۰درجه چرخش دارد.لطفا سریع جواب بدید
با سلام و تشکر از شما
کاربر گرامی دیجی اسپارک مرکز ارایه کدهای مورد علاقه شما به صورت رایگان نمیباشد. شما میتوانید به آموزشهایی از جمله تشخیص میدان مغناطیسی و کنترل سرو موتور Servo با سنسور Reed switch و یا آموزش کار با ماژول ولوم کشویی ۱۰ کیلو اهم Slide Potentiometer و آردوینو مراجعه کرده سپس سوالاتتان را برای رسیدن به پاسخ نهایی مطرح کنید. لطفا صفحه حمایت از دیجی اسپارک را مطالعه بفرمایید.
سلام، سروو ۳۶۰ درجه جهت و سرعت چرخشش فقط قابل تنظیمه.به این صورت که:
servo.write(89-100)=سرعت۰
servo.write(180)= سرعت( بیشترین)، جهت(چپگرد)
servo.write(101)= سرعت( کمترین)، جهت(چپگرد)
servo.write(0)= سرعت( بیشترین)، جهت(راست گرد)
servo.write(88)= سرعت( کمترین)، جهت(راست گرد)
برای اطلاع بیشتر:
https://forum.arduino.cc/index.php?topic=521760.0
با سلام
از توجه شما سپاسگزارم. پیشنهاد میشود موارد اینچنینی را همانند توضیحاتتان، ارایه بفرمایید. هدف ما تولید محتوای فارسی و کمک به توسعه وب فارسی میباشد.
سلام من تازه میخوام آردوینو رو شروع کنم لطفا برای یاد گیری مرجع خوب معرفی کنید
برا راه اندازی یک سروو ۱٫۸ کیلو وات هم میشه از آردوینو استفاده کرد
سلام
در سایت آموزش های آردوینو کامل دسته بندی شده است. آموزش ها به زبان فارسی و کدهای هر آموزش تحلیل شده است. در ابتدا پیشنهاد میکنم از سری آموزش های پکیج سنسور شروع نمایید. جهت دسترسی به آموزش ها از لینک زیر اشتراک تهیه کنید. در هر مرحله در صورت برخورد به مشکل از طریق بخش نظرات با نویسنده آموزش در ارتباط باشید.
خرید اشتراک دیجی اسپارک
پکیج سنسور آنالوگ و دیجیتال Arduino Sensor Kit با ۳۷ سنسور متنوع و آموزش راه اندازی
در خصوص سوال دوم بله باید از درایور موتور مناسب سرو موتور انتخابی برای کنترل جریان و ولتاژ کافی استفاده کنید.
سلام برای من ارور کتابخانه میده . نمیدونم باید کجا کتابخانه رو دانلود کنم .
توی منابع کتابخونه ام هم #include نیست .
لطفا کمکم کنید .
با سلام
کاربر گرامی درخصوص روش نصب کتابخانه از آموزش نصب کتابخانه آردوینو اقدام بفرمایید. سپس نتیجه را از همین طریق و یا آموزش لینک شده، اعلام بفرمایید.
درود
بابت اموزش کامل تون و وبسایت پر از آموزشتون تشکر میکنم.
میخواستم ببینم آیا میشه سرعت چرخش سروو رو تنظیم کرد؟
سپاس فراوان
با سلام
بله امکان پذیر است.
در این خصوص بایستی از تابع delay و یا استفاده از توابع switch case و for شرط های زمانی جهت حرکت شافت سرو موتور در نظر بگیرید.
متونید کدش رو بگید؟
سروو سرعتش زیاده میخوام کم کنم
راستی میخوام تابع زاویه و زمان یا همون delay رو هم داشته باشه با تشکر
با سلام
امکان نوشتن کد در کامنت ها وجود ندارد. در این خصوص درخواست خود را از طریق لینک زیر ارسال کنید.
پرتال پشتیبانی فروشگاه
ببخشید من مى خوام تو یک برنامه یک سروو رو با یک پتانسیومتر و یک سروو دیگه رو با پتانسیومتر دیگه کنترل کنم چطور مى تونم یک سروو دیگه توى برنامه بزارم با نام دیگه .
با سلام
کافیست سرو دوم را با متغیر متفاوت دیگری تعریف نمایید. به عنوان مثال اگر دو سرو دارید به صورت زیر تعریف نمایید:
myservo1;
myservo2;
و به همین ترتیب در کدها تعمیم دهید.
سلام
برای کنترل ۲۰۰ عدد سروو بصورت همزمان چه ایده ای دارید؟
با سلام
برای این منظور بایستی از آی سی های درایور PWM مانند PCA9685 استفاده کنید. در کل موردی که مد نظر دارید نیازمند طراحی یک مدار مجزا برای فرمان است.
سلام
برای راه اندازی ۳ استپر موتور و ۴ تا سروو موتور به صورت همزمان با آردوینو چه چیزی لازم هست؟
با سلام
در این خصوص بایستی از درایور موتورها استفاده کنید.
به عنوان مثال شیلد درایور موتور L293 قابلیت اتصال دو استپر موتور، چهار موتور و دو سرو موتور را دارد.
سلام خسته نباشید
برای کنترل سروو باید پین pwm باشد؟
با سلام
بله از پایه های PWM بردهای میکروکنترلر استفاده کنید.
سلام میخواستم وقتی که دکمه رو زدم سروو بره چپ وبعد از اینکه ول کردم بیاد سر جاش
با سلام
کاربر گرامی در این خصوص بایستی از توابع شرطی در برنامه نویسی آردوینو استفاده کنید که نیاز به دانش برنامه نویسی خواهد داشت.