رباتیک و هوافضا

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

به نام خدا

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

 

 

امروز می خواهیم یک سروو موتور را توسط مینی کامپیوتر رزبری پای کنترل کنیم . مدل سروو موتور ما SG90 است .

رزبری پای یک برد بر اساس پردازنده های آرم سری کرتکس میباشد که برای مهندسان الکترونیک طراحی شده است . رزبری پای یک کامپیوتر تک بردی با مصرف توان پایین است . این برد با قدرت پردازش و حافظه ای که دارد میتواند در خیلی از کار های real time به کار رود مانند یک کامپیوتر ، به همین خاطر است که به رزبری پای مینی کامپیوتر میگویند .

رزبری پای یک پردازنده ARMv7 دارد به همین خاطر میتونه از سیستم عامل هایی مثل Linux و Windows 10 استفاده کند . معماری ARM در الکترونیک قدرت زیادی دارد . از معماری ARM در خیلی از وسایل استفاده میکنیم . به عنوان مثال در موبایل های امروز یا در خیلی از تبلت ها از پردازنده های آرم سری کرتکس استفاده میشود .

رزبری پای برد های مختلفی دارد که به طور کلی به چهار دسته رزبری پای Zero ، رزبری پای ۱ ، رزبری پای ۲ و رزبری پای ۳ تقسیم بندی میشوند . البته این چهار دسته زیر شاخه های مربوط به خود را دارند . معروف ترین این برد ها دو مدل Raspberry Pi 2 Model B و Raspberry Pi 3 Model B است . رزبری پای ۳ مدل B  شبیه به رزبری پای ۲ مدل B میباشد با این تفاوت که قابلیت هایی مثل Wi-Fi و Bluetooth به آن اضافه شده و CPU آن مقداری قوی تر شده است . ما با رزبری پای ۲ مدل B کار خواهیم کرد که نحوه کار با آن تفاوتی با رزبری پای ۳ ندارد .

در رسپبری پای ، ۴۰ عدد پین به عنوان پین های GPIO معرفی شده اند اما با نگاهی به شکل بالا متوجه میشویم که همه این ۴۰ پین قابل برنامه ریزی برای ورودی و خروجی نیستند و فقط ۲۶ عدد از این پین ها قابل برنامه ریزی میباشند .

برخی از این GPIO ها توابع و کاربرد خاصی را پشتیبانی میکنند که در جلسه های بعد راجع به آن ها صحبت میکنیم ؛ با کم کردن این GPIO ها از لیست ۲۶ پین ، ۱۷ پین GPIO معمولی در رسپبری پای میماند . این ۱۷ پین در شکل زیر با دایره های سبز رنگ نشان داده شده است .

این ۱۷ پین حداکثر ۱۵ میلی آمپر ( در صورت نکشیدن جریان از بقیه این ۱۷ پین ) جریان میدهند . اما این پین ها در مجموع ۵۰ میلی آمپر میتوانند بدهند یعنی به طور میانگین هر پین حدود ۳ میلی آمپر میتواند بدهد . پس باید مدار خود را طوری طراحی کنیم تا جیریان بیشتر از ۳ میلی آمپر از هر پین رسپبری کشیده نشود . این مقدار در رسپبری پایه نسبت به میکروکنترلر هایی مثل AVR خیلی کمتر است ، پین های میکروکنترلر های AVR عموما حدود ۲۰ میلی آمپر میتوانند به مدار بدهند .

بیشتر بخوانید...  راه اندازی دات ماتریس 8*8 با استفاده از آردوینو

 

مدولاسیون پهنای پالس ( PWM ) :

مدولاسیون پهنای پالس یا همان PWM در خیلی از پست های سایت ما توضیح داده شده است .

 

 

در مدار بالا یک کلید را میبینید که میتواند جریان را قطع و وصل کند . اگر این کلید نیم ثانیه وصل باشد و نیم ثانیه قطع باشد میتوان گفت در کل مدت زمان روشن و خاموش شدن ، به طور میانگین نصف ولتاژ باتری به ال ای دی میرسد . این همان دیوتی سایکل ( Duty Cycle ) است . دیتوی سایکل برابر است با مدت زمان روشن بودن به کل مدت زمان روشن و خاموش بودن .

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

Duty Cycle = (0.5/ (0.5+0.5)) = 50%

اگر ۰٫۲ ثانیه روشن باشد و ۰٫۸ خاموش باشد ، دیوتی سایکل ۲۰% خواهد شد . دیوتی سایکل ضربدر ولتاژ باتری ، ولتاژی است که به طور میانگین به ال ای دی میرسد . در این مثال فرکانس ما یک هرتز است . میتوان فرکانس را افزایش داد یعنی این عمل روشن و خاموش شدن به تعداد بیشتری در یک ثانیه انجام شود ، مثلا ۵۰ بار در ثانیه .

سروو موتور و PWM :

یک سروو موتور ترکیبی از یک موتور DC ، سیستم کنترل موقعیت و چرخ دنده است . سروو موتور در دنیای امروز کاربرد فراوان دارد و در ابعاد و توانایی های مختلف تولید شده اند . ما در این آموزش از سروو موتور SG90 استفاده کرده ایم . سروو موتور SG90 یک سروو موتور ۱۸۰ درجه است و بین ۰ تا ۱۸۰ درجه می تواند بچرخد . موقعیت شفت سروو موتور توسط پهنای پالس PWM تعیین می شود .

سروو موتور ها معمولا دارای سه سیم هستند ؛ قهوه ای ، قرمز و زرد ( یا سفید ) . سیم قهوه ای به زمین وصل می شود ، قرمز به ولتاژ مثبت وصل می شود و زرد به سیگنال PWM وصل خواهد شد .

 

فرکانس پالس PWM برای سروو موتور های مختلف می تواند متفاوت باشد . برای سروو موتور SG90 باید ۵۰ هرتز باشد . اگر از سروو موتور دیگری استفاده می کنید می توانید با رجوع به دیتاشیت آن موتور ، فرکانس مناسب را ببینید . در جدول زیر موقعیت سروو رو برای ۳ دیوتی سایکل مختلف می بینید .

بیشتر بخوانید...  پروژه ی کنترل موتور براشلس دی سی بدون سنسور با آردوینو و IR2101 به همراه کد

 

POSITION

DUTY RATIO

۰º

۲٫۵

۹۰º

۷٫۵

۱۸۰º

۱۲٫۵

 

قطعات مورد نیاز این پروژه :

– تعدادی سیم

– سروو موتور SG90

– خازن ۱۰۰۰ میکروفاراد

– برد رزبری پای

– بردبورد

 

شماتیک مدار :

قطعات ما طبق شماتیک مدار زیر به هم وصل می شوند .

 

دلیل گذاشتن خازن ۱۰۰۰ میکروفارد بین مثبت و منفی این است که جریان کشی سروو موتور ما گاهی اوقات زیاد می شود و همین امر باعث خاموش شدن رزبری پای می شود .

 

توضیحات برنامه :

خب همه چیز را وصل کرده ایم و حالا میتونیم برد رزبری پای را روشن کرده و پایتون را اجرا کنیم . چند تا از دستورات مهم برنامه را توضیح میدهیم .

در ابتدای برنامه فایل GPIO را از کتابخانه فراخوانی میکنیم . این کتابخانه برای فعال سازی پین های ورودی خروجی رسپبری پای است .

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

import RPi.GPIO as IO

برای اشاره کردن به پین های رسپبری پای میتونیم از شماره پایه ان یا شماره GPIO آن استفاده کنیم .

IO.setmode (IO.BCM)

پین مورد نظر خود را به عنوان خروجی تعریف میکنیم . که از این پین خروجی PWM میگیریم .

IO.setup(19,IO.IN)

حالا باید خروجی PWM خود را تنظیم کنیم .

p = IO.PWM(output channel , frequency of PWM signal)

در دستور بالا کانال و فرکانس سیگنال PWM را در برد رسپبری پای تنظیم میکنیم . P یک متغیر است . ما از GPIO19 استفاده کرده ایم و فرکانس PWM را ۵۰ هرتز گذاشته ایم . این فرکانس برای سروو موتور SG90 انتخاب می شود .

در دستور زیر سیگنال PWM شروع به کار میکند . در این خط ما دیوتی سایکل یا همان نرخ روشن بودن را مشخص میکنیم . دیوتی سایکل ۰ به معنی این است که ۰% زمان روشن است ، دیوتی سایکل ۳۰ به معنی روشن بودن در ۳۰ % زمان است و … .

p.start(DUTYCYCLE)

حلقه While 1 یک حلقه بی نهایت است که مدام اجرا میشود .

کدهای برنامه را از لینک زیر می توانید دانلود کنید .

 

دانلود فایل

دیدگاه‌ها (0)

*
*