
بنام خدا
پروژه کنترل استپ موتور با استفاده از پتانسیومتر
موتورهای پله ای به طور روز افزون موقعیت خود را در دنیا ی الکترونیک پیدا می کنند. از یک دوربین نظارتی معمولی تا یک ماشین/ربات cnc پیچیده . این استپ موتور ها از آنجا که کنترل دقیقی را فراهم می اورند همه جا استفاده میشوند. در این آموزش ما درباره ی یک استپ موتور ارزان و رایج و در دسترس ۲۸-BYJ48 و چگونگی راه اندازی ان توسط اردوینو وبا استفاده از ماژول درایور ULN2003 یاد میگیریم.
در پروژه ی قبلی استپ موتور را به وسیله آردوینو راه اندازی کردیم که در انجا شما میتوانستید با واردکردن زاویه در سریال مانیتور اردوینو استپ موتور را به چرخش در اورید. در این پروژه ما به وسیله ی پتانسیومتر و اردوینو موتور را به چرخش در می اوریم. به این صورت که اگر شما پتانسیومتر را در جهت عقربه های ساعت حرکت دهید استپ موتور نیز در همان جهت خواهد چرخید.
موتور های پله ای (استپ موتور ها )
حالا بیایید نگاهی به استپ موتور ۲۸-BYJ48 بیاندازیم .بر خلا ف موتور های dc این گونه موتور ها پنج سیم در رنگ های مختلف دارند که علت آن در ادامه خواهد امد برای درک این موضوع ما باید در ابتدا بدانیم یک استپ موتور چگونه کار میکند و ویژگی ان چیست . اول از همه اینکه استپ موتور ها به طور پیوسته نمیچرخند با توجه به کلمه پله در موتور پله ای انها پله پله حرکت میکنند یعنی انها در هر لحظه فقط یک گام حرکت میکنند. این موتورها دارای دنباله ای از سیم پیچ های موجود در آنها هستند و این سیم پیچ ها باید به گونه ای خاص انرژی داده شوند تا باعث چرخش موتور شوند هنگامی که هر سیم پیچ انرژی می گیرد، موتور یک گام حرکت می کند و یک دنباله ای از انرژی، باعث گام های متوالی و در نتیجه چرخش موتور می شود اجازه دهید نگاهی به سیم پیچ های موجود در داخل موتور بیاندازیم تا دقیقا بدانیم که این سیم ها از کجا می آیند.
همانطور که مشاهده می شود موتور پنج سر سیم دارد و چهار سیم پیچ داریم که باید دریک بازه زمانی مشخصی تحریک شوند . سیم قرمز با ۵ ولت تغذیه می شود و چهار سیم باقیمانده به زمین وصل می شوند برای تحریک سیم پیچ مربوط به ان سیم. ما از میکروکنترلر هایی مانند اردوینو برای به طور منظم تحریک کردن هر کدام از سیم پیچ ها استفاده میکنیم و کاری می کنیم که موتور تعداد گام های مورد نظر ما را بپیماید.
در پایین نگاهی به مشخصات موتور با توجه به دیتاشیت آن می اندازیم.
اطلاعات زیادی در عکس وجود دارد اما چیز هایی که ما برای پیاده سازی برنامه لازم داریم را در ادامه بیان میکنیم اولین چیزی که باید بدانیم این است که ولتاژ تغذیه موتور ۵ ولت است و به وسیله ی سیم قرمز تغذیه می شود همچنین این موتور چهار فاز دارد (به دلیل وجود چهار سیم پیچ) همچنین نسبت چرخش موتور ۱:۶۴ داده شده است این بدین معنی است که برای چرخش کامل شفتی که در بیرون موتور دیده می شود باید شفت داخل موتور ۶۴ گام طی کند این به دلیل دنده هایی است که بین موتور و شافت خارجی متصل می شوند، این چرخ دنده ها در افزایش گشتاور کمک می کند.
یکی دیگر از اطلاعات مهم زاویه ای که در هر گام طی می شود است که در این مدل موتور ۵٫۶۲۵ درجه میباشد این به این معناست که وقتی موتور در ۸ مرحله تحریک میشود ، شافت خارجی را۵٫۶۲۵ درجه برای هر گام حرکت میدهد و در نهایت ۶۴ گام (۳۶۰=۶۴*۵٫۶۲۵) باعث چرخش یک دور شافت خارجی می گردد.
چرا ما به ماژول های درایور برای موتورهای پله نیاز داریم؟
اکثر موتورهای پله فقط با کمک یک ماژول درایور کار می کنند.این به این دلیل است که میکرو کنترلر (در این مورد آردوینو ) نمیتواند جریان کافی برای راه اندازی موتور را تامین کند برای همین از ماژول هایی مانند ULN2003 برای درایو کردن موتور استفاده می کنیم انواع مختلفی از ماژول های درایور وجود دارد که بهترین انها آن است که متناسب با مشخصات موتور باشد، مهمترین قاعده این ماژول ها این است که بتواند جریان کافی را برای کار کردن موتور تولید کند.
دیاگرام مدار برای چرخش موتور پله ای به وسیله پتانسیومتر
در این پروژه از موتور پله ای ۲۸BYJ-48 و ماژول درایور ULN2003 استفاده کرده ایم. برای تحریک چهار رشته از موتور پله، ما از پین های دیجیتالی ۸،۹،۱۰ و ۱۱ استفاده می کنیم تغذیه ماژول از ۵ ولت اردوینو گرفته شده است . پتانسیومتر به پایه A0 وصل شده به منظور تنظیم و چرخاندن موتور است. اما بهتر است که وقتی روی موتور باری قرار داده م شود از منبع تغذیه جانبی استفاده شود همچنین GND درایور همان GND اردوینو می باشد.
کد های پروژه کنترل استپ موتور با استفاده از پتانسیومتر
قبل از شروع کردن برنامه نویسی در آردوینو اجازه دهید ما درک کنیم که چه چیزی باید در داخل برنامه رخ دهد. همانطور که پیشتر گفته شد، ما از روش توالی ۴ مرحله ای استفاده خواهیم کرد تا چهار مرحله برای انجام یک چرخش کامل انجام شود.
ماژول درایور دارای چهار LED است که با استفاده از آن ما می توانیم بررسی کنیم که کدام سیم پیچ درچه زمانی مورد استفاده قرار می گیرد. ویدئو کامل را می توان در پایان این آموزش پیدا کرد.
در این آموزش ما قصد داریم آردوینو را به طوری برنامه ریزی کنیم که بتوانیم با پتانسیومتر متصل به پین A0 جهت حرکت موتور را کنترل کنیم. برنامه کامل را می توان در انتهای آموزش یافت. چند خط مهم در زیر توضیح داده شده است.
تعداد مراحل در هر دور برای موتور پله ای ما ۳۲ بود؛ از این رو همانطور که در خط زیر نشان داده شده است ان را تعریف می کنیم.
#define STEPS 32
سپس شما باید پاید پایه های متصل شده به استپر موتور را به برنامه معرفی کنید
;(Stepper stepper (STEPS, 8, 10, 9, 11
نکته: ترتیب این پایه ها به صورت عمدی جا به جا شده است شما باید همان الگو را دنبال کنید، حتی اگر پین هایی را که موتور شما متصل است را تغییر دهید.
از آنجا که ما از کتابخانه Stepper Arduino استفاده می کنیم، می توانیم سرعت موتور را با استفاده از خط زیر تنظیم کنیم. این سرعت می تواند بین ۰ تا ۲۰۰ برای موتورهای پله ای ۲۸-BYJ48 باشد.
;(stepper.setSpeed(200
اکنون، برای حرکت موتور در جهت عقربه های ساعت، ما می توانیم از خط زیر استفاده کنیم.
;(stepper.step(1
برای حرکت موتور در جهت خلاف عقربه های ساعت، ما می توانیم از خط زیر استفاده کنیم.
;(stepper.step(-1
در برنامه ما باید مقدار پین آنالوگ A0 را بخوانیم و آن را با مقدار قبلی (Pval) مقایسه کنیم. اگر افزایش یابد، ما ۵ گام در جهت عقربه های ساعت حرکت دهیم و اگر کاهش یابد، ما ۵ گام در جهت عقربه های ساعت حرکت دهیم.
;(potVal = map(analogRead(A0),0,1024,0,500 ;(if (potVal>Pval ;(stepper.step(5) ;(if (potVal<Pval) ;(stepper.step(-5) ;(Pval = potVal
پروژه عملی
در نهایت سخت افزار به شکل زیر خواهد بود
اکنون، برنامه زیر را در Arduino UNO آپلود کنید و مانیتور سریال را باز کنید همانطور که قبلا بحث شده است، شما باید پتانسیومتر را برای چرخش موتورپله ای متصل کنید چرخش پتانسیومتر در جهت عقربه های ساعت موتور پله را در جهت عقربه های ساعت چرخانده و بالعکس.
امیدوارم که پروژه را درک کرده باشید و از ساخت آن لذت ببرید.
دانلود کد های پروژه :
دانلود فایل#include <Stepper.h> // Include the header file // change this to the number of steps on your motor #define STEPS 32 // create an instance of the stepper class using the steps and pins Stepper stepper(STEPS, 8, 10, 9, 11); int Pval = 0; int potVal = 0; void setup() { Serial.begin(9600); stepper.setSpeed(200); } void loop() { potVal = map(analogRead(A0),0,1024,0,500); if (potVal>Pval) stepper.step(5); if (potVal<Pval) stepper.step(-5); Pval = potVal; Serial.println(Pval); //for debugging }
سلام. من ميخواستم همين استپر موتور رو با كليد چپ گرد و راست گرد كنم ميشه مدارش و كدش رو برام بزارين اگر ممكنه. ممنون
سلام
چشم آموزشش رو داخل سایت میذاریم