آموزش راه‌اندازی سروو موتور (Servo) با آردوینو + کدهای عملی

قسمت 47
کنترل موقعیت دورانی با Servo قسمت 47 آموزش آردوینو
مشاهده سایر جلسات آموزش
10 بازدید
۱۴۰۴-۱۲-۰۴
6 دقیقه
  • نویسنده: مریم میریان
  • درباره نویسنده: ---

در قسمت 46 از آموزش آردوینو به بررسی کنترل آرایه‌ای از دیودهای نوری با استفاده از رجیسترهای انتقالی MAX72xx، افزایش تعداد خروجی‌های آنالوگ با استفاده از مدارهای گسترش‌دهنده PWM و استفاده از یک آمپرمتر آنالوگ پنلی به عنوان نمایشگر پرداختیم. در این قسمت قصد داریم درباره کنترل موقعیت دورانی با Servo صحبت کنیم.

شما می‌توانید با کنترل موتورها توسط آردوینو، اشیاء را به حرکت درآورید. انواع مختلفی از موتورها برای کاربردهای گوناگون مناسب هستند و این قسمت و چندین قسمت بعدی این آموزش، نحوه راه‌اندازی انواع مختلف موتورها با آردوینو را نشان می‌دهد.

شما با servo موتورها کار خواهید کرد؛ موتورهایی که مدارهای داخلی دارند و امکان حرکت به یک موقعیت (زاویه) یا چرخش با سرعت مشخص را فراهم می‌کنند. همچنین با موتورهای Brushed و بدون Brushless آشنا می‌شوید که با طراحی‌های متفاوت، امکان چرخش با سرعت‌ها و جهت‌های مختلف را می‌دهند. در ادامه این آموزش، مطالبی درباره موتورهای پله‌ای (Stepper Motors) ارائه می‌شود که امکان حرکت موتور به تعداد پله‌های مشخص در یک جهت یا برعکس را فراهم می‌کنند. علاوه بر موتورهای چرخشی، مطالبی درباره کار با رله‌ها و solenoids نیز وجود دارد.

servo موتورها

servoها به شما اجازه می‌دهند حرکت فیزیکی را به دقت کنترل کنید، زیرا معمولاً به‌جای چرخش مداوم، به یک موقعیت خاص حرکت می‌کنند. آن‌ها برای چرخاندن چیزی در محدوده‌ای از ۰ تا ۱۸۰ درجه ایده‌آل هستند. اتصال و کنترل servoها آسان است زیرا مدار درایور موتور در خود servo تعبیه شده است.

servoها شامل یک موتور کوچک هستند که از طریق چرخ‌دنده‌ها به یک شفت خروجی متصل شده است. این شفت خروجی، بازوی servo را به حرکت درآورده و همچنین به یک پتانسیومتر متصل است تا بازخورد موقعیت را به مدار کنترل داخلی بدهد (شکل 1 را ببینید).

شما می‌توانید servoهایی با چرخش پیوسته تهیه کنید که در آن‌ها بازخورد موقعیت قطع شده است؛ به‌این‌ترتیب، می‌توانید به servo دستور دهید که با کنترل کمی بر سرعت، به طور مداوم در جهت عقربه‌های ساعت و خلاف جهت عقربه‌های ساعت بچرخد. این نوع servoها کمی شبیه موتورهای Brushed هستند، با این تفاوت که servoهای چرخش پیوسته از کد کتابخانه servo به‌جای analogWrite استفاده می‌کنند و نیازی به شیلد موتور ندارند.

servoهای چرخش پیوسته استفاده آسانی دارند، زیرا نیازی به شیلد موتور ندارند. درایورهای موتور درون خود servo تعبیه شده‌اند. نقاط ضعف آن‌ها این است که محدودیت‌هایی در انتخاب سرعت و قدرت نسبت به موتورهای خارجی دارند و معمولاً دقت کنترل سرعت آن‌ها به‌خوبی servoهایی که با شیلد موتور کنترل می‌شوند نیست (زیرا الکترونیک آن‌ها برای موقعیت‌یابی دقیق طراحی شده است، نه کنترل سرعت خطی).

اجزای داخلی یک servo موتور

شکل 1: اجزای داخلی یک servo موتور

servoها به تغییرات در مدت‌زمان یک پالس پاسخ می‌دهند. یک پالس کوتاه ۱ میلی‌ثانیه یا کمتر باعث می‌شود servo به یک انتهای محدوده بچرخد؛ درحالی‌که یک پالس با مدت‌زمان حدود ۲ میلی‌ثانیه servo را به انتهای دیگر محدوده می‌چرخاند (شکل 2 را ببینید). پالس‌هایی که بین این دو مقدار قرار می‌گیرند، servo را به موقعیتی می‌چرخانند که متناسب با پهنای پالس است. هیچ استاندارد دقیقی برای رابطه بین پالس‌ها و موقعیت وجود ندارد و ممکن است لازم باشد دستورات موجود در برنامه (sketch) خود را برای تنظیم محدوده servoهایتان کمی تغییر دهید یا آزمایش کنید.

✅نکته

با اینکه مدت‌زمان پالس تنظیم (modulated) می‌شود، servoها به پالس‌هایی نیاز دارند که با خروجی مدولاسیون عرض پالس (PWM) حاصل از دستور analogWrite متفاوت باشند. اگر servo های خود را به خروجی analogWrite متصل کنید، ممکن است به آن آسیب برسانید؛ بنابراین، حتماً باید از کتابخانه Servo استفاده کنید.

 

آموزش راه‌اندازی سروو موتور (Servo) با آردوینو + کدهای عملی

شکل 2: رابطه بین پهنای پالس و زاویه servo؛ بازوی خروجی servo به صورت متناسب با افزایش پهنای پالس از ۱ میلی‌ثانیه تا ۲ میلی‌ثانیه حرکت می‌کند.

solenoids و رله‌ها

اگرچه اکثر موتورها حرکت چرخشی ایجاد می‌کنند، solenoids با تأمین برق، حرکت خطی ایجاد می‌کنند. solenoid دارای یک هسته فلزی است که توسط میدان مغناطیسی ایجادشده در اثر گذر جریان از طریق سیم‌پیچ، حرکت می‌کند. رله مکانیکی نوعی solenoid است که تماس‌های الکتریکی را وصل یا قطع می‌کند (یعنی یک solenoid است که یک کلید را فعال می‌کند). رله‌ها و solenoids مانند اکثر موتورها، جریان بیشتری نیاز دارند تا آردوینو بتواند به طور ایمن تأمین کند و مطالب این چند قسمت نحوه استفاده از ترانزیستور یا مدار خارجی برای کنترل این دستگاه‌ها را نشان می‌دهند.

موتورهای Brushed و بدون Brushless

اکثر موتورهای جریان مستقیم (DC) ارزان‌قیمت، دستگاه‌های ساده‌ای هستند که دارای دو سیم اتصال به Brushless (تماس‌های الکتریکی) هستند که میدان مغناطیسی سیم‌پیچ‌ها را کنترل می‌کنند و هسته فلزی (آرماتور) را به حرکت درمی‌آورند. جهت چرخش را می‌توان با معکوس کردن قطبیت ولتاژ روی تماس‌ها تغییر داد. موتورهای DC در اندازه‌های مختلفی موجودند، اما حتی کوچک‌ترین آن‌ها (مثل موتورهای لرزش در تلفن‌های همراه) نیاز به ترانزیستور یا کنترل خارجی دارند تا جریان کافی تأمین شود. قسمت‌های بعدی نحوه کنترل موتورها با استفاده از ترانزیستور یا مدار کنترل خارجی به نام H-Bridge را نشان می‌دهند.

شاید برای شما مفید باشد:
چرخاندن قطعه در آلتیوم به همراه دستورات پرکاربرد و کلیدهای میان‌بر

ویژگی اصلی در انتخاب موتور، گشتاور (Torque) است. گشتاور تعیین می‌کند موتور چقدر کار می‌تواند انجام دهد. معمولاً موتورهای با گشتاور بالاتر بزرگ‌تر، سنگین‌تر بوده و جریان بیشتری نسبت به موتورهای با گشتاور کمتر مصرف می‌کنند.

موتورهای بدون Brushless معمولاً نسبت به موتورهای Brushed، در یک اندازه مشخص قدرتمندتر و کارآمدتر هستند، اما نیاز به کنترل الکترونیکی پیچیده‌تری دارند. در مواردی که به مزیت عملکرد موتور بدون Brushless نیاز است، می‌توان از قطعاتی به نام کنترل‌کننده‌های سرعت الکترونیکی (Electronic Speed Controllers) که برای کنترل رادیو کنترل‌های سرگرمی طراحی شده‌اند، استفاده کرد، زیرا این کنترلرها با آردوینو به‌راحتی قابل‌کنترل هستند، شبیه به نحوه کنترل یک Servo موتور.

موتورهای پله‌ای (Stepper Motors)

موتورهای پله‌ای موتورهایی هستند که در پاسخ به پالس‌های کنترلی، به میزان درجه مشخصی می‌چرخند. تعداد درجات در هر پله به نوع موتور بستگی دارد و می‌تواند از یک یا دو درجه در هر پله تا ۳۰ درجه یا بیشتر متغیر باشد.

دو نوع موتور پله‌ای که معمولاً با آردوینو استفاده می‌شوند عبارت‌اند از: دوقطبی (Bipolar) (معمولاً با چهار سیم متصل به دو سیم‌پیچ) و تک‌قطبی (Unipolar) (پنج یا شش سیم متصل به دو سیم‌پیچ). سیم‌های اضافی در موتور پله‌ای تک‌قطبی به‌صورت داخلی به مرکز سیم‌پیچ‌ها متصل شده‌اند (در نسخه پنج سیمه، هر سیم‌پیچ یک نقطه مرکزی دارد و هر دو نقطه مرکزی به هم متصل می‌شوند).

✅ نکته

شایع‌ترین دلیل مشکلات در اتصال دستگاه‌هایی که نیاز به برق خارجی دارند، نادیده‌گرفتن اتصال تمام groundها به هم است. ground آردوینو باید به ground منبع تغذیه خارجی و ground دستگاه‌های خارجی که تغذیه می‌شوند، متصل شود.

کنترل موقعیت دورانی با Servo

شما می‌خواهید چرخش را با استفاده از زاویه‌ای که در اسکچ خود محاسبه کرده‌اید، کنترل کنید. برای مثال، می‌خواهید سنسوری روی ربات در یک کمان بچرخد یا به موقعیتی که شما انتخاب می‌کنید حرکت کند.

از کتابخانه Servo که همراه آردوینو توزیع شده است استفاده کنید. سیم‌های برق و گروند servo را به یک منبع تغذیه مناسب متصل کنید (یک hobby servo کوچک معمولاً می‌تواند از خط ۵ ولت آردوینو تغذیه شود). می‌توانید سیم‌های سیگنال servo را به هر پین دیجیتال آردوینو متصل کنید. در اینجا نمونه کد Sweep که همراه آردوینو توزیع می‌شود، آمده است؛ شکل 3 اتصالات را نشان می‌دهد:

آموزش راه‌اندازی سروو موتور (Servo) با آردوینو + کدهای عملی

شکل 3: اتصال یک servo برای آزمایش با نمونه اسکچ Sweep

این نمونه servo را بین ۰ تا ۱۸۰ درجه می‌چرخاند. ممکن است نیاز باشد کتابخانه را مجبور کنید تا موقعیت‌های حداقل و حداکثر را تنظیم کند تا محدوده حرکت موردنظر خود را به دست آورید. فراخوانی Servo.attach با آرگومان‌های اختیاری برای موقعیت‌های حداقل و حداکثر، حرکت را تنظیم می‌کند:

ازآنجایی‌که servoهای معمول به پالس‌هایی که بر حسب میکروثانیه اندازه‌گیری می‌شوند و نه درجه، واکنش نشان می‌دهند، آرگومان‌هایی که پس از شماره پین می‌آیند به کتابخانه servo اطلاع می‌دهند که در صورت درخواست ۰ درجه یا ۱۸۰ درجه، باید چند میکروثانیه استفاده شود. همه servoها در یک دامنه کامل ۱۸۰ درجه حرکت نمی‌کنند، بنابراین ممکن است لازم باشد با servo خود آزمایش کنید تا محدوده دلخواه را به دست آورید.

شاید برای شما مفید باشد:
کدام سری های ESP32 برای پروژه من مناسب است؟

پارامترهای تابع servo.attach(pin, min, max) به شرح زیر است:

شماره پینی که servo به آن متصل شده است (می‌توانید از هر پین دیجیتالی استفاده کنید).

عرض پالس، بر حسب میکروثانیه، متناظر با زاویه حداقل (۰ درجه) در servo (مقدار پیش‌فرض ۵۴۴ است).

عرض پالس، بر حسب میکروثانیه، متناظر با زاویه حداکثر (۱۸۰ درجه) در servo (مقدار پیش‌فرض ۲۴۰۰ است).

✅ نکته

کتابخانه Servo می‌تواند تا ۱۲ Servo را در اکثر برد‌های آردوینو و تا ۴۸ Servo در برد آردوینو مگا پشتیبانی کند. در برد‌های Uno و سایر برد‌های مبتنی بر ATmega328، حتی اگر Servoیی به پین‌های ۹ و ۱۰ متصل نباشد، از قابلیت analogWrite() (PWM) در این پین‌ها دست می‌کنید. برد آردوینو مگا استثناست و احتمالاً در برخی برد‌های ۳۲ بیتی نیز این محدودیت وجود ندارد. برای اطلاعات بیشتر، به داکیومنت کتابخانه Servo مراجعه کنید.

نیازهای توان بسته به نوع servo و میزان گشتاوری که برای چرخاندن شفت لازم است، متفاوت است.

هنگام اتصال چندین servo، ممکن است به یک منبع تغذیهٔ خارجی ۵ یا ۶ ولتی نیاز داشته باشید. اگر می‌خواهید از باتری استفاده کنید، چهار باتری‌قلمی AA گزینه مناسبی هستند. به خاطر داشته باشید که باید ground (منفی) منبع تغذیهٔ خارجی را به ground آردوینو متصل کنید. 

اطلاعات
10
0
0
اشتراک و حمایت
profile نویسنده: مریم میریان متخصص الکترونیک

مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله