در این پست از سایت اِمیک, یک پروژه اردوینو نسبتاً ساده و کاربردی قرار داده ایم که استفاده های زیادی دارد و در اینده که تصمیم داریم پروژه های رباتیک مختلفی قرار دهیم, از این پروژه استفاده خواهد شد. هدف این پروژه راه اندازی یک موتور DC به صورت چپگرد و راستگرد با استفاده از درایور L298 و همچنین کنترل سرعت ان با PWM می باشد . قبلا همین پروژه را با میکروکنترلر AVR قرار داده بودم که در انجا در مورد PWM و ای سی درایور L298 توضیح داده شد, می توانید این پست را اینجا مشاهده کنید.
شماتیک پروژه :
همانطور که در تصویر بالا مشاهده می کنید قطعات اصلی این پروژه شامل برد اردوینو UNO و ای سی L298 و موتور می باشد. سه کلید برای راست گرد , چپ گرد و توقف موتور قرار داده شده و یک پتانسیومتر که با تغییر ان سرعت موتور تغییر خواهد کرد . کلیدها توسط سه مقاومت Pull up شده اند و درنتیجه زمانی که کلید وصل نیست پین های اردوینو یک هستند و زمانی که کلید فشار داده شود پینی که کلید به ان متصل است صفر می شود.
در این پروژه ما فقط از یک موتور استفاده کردیم, بنابراین پین های مربوط به موتور B در ای سی L298 را نیاز نداریم .
برای حفاظت از قطعات مدار لازم است که پین های خروجی L298 که به دو سر موتور متصل می شوند (OUT1 و OUT2) را مانند شماتیک بالا به ۴ دیود و خازن متصل کنیم .
توجه کنید که پین ۹ ای سی L298 به ۵ ولت متصل شده و پین ۴ باید به ولتاژ مورد نیاز موتور ما (تا حداکثر ۴۶ ولت) متصل شود که ما در شماتیک بالا به ۱۲ ولت متصل کرده ایم .
پین شماره 11 اردوینو خروجی موج PWM ما هست که به پین ۶ یا ENA متصل شده است و با تولید موج های PWM مختلف سرعت موتور تغییر می کند.
نکته: ماژول ای سی 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 |
//////// WWW.EMIC.IR //////// void setup() { analogReference(DEFAULT); /*تعیین ولتاژ رفرنس برای کار با واحد انالوگ اردوینو*/ /*و 0 و 1 و 2 اردوینو A0 ورودی کردن پین های*/ pinMode(A0, INPUT); pinMode(2, INPUT); pinMode(1, INPUT); pinMode(0, INPUT); /*خروجی کردن پین های 12 و 13 اردوینو*/ pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { int i ; i = analogRead(A0) / 4.015; //اردوینو و تقسیم کردن ان بر 4.015 تا در بازه ی 0 تا 255 شود A0 خواندن مقادیر انالوگ از پین// analogWrite(11, i); /*روی پین 11 اردوینو i با توجه به مقدار PWM ایجاد موج*/ delay(50); if (digitalRead(2) == 0) /*در صورتی که کلید متصل به پین 2 اردوینو فشار داده شود موتور به صورت راستگرد می چرخد*/ { digitalWrite(12 , HIGH); digitalWrite(13 , LOW); } if (digitalRead(1) == 0) /*در صورتی که کلید متصل به پین 1 اردوینو فشار داده شود موتور به صورت چپگرد می چرخد*/ { digitalWrite(12 , LOW); digitalWrite(13 , HIGH); } if (digitalRead(0) == 0) /*در صورتی که کلید متصل به پین 0 اردوینو فشار داده شود موتور توقف می کند*/ { digitalWrite(12 , LOW); digitalWrite(13 , LOW); } } |
توضیحات در برنامه نوشته شده, اگر با دستورات تخصصی برنامه نویسی اردوینو اشنا نیستید اینجا را مطالعه کنید
برای اشنایی با پین های اردوینو UNO اینجا را مشاهده کنید
در صورتی که با نحوه پروگرام کردن برد اردوینو (ریختن برنامه روی برد) اشنا نیستید اینجا را مطالعه کنید
اگر سوالی در مورد برنامه یا هر قسمت پروژه داشتید می تونید در قسمت نظرات مطرح کنید
کلیپ شبیه سازی :
پسورد فایل زیپ : www.emic.ir
پروژه های مشابه:
نظر یادتون نره…
سلام میشه با ال 298 چهار موتور معمولی رو کنترل کرد؟
ممنـــــــــــــــــــــــــون عالی بود
متشکرم
با سلام
بنده نیاز به یک پروژه دارم ومیخواستم ببینم شما میتونید برام انجام بدید واگه میشه هزینه اون چقدر هست؟
من میخواستم با استفاده از یک آردوینو نانو وال سی دی 2*16 وموتور DC بتوانم هم سرعت موتور را کم وزیاد کنم وهم سرعت دقیق موتور هم روی نمایشگر نشان داده شود
یعنی همین پروژه ای رو که زحمت کشیدید وگذاشتید با ال سی دی هم بتوان دور موتور رو هم دید وروی اون تنظیمش کرد.
متشکرم
سلام, متاسفانه در حال حاضر بدلیل مشغله کاری این امکان وجود ندارد ولی در اینده حتما پروژه مورد نظر شما را انجام میدم و در سایت قرار خواهم داد