سرو موتور نوعی از موتورهای الکتریکی است که با هدف بکارگیری در سیستمهای کنترل فیدبک طراحی میشود. لختی (اینرسی) در موتور سرو Servo Motor پایین بوده و در نتیجه تغییر سرعت در این موتورها بسیار سریع است. برای مدیریت سرو موتور نیاز به موج مربعی یا PWM است. به عبارت دیگر سرو موتور Servo Motor یک موتور کوچک دارای یک محور یا شافت خروجی است. این محور خروجی قادر است در یک موقعیت و زاویه خاص با سیگنال دریافتی قرار گیرد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سرو موتور Servo motor
موتور سرو (Servo motor) نوعی موتور الکتریکی است که با استفاده از یک سیستم بازخورد، موقعیت و سرعت دقیقی را کنترل میکند. این موتورها در صنعت و رباتیک برای حرکت دادن اجزای مکانیکی با دقت بالا استفاده میشوند.سرو موتورها دارای یک موتور الکتریکی، یک مدار کنترلر الکترونیکی و یک دستگاه بازخوردی میباشند. سیگنال کنترلی به کنترلر داده میشود که با استفاده از بازخوردی که از دستگاه بازخوردی دریافت میکند، موقعیت دقیق موتور را تعیین میکند و در نتیجه سرعت و قدرت موتور را تنظیم میکند.مزیت اصلی سرو موتورها این است که دارای دقت بالایی در کنترل حرکت هستند و برای کاربردهایی که نیاز به کنترل دقیق حرکت دارند، مثل رباتیک، کارآیی بسیار بالایی دارند.
اصول کار سرو موتور
سرو موتورها به کمک یک سیستم بازخورد کنترل میشوند که شامل یک سنسور موقعیت (encoder) و یا یک سنسور سرعت (tachometer) میباشد. این بازخورد، به کنترلر سرو موتور اطلاعاتی دربارهٔ موقعیت و سرعت فعلی موتور را ارائه میدهد.زمانی که کاربر به سرو موتور دستور حرکت میدهد، کنترلر سرو موتور ابتدا با توجه به اطلاعات بازخوردی که دریافت میکند، موقعیت فعلی موتور را تعیین میکند. سپس با توجه به موقعیت مورد نظر و سرعت مورد نظر، کنترلر، سیگنال کنترلی متناسب با موقعیت و سرعت مورد نظر به موتور ارسال میکند. موتور با دریافت این سیگنال، حرکت خود را با دقت و سرعت مورد نظر آغاز میکند و با هماهنگی با سیستم بازخورد، موقعیت دقیق خود را نسبت به موقعیت مورد نظر کنترلر حفظ میکند.به طور خلاصه، سرو موتورها با توجه به سیگنال کنترلی که به آنها ارسال میشود و با استفاده از سیستم بازخورد، حرکت دقیقی را انجام میدهند و موقعیت و سرعت دقیقی را کنترل میکنند.
تفاوت سرو موتور با سایر سرو موتورها
تفاوت سرو موتورها با سایر موتورها این است که سرو موتورها دارای یک سیستم بازخورد هستند که به آنها اجازه میدهد که به صورت دقیق و پایدار حرکت کنند و موقعیت و سرعت دقیقی را حفظ کنند. در مقابل، موتورهای دیگر مانند موتورهای DC (جریان مستقیم) و AC (جریان متناوب) و استپر (Stepper)، با استفاده از سیگنال کنترلی فقط سرعت را کنترل میکنند و قادر به حفظ موقعیت دقیقی نیستند.سرو موتورها از این ویژگی برای کنترل دقیق حرکت استفاده میکنند و این موجب میشود که در بسیاری از کاربردهای صنعتی و رباتیک مورد استفاده قرار گیرند. علاوه بر این، سرو موتورها دارای دقت بالایی در کنترل حرکت هستند و در صورتی که نیاز به کنترل دقیق حرکت داشته باشیم، مثل کاربردهای پزشکی و دندانپزشکی، کارآیی بسیار بالایی دارند.
بررسی پایه های سرو موتور
- سیم نارنجی: پایه سیگنال PWM است که به پایه های PWM برد های آردوینو و ESP8266 متصل میشود.
- سیم قرمز: پایه VCC پایه تغذیه است و به ۵ ولت متصل میشود. بسته به نوع انتخاب سرو موتور ولتاژ کاری متفاوت است.
- سیم قهوه ای: پایه GND است و به پایه GND برد آردوینو و ESP8266 متصل میشود.
با اعمال ولتاژ ۵ ولت و GND به سرو موتور، میتوان سرو موتور را با سیگنال PWM کنترل کرد. زاویه سرو موتور توسط سیگنال PWM مشخص میشود.
(Period of PWM (PERIOD = مدت دوره PWM
(Minimum width of PWM (WIDTH_MAX = حد بالای PWM
(Maximum width of PWM (WIDTH_MIN = حد پایین PWM
راه اندازی سرو موتور با آردوینو
یک شی از کلاس Servo بسازید.با استفاده از تابع attach()، پایه سیگنال سرو موتور را به یک پایه دیجیتال آردوینو متصل کنید.با استفاده از تابع write()، زاویه مورد نظر برای سرو موتور را تعیین کنید. (زاویه ۰ در حالت اولیه موقعیت خانه اول سرو موتور است)برنامه آردوینو خود را کامپایل و بارگیری کنید.برای مثال، کد زیر میتواند به عنوان یک مثال ساده برای راهاندازی سرو موتور با آردوینو استفاده شود.
توابع مهم کتابخانه سرو موتور
تعیین پایه ای که سرو موتور Servo Motor به آن متصل شده است.
attach()
ساختار
servo.attach(pin) servo.attach(pin, min, max)
پارامتر ها
servo:
آبجکتی که در ابتدای برنامه از کلاس Servo تعریف کردیم. شماره پین که سرو به آن متصل شده است.
pin:
min (optional):
طول پالسی (بر حسب میکرو ثانیه)که متناسب آن سرو به زاویه ۰ درجه می رود. به طور پیش فرض دارای مقدار ۵۴۴ می باشد
max (optional):
طول پالسی ( بر حسب میکروثانیه) که متناسب آن سرو به زاویه ۱۸۰ درجه می رود.به طور پیش فرض داری مقدار ۲۴۰۰ می باشد.
write(angle)
در سرو هایی که به طور پیوسته کار نمیکنند، توسط این تابع زاویه شافت موتور مشخص میشود و زاویه شافت موتور برابر angle میشود و در موتور هایی که به طور پیوسته کار میکنند، این تابع سرعت موتور را مشخص میکند( مقدار ۰ برای سرعت کامل ، ۱۸۰ نیز سرعت کامل و ۹۰ نیز تقریبا توقف موتور می باشد)
writeMicroseconds(us)
با استفاده از این تابع مقداری در بر اساس میکرو ثانیه به سرو موتور Servo motor داده میشود.در سروو های استاندار ، مقدار ۲۰۰۰ سرو را در جهت ساعت گرد در زاویه ۰ درجه قرار میدهد ، مقدار ۱۰۰۰ سرو را در جهت پادساعت گرد در زاویه ۱۸۰ درجه قرار میدهد ، و مقدار ۱۵۰۰ سروو را در زاویه ۹۰ درجه قرار میدهد.
read()
این تابع زاویه ای که سرو موتور در آن قرار دارد را برمیگرداند.
attached()
این تابع چک میکند که آیا سرو به پین مورد نظر که در بتدای برنامه به وروی تابع ()attach نسبت دادیم ، متصل است یا خیر و مقدار true یا false برمیگرداند.
detach()
این تابع سرو را از پینی که به آن نسبت داده شده است جدا میکند.
پروژه اول سرو موتور با آردوینو
در این پروژه با استفاده از سریال مانیتور نرم افزار آردوینو ، مقدار زاویه مورد نظر را وارد میکنیم و سرو موتور Servo motor مطابق همان مقدار وارد شده تغییر زاویه میدهد.
کد آردوینو Arduino
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
پروژه دوم سرو موتور با آردوینو
در پروژه دوم توسط یک پتانسیومتر، شافت سرو موتور در زاویه مشخص شده به حرکت درخواهد آمد.
کد آردوینو Arduino
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) 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 delay(15); // waits for the servo to get there }
پروژه سوم سرو موتور با آردوینو
در پروژه سوم با تعیین دو شرط، شافت سرو موتور Servo motor در دو زاویه متفاوت شروع به حرکت خواهد کرد.
کد آردوینو Arduino
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.
با سلام.این برنامه ای که برای راه اندازی سروو گذاشتید رو باید تغییر داد یا مستقیم کپی کرد؟؟؟
درود
مستقیم کپی کنید
ولی توجه کنید که با استفاه از سریال مانیتور نرم افزار ، زاویه سروو را میشود تعیین کرد
درود.
من میخوام بین لب ویو و سروو و اردوینو ارتباط برقرار کنم.
به طوریکه با اعمال فرمان در لبویو سروو موتور شروع به حرکت کنه… برای اینکار نیاز به مبدل usb به سریال دارم؟
لطف میکنید ارتباط بین لب ویو و اردوینو کمکم کنید؟
درود
خیر نیازی ندارین
پورت USB آردویو را به کامپیوتر فقط باید متصل کنین.
سوال دیگه ای بود در خدمتتون هستم
با سلام
ممنون از مطالب مفیدتون اگه میشه در مورد ارتباط لب ویو با آردوینو بیشتر توضیح بدید من میخوام یه موتور dc را از طریق لب ویو با اتصال به آردوینو کنترل کنم.
با سلام و تشکر از توجه شما، این موضوع بسیار متفاوت از آموزش آردوینو است. در حال حاضر برنامه ای برای آموزش لب ویو نداریم.
سلام
برای اینکه از دو موتور سروو استفاده کنیم.چه تغییری باید انجام بشه.
با سلام و تشکر از توجه شما، این برنامه فقط یک کد ساده برای مدیریت سرو موتور از طریق سریال مانیتور نرم افزار است. برای استفاده از دو سرو موتور و یا بیشتر نیاز به برنامه نویسی بر اساس نیازتان دارید.
درود.
برای تغییر جهت چرخش باید چه کار کرد.یعنی مثلآ موتور اول ۱۰ درجه به راست وبعد ۱۵ درجه به چپ بچرخه.ممنون
با سلام و تشکر از توجه شما
برای این منظور باید آرگومان زاویه جدید در کدها تعریف کنید و جهت زاویه را هم بستگی به این دارد که موتور شما ۳۶۰ درجه باشد یا خیر. چون در غیر این صورت اگر شافت موتور در زاویه ۰ باشد، نمیتواند به زاویه منفی تغییر جهت بدهد.
با سلام
من یک دستگاه سی ان سی با آردینو و شیلد سی ان سی ساختم و برای محور z از سروو موتور استفاده کردم اما وقتی برنامه را اجرا می کنم سروو موتور در موقع مناسب روشن شده ولی دیگر خاموش نمی شود اگر از سروو ۳۶۰ استفاده کنم به طور مداوم روشن است . اگر از سروو ۱۸۰ استفاده کنم در یک جهت می چرخد و در هنگامی که باید خودکار را از روی کاغذ بلند کند عمل نمی کند . لطفاً راهنمائی کنید چه کنم . ضمنا از برنامه grbl control استفاده کردم و برنامه ی inkscape . با تشکر
با سلام
ضمن تشکر از توجه شما، اگر از شیلد CNC استفاده میکنید. این موضوع با استفاده از جامپرها روی برد قابل حل است.
سلام
من تا حالا از سروو استفاده نکردم سوالی راجبع این موتر داشتم
اینکه این موتور ها فقط با تعیین درجه میچرخند؟؟ نمیشود مثل دینام ساده بچرخد یعنی بدون تعیین درجه در جهت خاصی فقط بدون ایستادن بچرخد ؟؟؟؟ آیا قادر به تحمل بار یا کشیدن یک وزنه هستند ؟؟ باتوجه به گیر بکس داشتن؟؟؟؟؟
با سلام
ضمن تشکر از توجه شما، سرو موتور دارای جعبه دنده است، از این رو کاملا میتوان شافت آن را کنترل کرد و بر اساس درجه تعیین موقعیت کنید. همچنین هر سرو توانایی متفاوتی دارد، با توجه به ضریب دندهها میتوانید قدرت خروجی متفاوتی داشته باشید که این موضوع در دیتاشیت هر سروموتور مشخص شده است. برای اینکه شافت سرو موتور کامل بچرخد، معمولا باید در جعبه دنده دستکاری شود.
سلام من سال ۸۵ بابت یک پروژه دانشجویی از شرکت پایکار بنیان ۴ دستگاه سروو موتور خریداری شد با توجه به شکست طرح بصورت اکبند در انبار شرکت موجود دارم خواهشمندم بابت فروش راهنمایی بفرمایی
اینانلو هستم ممنون میشم
با سلام
ضمن تشکر از توجه شما، در این زمینه اطلاعاتی برای ارایه وجود ندارد. اطلاعات دقیق تر ارایه دهید، از بین دیگر کاربران اگر کسی در این مورد تمایل داشته باشد، با شما ارتباط میگیرد.
سلام ممنون میشم اگه راهنمایی کنید که چطور جهت حرکت سروو موتور رو مثلا از راستگرد به چپگرد تغییر بدم وقتی که سروو داره داده های ژیروسکوپ رو میخونه
درود
همانطور که در متن آموزش توضیح داده شده است، میتوانید از تابع (writeMicroseconds(us استفاده کنید که عملکرد تابع کامل توضیح داده شده است.
مجددا آموزش را مرحله به مرحله مطالعه نمایید و سپس سوالات خود را از همین طریق بپرسید تا راهنمایی کنم.
سلام با عرض خسته نباشید …پروژه را به صورت خلاقانه به همراه joystick و nrf و lcd اجرا کردم و فیلم مربوطه را در اپارات قرار دادم …
https://www.aparat.com/v/7qfSk
سلام
از توجه و ارسال ویدیو جذاب شما تشکر میکنم.
بن ارسال رایگان بر روی ایمیل شما ارسال خواهد شد.
سلام
ببخشید سروو موتور رو با یه دستور میتونم بگم برعکس بچرخه؟؟
مثلا بگم
servo.write(-1);
servo.write(-.2)
سپاس
سلام
در این خصوص از تابع (writeMicroseconds(us استفاده کنید. در متن آموزش کامل توضیح داده شده است.
مقدار ۲۰۰۰ سرو را در جهت ساعت گرد در زاویه ۰ درجه قرار میدهد ، مقدار ۱۰۰۰ سرو را در جهت پادساعت گرد در زاویه ۱۸۰ درجه قرار میدهد ، و مقدار ۱۵۰۰ سروو را در زاویه ۹۰ درجه قرار میدهد.
سلام.ببخشید پروژه اول خطا میده موقع اجرا کردن.در این سطر
if ( Serial.available () > 0 )
میگه gt تعریف نشده؟
با سلام
gt علامت کوچک و بزرگ است که در کدها تغییر کرده است. با تغییر این مورد مشکل برطرف خواهد شد.
ممنونم خانم پوربلورچیان
ولی جواب نداد.منظورتون اینه:
if ( Serial.available () &; 0 )
یعنی جاگذاری بجای gt?
بازم ارور میده
با سلام
خیر فقط به جای عبارت gt از علامت < و > استفاده کنید.
if ( Serial.available () > 0 )
{
angle = Serial.parseInt (); //به وسیلله این تابع مقادیر عددی را میخوانیم
//اگر زاوایه سروو بیشتر از ۱۸۰ یا کتر از ۰ باشد ، در سریال مانیتور پیامی نمایش داده میشود
if ( angle > 180 && < ۰ ) { Serial.println ("maghadir morednazar baray e servo bayad beyn 0 ta 180 bashad"); } else { servo.write (angle); } }
سلام خسته نباشید
من میخواستم یه پروژه با آردینو و ۴ عدد موتور سروو و ماژول حسگر ضربه راه اندازی کنم
به طوری که وقتی ماژول حسگر ضربه . ضربه ای متوجه شد بعد اون سروو ها کار کنن و همینطور تا آخر
فقط یکمی تو کد زنی سنسور مشکل دارم
ممنون میشم راهنمایی کنید
با سلام
درخواست جنابعالی نیاز به برنامه نویسی دارد و از طریق دیدگاه ها قابل پیگیری نمیباشد. از طریق پرتال پشتیبانی میتوانید درخواست سفارش پروژه را ارسال نمایید.
پرتال پشتیبانی فروشگاه
پروژه راه اندازی سروو موتور
با سلام
وسایل مورد نیاز
“جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید”
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید!!!
خداحافظ
این چه وضع آموزشه! خب از همون اول بگین باید اشتراک بگیرید!
با سلام
کاربر گرامی آموزش های سایت به دو دسته تقسیم شده است. بخشی از آموزش ها رایگان و بخشی از آنها زیر لایه اشتراک است. که به صورت شفاف اعلام شده است.
همچنین جهت استفاده از خدمات سایت بایستی از ایمیل معتبر استفاده کنید.
سلام
روشی هست که بشه سروو موتور رو با میکرو سوییچ(یا پوش باتن) حرکت داد؟
وقتی دکمه رو نگه دارم مثلا سروو از جایی که هست تکون بخوره و نهایتا تا ۱۸۰ درجه بچرخه
و دکمه دومی رو بزنم بر عکس حرکت کنه(تا زمانی که نگهش داشته باشم)مثلا تا ۰ درجه
با سلام
بله تمامی این موارد در کدنویسی قابل اجرا است. به عنوان مثال با استفاده از جوی استیک قبلا آمورزش داده شده است.
آموزش راه اندازی ماژول جوی استیک JoyStick پکیج ۳۷ سنسور آردوینو
https://daneshjookit.com/%D9%85%DA%A9%D8%A7%D9%86%DB%8C%DA%A9-%D8%B1%D8%A8%D8%A7%D8%AA%DB%8C%DA%A9-robotic/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%85%D9%88%D8%AA%D9%88%D8%B1-motor/%D8%B3%D8%B1%D9%88-%D9%85%D9%88%D8%AA%D9%88%D8%B1-servo/1901-servo-motor-sg90.html?search_query=%D8%B3%D8%B1%D9%88+%D9%85%D9%88%D8%AA%D9%88%D8%B1&results=123&cate=&_pcnocache=1620738816520
سلام این محصول به عنوان ۳۶۰ درجه در فروشگاهتان عرضه شده است. برای حرکت های بیشتر از ۱۸۰ درجه و حالت حرکت پیوسته، دقیقا باید از چه دستوری استفاده کنم؟
با سلام
اگر ۳۶۰ درجه باشد امکان زاویه دهی به آن فراهم نیست.
سلام ببخشید میخواستم بدونم مبشه سروو موتور رو دائم روشن گذاشت که ۳۶۰ درجه بچرخه
با سلام
در این خصوص تغذیه مورد نیاز برای سرو موتور را بایستی تامین کنید.
سلام، من قبل از اینکه برای اولین بار سروو رو راه اندازی کنم شفت اون رو با دستم چرخوندم ولی الان که میخوام اون رو راه اندازی کنم با این موضوع مواجه شدم که زاویه صفر سروو دیگه اون زاویه مستقیم و روبروی سروو نیس و کمی انحراف داره، تقریبا ۳۲ درجه با زاویه صاف و مستثیم که هم راستا با سروو بود الان انحراف دارم.
میشه بگید جیکار کنم تا به زاویه ۰ همون زاویه صاف باشه
با سلام
در این خصوص هر زاویه ای که به سرو موتور دهید، شافت سرو موتور تغییر خواهد کرد. اگر دچار آسیب شده باشد، که احتمالش هم بسیار ضعیف است، بایستی چرخ دنده های سرو موتور را بررسی کنید.
سلام آقای مهندس قربانی
وقت بخیر.
برای فرمان دادن به سروموتور ۱۲ ولت DC جهت چرخیدن با سرعت های مختلف ساده ترین و کم هزینه ترین روش چیست؟ از برق ماشین برای راه اندازی استفاده می شود و وسیله ای میخواهد بچرخد حدود ۱۵ نیوتن متر گشتاور میخواهد.
آیا منطقی است که از PLC برای کنترل و تنظیم سرعت های مختلف سرومونور استفاده کنیم؟
مثلا بسته به انتخاب کاربر سروموتور با سرعت ۱۰۰ ، ۲۰۰، ۳۰۰ و … دور بر دقیقه به مدت چند ساعت بچرخد.
با سلام
در این خصوص بایستی از تغذیه جداگانه برای راه اندازی سرو موتور استفاده کنید. همچنین از ماژول های کنترل سرعت pwm که به صورت آماده وجود دارد و یا استفاده از درایورسرو موتورها میتوانید فرمان دهید. در خصوص استفاده از plc از این طریق نمیتوان پاسخ قطعی داد.
با سلام و خسته نباشید.
من یه سروو موتور ۳۶۰ درجه از نوع mg945 دارم که میخوام اینو بصورت چپگرد و راستگرد به حرکت دربیارم.ساده ترین مدار یا سیستمی که بتونم برای این نوع حرکت استفاده کنم چی میتونه باشه؟؟
با سلام
سوال شما شفاف نیست.