به نام خدا
آموزش پروژه محور رسپبری پای – جلسه هفتم کنترل استپ موتور
در این جلسه از آموزش پروژه محور رسپبری پای میخواهیم یک موتور پله ای ( استپر موتور ) را توسط برد رسپبری پای راه اندازی کنیم و سرعت آن را کنترل کنیم .
همان طور که از اسم این موتور مشخص است ، چرخش این موتور ها به صورت پله به پله و استپ استپ است . موتور های پله ای انواع مختلفی دارد که ما در این جلسه از یکی از رایج ترین های آن ها که تک قطبی است استفاده میکنیم . نحوه کار کردن با این موتور مانند موتور DC که در جلسه قبل گفته شد نیست .
برای چرخاندن شفت استپ موتور باید چهار سیم پیچ آن را به ترتیب ولتاژ دهیم . برای چرخاندن استپ موتور در این چهار گام باید پالس ولتاژ را توسط یک مدار راه انداز به موتور داد . این مدار راه انداز ، دستور های منطقی را از برد رسپبری پای دریافت میکند . توسط کنترل این دستور های منطقی میتوانیم توان رسیده به سیم پیچ های استپ موتور را کنترل کنیم و در نتیجه سرعت ان را کنترل کنیم .
برای توضیحات مربوط به پین های رسپبری پای به جلسه های ابتدایی این آموزش های مراجعه کنید .
بر روی برد رسپبری پای ولتاژ ۵ ولت ( پین ۲ و ۴ ) و ۳٫۳ ولت ( پین ۱ و ۱۷ ) برای اتصال به ماژول ها و سنسور ها وجود دارد . این پین ها به طور موازی با پاور پردازنده قرار دارند بنابراین کشیدن جریان زیاد از این پین ها بر روی پردازنده تاثیر میگذارد . از پین ۳٫۳ ولت میتونیم با خیال راحت ۱۰۰ میلی آمپر بکشیم . برد های رسپبری پای توانایی جریان دهی بیشتر از ۱۰۰ میلی آمپر را از ۵ ولت و ۳٫۳ ولت خود را ندارند ولی موتور ما جریان بیشتری خواهد کشید همچنین موتور ما ۹ ولت است و نمیتوانیم از ولتاژ هایی که رسپبری پای برای ما فراهم میکند استفاده کنیم . بنابریان نیاز به یک منبع تغذیه دوم داریم که ما در این جلسه از یک باتری ۹ ولت استفاده میکنیم . برای اینکه ببینید استپ موتور شما چند ولت است مدل آن را در اینترنت سرچ کنید . برای اینکه بتوانیم ولتاژ باتری را برای استپ موتور کنترل کنیم نیاز به یک مدار راه انداز داریم که دستورات را از برد رسپبری پای بگیرد .
قطعات مورد نیاز :
ما از برد رسپبری پای ۲ مدل B استفاده میکنیم ، همان طور که در جلسه های پیش گفته شد کار با این برد با برد های دیگر رسپبری پای به خصوص رسپبری پای ۳ فرق چندانی ندارد . سیستم عامل ما رسپبین میباشد . زبان برنامه نویسی ما هم پایتون میباشد .
سایر قطعاتی که نیاز داریم به شرح زیر است :
- تعدادی سیم
- سه عدد مقاومت ۲۲۰ اهم یا یک کیلو اهم
- استپ موتور
- دو عدد میکروسوئیچ
- چهار عدد ترانزیستور ۲N2222
- چهار عدد دیود ۱N4007
- خازن ۱۰۰۰ میکرو فاراد
- بردبورد
توضیحات مدار :
استپ موتور ما ۲۰۰ گام دارد که ۳۶۰ درجه را تکمیل میکند یعنی هر گام ۱٫۸ درجه دارد . برای راه اندازی یک استپ موتور چهار مرحله ای نیاز داریم تا ۴ پالس منطقی به مدار راه انداز موتور بدهیم . در این موتور ، هر گام یک چرخش ۱٫۸ درجه ای ایجاد میکند بنابراین برای کامل شدن یک سیکل چرخش نیاز به ۲۰۰ پالس داریم . در نتیجه میتوان گفت ۲۰۰ تقسیم بر ۴ یعنی ۵۰ سیکل منطقی نیاز داریم تا موتور یک دور چرخش خود را کامل کند .
ما هر کدام از این چهار کویل ( همان سیم پیچ های موتور ) را توسط یک ترانزیستور NPN مدل ۲N2222 راه اندازی میکنیم . این ترانزیستور ها پالس منطقی را از رسپبری پای میگیرد و کویل مربوطه را راه اندازی می کند . چهار ترانزیستور ، چهار پالس منطقی را از برد رسپبری پای به کویل ها اعمال میکنند .
هنگام قرار دادن ترانزیستور ها حواستان به پایه ها و نحوه قرار گیری باشد که برد آسیب نبیند . موتور ها هنگام راه اندازی یک جریان القایی معکوس ایجاد میکنند برای جلوگیری از آسیب دیدن مدار توسط این جریان معکوس از دیود استفاده کرده ایم . همچنین برای جلوگیری از نوسان ولتاژی که به مدار می آید ، یک خازن سر راه منبع تغذیه خود ( باتری ) قرار داده ایم .
توضیح عملکرد برنامه :
حالا که مدار ما آماده است ، برد رسپبری پای را روشن میکنیم و برنامه را در آن میریزیم .
چند دستور مهم برنامه را توضیح میدهیم .
ابتدا فایل GPIO را از کتابخانه فراخوانی میکنیم . تابع زیر ، پین های GPIO ( ورودی و خروجی ) رسپبری پای را فعال میکند . نام GPIO را به IO تغییر میدهیم .
import RPi.GPIO as IO
برای اشاره کردن به پین های رسپبری پای میتونیم از شماره پایه ان یا شماره GPIO آن استفاده کنیم .
IO.setmode (IO.BCM)
چهار عدد از پین های ورودی خروجی را به عنوان خروجی برای چهار کویل استپ موتور تعریف میکنیم .
IO.setup(5,IO.OUT) IO.setup(17,IO.OUT) IO.setup(27,IO.OUT) IO.setup(22,IO.OUT)
پین های GPIO26 و GPIO19 را به عنوان ورودی تعریف میکنیم . میکروسوئیچ های ما به همین پین ها وصل می شود .
IO.setup(19,IO.IN) IO.setup(26,IO.IN)
اگر شرط داخل پرانتز درست بود دستورات داخل حلقه یک بار اجرا میشوند . بنابراین اگر GPIO شماره ۲۶ ، low شود دستورات داخل حلقه یک بار اجرا میشوند و اگر این پین low نشود دستورات داخل حلقه اجرا نمیشود .
if(IO.input(26) == False):
دستور زیر ، حلقه را ۱۰۰ بار اجرا می کند . مقدار x از ۰ تا ۹۹ افزایش می یابد .
While 1 : این دستور برای حلقه بی نهایت استفاده می شود . با این دستور جملات داخل حلقه مدام اجرا می شوند .
دو میکروسوئیچ موجود در مدار یکی برای افزایش تاخیر بین چهار پالس و دیگری برای کاهش تاخیر بین چهار پالس استفاده می شود . واضح است که هر چه تاخیر بیشتر شود سرعت کاهش می یابد و هر چه تاخیر به صفر نزدیک تر شود سرعت افزایش می یابد .
کد های برنامه :
برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .
دانلود فایل
پایان جلسه هفتم
تا جلسه بعد خدا نگهدار
دیدگاهها (0)