فهرست مطالب:
تصویری: کنترل موقعیت زاویه ای موتور پله ای 28BYJ-48 با آردوینو و جوی استیک آنالوگ: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
این یک طرح کنترل موتور پله ای 28BYJ-48 است که من توسعه داده ام تا به عنوان بخشی از پروژه پایان نامه سال آخر خود استفاده کنم. من قبلاً ندیده بودم که این کار را انجام دهم ، بنابراین فکر کردم آنچه را که کشف کردم بارگذاری کنم. امیدوارم این به شخص دیگری در خارج کمک کند!
این کد اساساً به یک موتور پله ای اجازه می دهد تا موقعیت زاویه ای یک جوی استیک آنالوگ را "کپی" کند ، یعنی اگر جوی استیک را به جلو فشار دهید ، موتور به سمت "شمال" اشاره می کند. جوی استیک را به سمت غرب فشار دهید ، موتور به نقطه ای در همان جهت می چرخد.
برای اجرای من ، من نیاز داشتم که اگر جوی استیک رها شود ، یعنی موقعیت زاویه ای نداشته باشد ، موتور به جهت "خانه" بازگردد. جهت خانه به سمت شرق است و موتور (یا به طور اجمالی هر نشانگر / دستگاهی را که به شفت خروجی وصل کرده اید!) نیز هنگام روشن شدن باید به این جهت باشد.
تدارکات
آردوینو اونو یا مشابه آن
تخته نان و انتخاب سیم های بلوز (مرد به مرد ، مرد به زن)
منبع تغذیه 5 ولت
ماژول جوی استیک آنالوگ (در حالت ایده آل با یک دکمه فشاری لحظه ای ، استراحت راحت تر در موقعیت "خانه" را آسان می کند.
موتور پله ای 28BYJ-48 و درایور پله ULN2003
قلم ، کاغذ و blu-tac (یا هر دستگاه اشاره گر دیگری برای اتصال به موتور!)
مرحله 1: مرحله 1: راه اندازی
موتور پله ای را به راننده پله وصل کنید و پین ها را به صورت زیر وصل کنید:
IN1 - پین 8 آردوینو
IN2 - پین 9 آردوینو
IN3 - پین 10 آردوینو
IN4 - پین 11 آردوینو
منبع تغذیه 5 ولت خود را به ریل های تغذیه روی تخته نورد خود متصل کرده و ورودی های 5V ULN2003 را به ریل های تغذیه وصل کنید. ریل زمینی را با آردوینو خود به زمین متصل کنید.
برای جوی استیک ، موارد زیر را وصل کنید:
سوئیچ پین - پین آردوینو 2
محور X - Arduino A0 (آنالوگ در 0)
محور Y - آردوینو A1
+5V - خروجی آردوینو 5V
GND - آردوینو GND
در نهایت سطح تخته نان خود را به پین دیگر Arduino GND وصل کنید
مرحله 2: مرحله 2: توضیح کد
من کد کامل آردوینو را برای بارگیری و استفاده شما قرار داده ام. اما تمام تلاش خود را می کنم تا قسمت های مربوطه را در اینجا توضیح دهم.
نظریه پشت این کد این است که فضای اشغال شده توسط جوی استیک به یک نمودار تقسیم می شود و 0 ، 0 در مرکز آن قرار دارد. با این حال ورودی های جوی استیک در (تقریبا) 512 در مرکز قرار دارند ، بنابراین برای غلبه بر این دو تابع برای "صفر کردن" مقدار خوانده شده از محور X و Y استفاده می شود. بسته به منبع تغذیه ای که استفاده می کنید ، ممکن است لازم باشد مقادیر عملکردهای ZeroX و ZeroY را تغییر دهید تا جوی استیک شما هنگام استراحت یک عدد قابل اعتماد از 0 را نشان دهد.
وقتی مقادیر X ، Y خوانده می شوند ، ابتدا با استفاده از تابع atan2 () در کتابخانه math.h به رادیان تبدیل می شوند. توضیح این تابع خارج از محدوده این دستورالعمل است ، اما لطفاً آن را جستجو کنید - این یک ترفند نسبتاً ساده هندسی است!
در نهایت ، برای سهولت زندگی برای ما که قبلاً در درجه کار می کردیم تا rad ، مقدار rad محاسبه شده توسط atan2 () به درجه تبدیل می شود.
در بالای حلقه قطعه کوچکی از کد قرار دارد که به شما امکان می دهد روی دکمه لحظه ای روی جوی استیک کلیک کنید تا مکان "خانه" منتقل شود. این در هنگام آزمایش کد فوق العاده مفید بود ، اما من آن را در آنجا گذاشتم زیرا می بینم که چگونه می تواند در برخی موارد مفید باشد.
حالا وارد قسمت اصلی کد شوید! ما با خواندن جوی استیک X ، مختصات Y را دو بار با تأخیر 10 میلی ثانیه از هم جدا می کنیم و سپس بررسی می کنیم که آیا آنها یکسان هستند - من متوجه شدم که جوی استیک گاه به گاه قرائت های پراکنده را انجام می دهد ، و این تاخیر جزئی برای متوقف کردن چرخش موتور بر اساس این موارد کافی بود. به همچنین این تاخیر به اندازه کافی کوتاه است که به نظر نمی رسد با ورودی های عمدی تداخل داشته باشد.
بقیه کد ها کاملاً خود توضیحی هستند و من تمام تلاش خود را برای مستندسازی آن انجام داده ام. مجموعه ای از گزاره های IF زاویه جوی استیک فعلی را با زاویه موتور مقایسه می کنند و موتور را به آن زاویه منتقل می کنند. 28BYJ-48 دارای 5.689 مرحله در درجه است ، بنابراین به همین دلیل است که ما حرکت مورد نیاز را در این عدد به ظاهر عجیب ضرب می کنیم!
قسمتی از کد که بیشترین توضیح را می طلبد ، چیزی است که من آن را "پرونده جمع بندی" نامیده ام. حتی در آنکه جوی استیک و موتور در مثال +175 درجه ، و جوی استیک متعاقباً به -175 درجه (حرکتی تنها 10 درجه بر روی جوی استیک ، از شمال غرب به جنوب غرب) حرکت کرد ، موتور 350 درجه در جهت نادرست حرکت می کند! برای محاسبه این مورد ، پرونده ویژه نوشته شده است.
مورد جمع بندی با بررسی اینکه موتور و جوی استیک علائم متضادی دارند ، یعنی مثبت و موتور منفی است ، شروع می شود یا برعکس. همچنین بررسی می کند که مجموع مطلق (یعنی مقادیر مثبت) جوی استیک و موتور بالای 180 درجه باشد.
اگر این دو عبارت درست باشند ، تابع بررسی می کند که آیا موتور باید در جهت عقربه های ساعت حرکت کند (مقدار موتور منفی است) یا خلاف جهت عقربه های ساعت (اگر مقدار موتور مثبت باشد).
مقادیر مطلق زاویه موتور و زاویه جوی استیک به طور کلی جمع آوری شده و برای تعیین فاصله حرکت از 360 درجه کم می شود. در نهایت ، زاویه موتور (که اکنون زاویه جوی استیک را منعکس می کند) به همین ترتیب به روز می شود.
مرحله 3: تمام شد
بنابراین ، تنها کاری که باید انجام دهید این است که کد را در Arduino خود بارگذاری کرده و اجرا کنید! برای اطلاع از نحوه عملکرد پروژه به ویدیوی بالا مراجعه کنید. این برای گیمبال دوربین ، بازوهای روباتیک و بسیاری از برنامه های دیگر مفید خواهد بود!
اگر از کد استفاده می کنید ، لطفاً به من اطلاع دهید و اگر جایی را دیدید که بتوان کد را بهبود بخشید ، خوشحال می شوم نظرات شما را بشنوم.
توصیه شده:
کنترل LED آردوینو با جوی استیک آنالوگ: 6 مرحله
کنترل LED آردوینو با جوی استیک آنالوگ: در این آموزش ما نحوه استفاده از جوی استیک آنالوگ برای کنترل LED را یاد می گیریم. یک فیلم نمایشی تماشا کنید
نحوه کنترل موتور BLDC با آردوینو و جوی استیک: 6 مرحله
نحوه کنترل موتور BLDC با آردوینو و جوی استیک: سلام دوستان در این آموزش ، من به شما نحوه کنترل موتور DC بدون برس بدون موتور BLDC با آردوینو و جوی استیک را نشان می دهم
کنترل 2 سرو با استفاده از جوی استیک آنالوگ .: 5 مرحله (همراه با تصاویر)
کنترل 2 سرو با استفاده از جوی استیک آنالوگ: سلام بچه ها ، این اولین آموزش من است و در این پست نحوه استفاده از جوی استیک آنالوگ برای کنترل Servos با استفاده از Arduino UNO را به اشتراک می گذارم. من سعی می کنم تا آنجا که ممکن است ساده توضیح دهم امیدوارم دوست داشته باشید آی تی
پروژه های سرگرم کننده با Elegoo Uno R3 Super Start Kit - کنترل جوی استیک برای موتور DC: 4 مرحله
پروژه های سرگرم کننده با Elegoo Uno R3 Super Start Kit - Joystick Control for DC Motor: در این دستورالعمل ، من سعی می کنم جهت و سرعت موتور DC را با استفاده از جوی استیک با کمک آردوینو کنترل کنم ، از اجزای موجود در Elegoo Uno R3 Super Start Kit از Amazon.com در دسترس است
آموزش آردوینو - کنترل موتور سروو با جوی استیک: 4 مرحله
آموزش آردوینو - کنترل موتور سروو با جوی استیک: در این آموزش نحوه استفاده از سروو با جوی استیک را یاد می گیریم. ما 1 سرو موتور را با 1 جوی استیک کنترل می کنیم. شما می توانید پروژه های بازوی رباتیک خود را با اشاره به این آموزش پیاده سازی کنید. البته هنگام کار از باتری / قدرت خارجی استفاده می کنیم