به نام خدا
کنترل سروو موتور با رزبری پای
امروز می خواهیم یک سروو موتور را توسط مینی کامپیوتر رزبری پای کنترل کنیم . مدل سروو موتور ما 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 عموما حدود ۲۰ میلی آمپر میتوانند به مدار بدهند .
مدولاسیون پهنای پالس ( 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 باید ۵۰ هرتز باشد . اگر از سروو موتور دیگری استفاده می کنید می توانید با رجوع به دیتاشیت آن موتور ، فرکانس مناسب را ببینید . در جدول زیر موقعیت سروو رو برای ۳ دیوتی سایکل مختلف می بینید .
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)