آموزش کنترل سروو موتور با آردوینو: پتانسیومتر، سرعت و پورت سریال

قسمت 48
مشاهده سایر جلسات آموزش
43 بازدید
۱۴۰۵-۰۱-۱۹
6 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

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

کنترل چرخش سروو موتور با استفاده از پتانسیومتر یا سنسور

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

برای مثال، ممکن است بخواهید حرکت عمودی و افقی (Pan و Tilt) یک دوربین مدار بسته را کنترل کنید. این دستورالعمل می‌تواند با هر ولتاژ متغیری برای مثال، خروجی یک سنسور متصل شده به ورودی آنالوگ کنترلر کار کند.

شما می‌توانید از همان کتابخانه‌ای که در قسمت 47 آموزش آردوینو آمده است استفاده کنید، با این تفاوت که کد دستوری برای خواندن ولتاژ خروجی پتانسیومتر به آن اضافه می‌شود. این مقدار به‌گونه‌ای مقیاس‌بندی می‌شود که موقعیت پتانسیومتر (از 0 تا 1023) به بازه‌ای از 0 تا 180 درجه نگاشت شود. تنها تفاوت در سیم‌کشی، اضافه شدن پتانسیومتر است؛ همان‌طور که در شکل 1 نشان داده شده است.

آموزش کنترل سروو موتور با آردوینو: پتانسیومتر، سرعت و پورت سریال

شکل 1: کنترل servo موتور با پتانسیومتر

✅ نکته

سروو موتور کوچک (hobby servo motor) دارای کابلی با یک کانکتور مادگی سه‌پین هستند (تغذیه، زمین و سیگنال )که می‌توان آن را مستقیماً به هدر سروو موتور متصل کرد. این کانکتور از نظر فیزیکی با کانکتورهای آردوینو سازگار است، بنابراین می‌توانید از همان سیم‌های جامپر که برای اتصال پین‌های آردوینو استفاده می‌شوند، بهره ببرید.

توجه داشته باشید که رنگ سیم سیگنال استاندارد مشخصی ندارداین سیم به‌رنگ سفید زرد یا نارنجی استفاده می‌شود. سیم تغذیه معمولا به رنگ قرمز و همیشه در وسط قرار دارد و سیم زمین (GND) معمولاً مشکی یا قهوه‌ای است.

هر چیزی که بتوان آن را با تابع analog Read خواند (جهت کسب اطلاعات بیشتر به قسمت‌های قبلی مراجعه کنید) قابل‌استفاده است؛ برای مثال، می‌توان از دستورالعمل‌های ژیروسکوپ و شتاب‌سنج در قسمت‌های قبلی استفاده کرد، به‌طوری که زاویه‌ی سروو موتور توسط چرخش (Yaw) ژیروسکوپ یا زاویه‌ی شتاب‌سنج کنترل شود.

همه‌ی سروو موتورها قادر نیستند در کل بازه‌ای که کتابخانه‌ی Servo فراهم می‌کند حرکت کنند.

اگر سروو موتور شما به دلیل وجود محدودکننده‌ی مکانیکی در انتهای مسیر حرکت دچار وزوز (buzzing) می‌شود، سعی کنید بازه‌ی خروجی را در تابع map کاهش دهید تا این وزوز متوقف شود.

برای مثال:

کنترل سرعت Servo های چرخش مداوم (Rotation Servo motors)

فرض کنید می‌خواهید جهت چرخش و سرعت سروو موتورهایی را که برای چرخش پیوسته (Continuous Rotation) استفاده شده‌اند، کنترل کنید.

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

سروو موتور های چرخش پیوسته نوعی موتور دنده‌ای هستند که امکان تنظیم سرعت در جهت جلو و عقب را فراهم می‌کنند. کنترل این نوع سروو موتور ها مشابه سروو موتورهای معمولی است.

سروو موتور با افزایش زاویه از ۹۰ درجه در یک جهت می‌چرخد و با کاهش زاویه از ۹۰ درجه در جهت مخالف می‌چرخد. جهت واقعی جلو یا عقب به نحوه‌ی نصب سروو موتور ها بستگی دارد.

شاید برای شما مفید باشد:
حوزه‌ی دید متغیرها در آردوینو

شکل 2 نحوه‌ی اتصال برای کنترل دو سروو موتور را نشان می‌دهد.

آموزش کنترل سروو موتور با آردوینو: پتانسیومتر، سرعت و پورت سریال

شکل 2: کنترل دو سروو موتور

سروو موتور های کوچک معمولاً با تغذیه‌ای در بازه‌ی ۴٫۸ تا ۶ ولت کار می‌کنند. سروو موتور های بزرگتر ممکن است به جریان بیشتری نسبت به آنچه برد آردوینو می‌تواند از طریق پایه‌ی V +5 تأمین کند نیاز داشته باشند؛ در این صورت باید از یک منبع تغذیه‌ی خارجی استفاده شود.

می‌توان از چهار باتری شارژی ۱٫۲ ولتی برای تغذیه‌ی آردوینو و سروو موتور ها استفاده کرد. اگر قصد دارید آردوینو را نیز با همین باتری‌ها تغذیه کنید، توجه داشته باشید که وارد یک محدوده‌ی نسبتاً حساس می‌شوید:

از نظر تئوری می‌توان با اتصال سیم مثبت باتری‌ها به پایه‌ی  5V آردوینو، آن را تغذیه کرد؛ اما این کار رگولاتور ولتاژ را دور می‌زند و ایده‌ی مناسبی نیست.

گزینه‌ی دیگر، تغذیه‌ی آردوینو از طریق پایه‌ی VIN است که به حداقل ۶ ولت نیاز دارد. بااین‌حال این روش هم چندان ایده‌آل نیست، زیرا ولتاژ کمتر از ۷ ولت ممکن است باعث ناپایداری آردوینو شود.

در نهایت، لازم است بین این محدودیت‌ها و نیازهای توان Servo موتورها تعادل برقرار کنید تا به بهترین حالت ممکن برسید.

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

ازآنجاکه کد کنترل سروو موتور در حلقه‌ی loop قرار دارد، این روند تا زمانی که منبع تغذیه فعال باشد ادامه خواهد داشت:

شما می‌توانید از کد مشابه برای سروو موتورهای چرخش پیوسته و سروو موتورهای معمولی استفاده کنید، اما توجه داشته باشید که سروو موتور های چرخش پیوسته ممکن است با ارسال دقیقا در ۹۰ درجه متوقف نشوند.

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

برای مثال، اگر سروو موتور سمت چپ در ۹۲ درجه متوقف شود، می‌توانید خطوط کد که مقدار زاویه را به سروو موتورمی‌فرستند، به شکل زیر تغییر دهید:

کنترل سروو موتورها با استفاده از دستورات کامپیوتری

فرض کنید می‌خواهید دستورات لازم برای کنترل سروو موتور ها از طریق پورت سریال، را فراهم کنید.

شاید بخواهید سروو موتورها را از یک برنامه‌ای که روی کامپیوتر اجرا می‌شود کنترل کنید.

شاید برای شما مفید باشد:
اهمیت تئوری و ریاضیات در برنامه‌نویسی قسمت دوم: کری یا سرریز، کدام؟

می‌توانید از نرم‌افزار برای کنترل سروو موتورها استفاده کنید. این روش مزیتی دارد: هر تعداد سروو موتور می‌تواند پشتیبانی شود.

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

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

دستورات به شکل زیر هستند:

  • a 180: مقدار ۱۸۰ به سروو موتور a ارسال می‌کند.
  • b 90: مقدار ۹۰ به سروو موتور b ارسال می‌کند.
  • c 0: مقدار ۰ به سروو موتور c ارسال می‌کند.
  • d 17: مقدار ۱۷ به سروو موتور d ارسال می‌کند.

در اینجا اسکچی ارائه شده است که چهار سروو موتور متصل به پایه‌های ۷ تا ۱۰ را کنترل می‌کند:

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

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

یک آرایه به نام myservo برای نگهداری ارجاعات به چهار سروو موتور استفاده می‌شود.

یک حلقه for در بخش setup هر سروو موتور را در آرایه به پایه‌های متوالی که در آرایه servoPins تعریف شده‌اند متصل می‌کند.

این برنامه از تابع parseInt برای دریافت مقادیر صحیح از طریق پورت سریال استفاده می‌کند.

اگر کاراکتر دریافتی حرف a باشد، مقدار زاویه به اولین سروو موتور در آرایه (سروو موتور متصل به پایه ۷) ارسال می‌شود. حروف b ،c و d در اینجا سروو موتور های بعدی را کنترل می‌کنند.

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

اطلاعات
43
0
0
اشتراک و حمایت
جلسات دیگر
آردوینو

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

profile نویسنده: Arduino captain متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!


ویراستار: حسین زنجانی زاده
مقالات بیشتر

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
نویسنده شو !

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

ارسال مقاله