در این پست از سایت اِمیک, راه اندازی استپر موتور (Stepper Motor) یا موتور پله ای را با استفاده از ای سی درایور L298 و برد آردوینو UNO اموزش خواهیم داد. قبلا استپر موتور را با استفاده از میکروکنترلر AVR راه اندازی کرده بودیم که می توانید ان پست را در اینجا مشاهده کنید و همچنین در این پست توضیحاتی در مورد استپرموتورها و بخصوص استپر موتور 28BYJ-48 که ما در این پروژه از ان استفاده می کنیم داده شده که توصیه می کنم حتماً مطالعه کنید.
طبق توضیحات بالا قطعاتی که برای انجام این پروژه احتیاج داریم شامل, یک برد اردوینو که ما از برد اردوینو یونو (UNO) استفاده کرده ایم و استپر موتور 28BYJ-48 و ای سی درایور L298 که توصیه می کنم ماژول ان را تهیه کنید و همچنین یک کلید قطع و وصل که برای تعیین جهت چرخش موتور (راستگرد و چپگرد) استفاده شده است.
شماتیک پروژه آردوینو راه اندازی استپر موتور با L298 :
قبل از قرار دادن شماتیک بهتر است ابتدا با سیم های این استپر موتور و نحوه چرخش ان اشنا شویم. این استپر موتور دارای 4 فاز می باشد بنابراین دارای 4 سیم برای هر کدام از فازها و یک سیم مشترک می باشد که با توجه به برنامه نویسی ما باید این سیم مشترک را به مثبت یا منفی متصل کنیم, به تصویر زیر دقت کنید :
سیم مشترک ما سیم قرمز است که ما در این پروژه باید به منفی متصل کنیم. برای چرخش موتور ما باید 4 سیم دیگر را به انها مقادیری که در جدول زیر امده را اعمال کنیم.
معادل هگز | Orange | Yellow | Pink | Blue | مقدار |
0x01 | 0 | 0 | 0 | 1 | 1 |
0x03 | 0 | 0 | 1 | 1 | 2 |
0x02 | 0 | 0 | 1 | 0 | 3 |
0x06 | 0 | 1 | 1 | 0 | 4 |
0x04 | 0 | 1 | 0 | 0 | 5 |
0x0C | 1 | 1 | 0 | 0 | 6 |
0x08 | 1 | 0 | 0 | 0 | 7 |
0x09 | 1 | 0 | 0 | 1 | 8 |
برای اینکه استپر موتور ما یک گام که برای این موتور برابر است با 5.625 درجه بچرخد باید یک بار هر 8 مقدار گفته شده در جدول بالا به سیم های استپر موتور اعمال شود. بنابراین برای اینکه استپر موتور یک دور کامل (360 درجه) بزند باید 64 گام (5.625*64=360) حرکت کند یا به عبارت دیگر باید 64 بار هر 8 مقدار جدول بالا به سیم های استپر موتور اعمال شود.
برای چپگرد و راستگرد کردن استپر موتور فقط کافی است که مقادیر جدول بالا را برعکس به ان اعمال کنیم یعنی اگر با اعمال مقادیر 1 تا 8 استپر موتور ما راستگرد می چرخد, در صورتی که مقادیر را از اخر اعمال کنیم یعنی از 8 تا 1 استپر موتور چپگرد می چرخد.
شماتیک با استفاده از ماژول ای سی L298 :
(تصویر را ذخیره کنید تا بتونید در اندازه بزرگتر مشاهده کنید)
همانطور که در شماتیک بالا می بینید از ماژول L298 استفاده شده البته می تونید از ای سی L298 هم استفاده کنید ولی در اون صورت باید دیودها و خازن های محافظ و … را هم قرار بدید. توجه کنید که حتما جامپرهای پین های ENA و ENB ماژول (در تصویر زیر با 2 و 3 مشخص شده اند) را قرار بدید تا خروجی ماژول فعال بشه و اگر جامپری که در تصویر زیر با 1 نامگذاری شده را بذارید دیگه لازم نیست که به ترمینال VCC مازول (5V+) ولتاژی اعمال کنید. نحوه اتصال سیم های استپر موتور به ماژول هم که با توجه به رنگ هاشون به خروجی های OUT1 تا OUT4 متصل کنید. برای این پروژه حتما از منبع تغذیه با جریان دهی مناسب استفاده کنید.
برنامه پروژه آردوینو راه اندازی استپر موتور با L298 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
////////// WWW.EMIC.IR ////////// int IN1 = 4; //از خط 2 تا 5 پين هايي از اردوينو که بايد به سيم هاي استپر موتور متصل شوند را مشخص کرده ايم// int IN2 = 5; int IN3 = 6; int IN4 = 7; int steps = 0; // با مقدار اوليه صفر steps تعريف متغيري به نام// void setup() { pinMode(IN1, OUTPUT); //از خط 9 تا 12 پين هاي برد اردوينو که به استپر موتور متصل مي شوند را خروجي کرده ايم// pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(3, INPUT_PULLUP); //پين 3 اردوينو را براي اتصال به کليد ورودي مي کنيم و مقاومت پول اپ ان نيز فعال است// } void loop() { switch (steps) { //ها اتفاق مي افتد case يکي از steps که با توجه به مقدار متغير switch تعريف يک دستور شرطي از نوع// case 0: //اجرا مي شود case برابر 0 باشد اين steps در صورتي که متغير// digitalWrite(IN1, LOW); //را که همان پين 4 اردوينو است را صفر مي کند IN1 دستور روبرو پين// digitalWrite(IN2, LOW); //را که همان پين 5 اردوينو است را صفر مي کند IN2 دستور روبرو پين// digitalWrite(IN3, LOW); //را که همان پين 6 اردوينو است را صفر مي کند IN3 دستور روبرو پين// digitalWrite(IN4, HIGH); //را که همان پين 4 اردوينو است را يک مي کند IN4 دستور روبرو پين// delay(2); //ايجاد تاخير به مدت 2 ميلي ثانيه// break; //case 0 خارج شدن از// case 1: // ...اجرا مي شود وcase برابر 1 باشد اين steps در صورتي که متغير// digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH); delay(2); break; case 2: digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(2); break; case 3: digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(2); break; case 4: digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(2); break; case 5: digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(2); break; case 6: digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(2); break; case 7: digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); delay(2); break; default: //هاي بالا اتفاق نيفتد دستورات زير اجرا مي شوند case در صورتي که هيچکدام از// digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(2); break; } //زير براي راستگرد و چپگرد کردن جهت چرخش استپر موتور با توجه به وضعيت کليد تعريف شده اند if دستورات// if (digitalRead(3)) { //با هر بار اجراي دستورات بالا يکي اضافه شده و درصورتي که زده نباشد با هر بار اجراي دستورزات بالا يکي کم مي شود steps روبرو اگر کليد زده باشد متغير if طبق شرط// steps++; } else steps--; if (steps > 7) { //بزرگتر از 7 شد ان را دوباره صفر مي کند steps روبرو اگر متغير if طبق شرط// steps = 0; } if (steps < 0) { //کمتر از 0 شد مقدار ان را 7 مي کند steps روبرو اگر متغير if طبق شرط// steps = 7; } } |
توضیحات قسمت های مهم برنامه نوشته شده و عملکرد این پروژه به این صورت است که زمانی که کلید زده نشده موتور به صورت چپگرد می چرخد و با زدن کلید جهت چرخش موتور راستگرد می شود در کلیپ زیر این پروژه در عمل تست شده که می تونید مشاهده کنید. سوالات خودتون رو در قسمت نظرات مطرح کنید
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
با عرض سلام وخسته نباشید
بنده این پروژه رو راه اندازی کردم فقط موردی که دارم برا چپ و راست کردن نیاز به یک وقفه یک ثانیه ای دارم میخواستم ببینم به چه صورتی میتونم این کار رو انجام بدم؟
با تشکر
سلام
میخواستم راهنماییم کنید . اگه بخوام به جای سوییچ ، از 2 تا کلید که یکی برای چپ و دیگری برای راست گرد و فقط به اندازه 180 درجه بچرخه چه کنم ؟
ممنون میشم جواب بدید
استپ موتور ۲۴ ولت باشه چکار کنم
به پایه ای از ماژول L298 که در شماتیک بالا با 12V+ مشخص شده, بجای 5 ولت 24 بدید و دقت کنید که به پایه ی 5V+ که به هم وصل شده اند 24 ولت ندید(جامپر 1 را قرار بدید و لازم نیست بجایی متصل بشه).
باسلام و تبریک سال نو من پروژه را انجام دادم موتور صدا میکنه ولی نمی چرخه
سلام, سال نو شما هم مبارک
بررسی کنید که سیم های موتور را جابجا متصل نکرده باشد و همچنین منبع تغذیه شما جریان دهی مناسبی داشته باشد