درایور موتور پروژه های آردوینو

راه اندازی موتور آرمیچر DC با شیلد L298P آردوینو Arduino

arduino motor shield digispark
نوشته شده توسط شهاب کمالی

موتور آرمیچر DC چیست؟

موتور کلاسیک جریان مستقیم دارای آرمی‌چری از آهنربای الکتریکی است. یک سوییچ گردشی به نام کموتاتور جهت جریان الکتریکی را در هر سیکل دو بار برعکس می‌کند تا در آرمیچر جریان یابد و آهنرباهای الکتریکی، آهنربای دائمی را در بیرون موتور جذب و دفع کنند. سرعت موتور DC به مجموعه‌ای از ولتاژ و جریان عبوری از سیم پیچ‌های موتور و بار موتور یا گشتاور ترمزی، بستگی دارد. سرعت موتور جریان مستقیم وابسته به ولتاژ و گشتاور آن وابسته به جریان است. معمولاً سرعت توسط ولتاژ متغیر یا عبور جریان و با استفاده از تپ‌ها (نوعی کلید تغییر دهنده وضعیت سیم‌پیچ) در سیم‌پیچی موتور یا با داشتن یک منبع ولتاژ متغیر، کنترل می‌شود. بدلیل اینکه این نوع از موتور می‌تواند در سرعت‌های پایین گشتاوری زیاد ایجاد کند، معمولاً از آن در کاربردهای کششی نظیر لوکوموتیوها استفاده می‌کنند.

اما به هرحال در طراحی کلاسیک محدودیت‌های متعددی وجود دارد که بسیاری از این محدودیت‌ها ناشی از نیاز به جاروبکهایی برای اتصال به کموتاتور است. سایش جاروبک‌ها و کموتاتور، ایجاد اصطکاک می‌کند و هر چه که سرعت موتور بالاتر باشد، جاروبک‌ها می‌بایست محکمتر فشار داده شوند تا اتصال خوبی را برقرار کنند. نه تنها این اصطکاک منجر به سر و صدای موتور می‌شود بلکه این امر یک محدودیت بالاتری را روی سرعت ایجاد می‌کند و به این معنی است که جاروبک‌ها نهایتاً از بین رفته نیاز به تعویض پیدا می‌کنند. اتصال ناقص‌الکتریکی نیز تولید نویز الکتریکی در مدار متصل می‌کند impotenciastop.pt/. این مشکلات با جابجا کردن درون موتور با بیرون آن از بین می‌روند، با قرار دادن آهنرباهای دائم در داخل و سیم پیچ‌ها در بیرون به یک طراحی بدون جاروبک می‌رسیم. منبع ویکیپدیا

DC_motor

DC_motor

در این آموزش قصد داریم نحوی راه اندازی موتور دی سی به کمک شیلد L298P آردوینو را آموزش دهیم 🙂

 


شیلد L298P آردوینو


شیلد درایور موتور L298 توسط کمپانی LGS برای درایو کردن همزمان ۲ موتور با توان‌های بالا طراحی شده است. این شیلد قابلیت درایو کردن ۲ موتور به صورت همزمان با جریان هر کدام ۲ آمپر را دارا می‌باشد. در این شیلد از ۸ دیود شاتکی برای محافظت از درایور در مقابل جریان برگشتی استفاده شده است. علاوه بر کنترل ۲ موتورDC ، این درایور قابلیت کنترل ۱ استپ موتور را نیز درا می‌باشد. شیلد درایور موتور L298 بر اساس درایور معروف  L298  برای درایو کردن همزمان ۲ موتور با توان‌های بالا طراحی شده است.این شیلد دارای ۴ خروجی با قابلیت درایو کردن ۲ عدد موتور DC با حدکثر جریان ۲ آمپر می‌باشد.به وسیله‌‌ی این شیلد نیز می‌توان ، یک عدد استپر را راه اندازی نمود. توسط این برد امکان تغییر جهت چرخش موتور و کنترل سرعت از طریق مدولاسیون PWM و PPL  وجود دارد. در ادامه آموزش با مرجع تخصصی آردینو ، دیحی اسپارک همراه باشید.

 

سخت افزار مورد نیاز

آردوینو UNO

شیلد L298P آردوینو

 

اتصالات

شیلد را روی پین های آردوینو سوار کنید و موتور را به یکی از پین های A یا ‌B متصل کنید. خب بریم سراغ راه اندازی و کد نویسی شیلد، آماده اید؟

نکته:بخاطر پایین بودن توان آردوینو پیشنهاد میشود شیلد را به یک منبع تغذیه حداقل ۲آمپر متصل کنید.

به تصویر زیر دقت کنید اتصال پین های آردوینو برای راه اندازی موتور را نمایش میدهد:

l298p-port-map-arduino

l298p-port-map-arduino

 


توضیحات موتور آرمیچر DC


اگر پین D12 روی HIGH باشد موتور A در یک جهت و اگر روی LOW باشد در جهت دیگر حرکت میکند.

اگر پین D13 روی HIGH باشد موتور ‌B در یک جهت و اگر روی LOW باشد در جهت دیگر حرکت میکند.

پین های D3 و D11 جهت تنظیم سرعت موتور:

جهت تنظیم سرعت موتور A از پین D3 که عددی بین ۰تا ۲۵۵ میگیرد به پین به صورت PWM وارد میکنیم.

جهت تنظیم سرعت موتور B از پین D11 که عددی بین ۰تا ۲۵۵ میگیرد به پین به صورت PWM وارد میکنیم.

از پین D9 و D8 نیز برای توقف موتور های استفاده میکنیم:

 


کد نویسی موتور آرمیچر DC


 

int pwm_a = 3;  //PWM control for motor outputs 1 and 2 is on digital pin 3
int pwm_b = 11;  //PWM control for motor outputs 3 and 4 is on digital pin 11

int dir_a = 12;  //direction control for motor outputs 1 and 2 is on digital pin 12
int dir_b = 13;  //direction control for motor outputs 3 and 4 is on digital pin 13

void setup()
{

pinMode(pwm_b, OUTPUT);
pinMode(dir_b, OUTPUT);
}


void loop()
{
//
digitalWrite(dir_b, LOW);  //Set motor direction, 3 high, 4 low
analogWrite(pwm_b,255);
delay(1000);
digitalWrite(dir_b, HIGH);
analogWrite(pwm_b,150);
delay(1000);
}

شرح برنامه:

در قسمت اول برنامه به پورت ها نام داده ایم که در ادامه از نام آنها استفاده کنیم، در setup برنامه پورت های ۱۱, ۳ را برای راه اندازی موتور B به صورت output مشخص کردیم.

در قسمت loop برنامه موتور B را در یک جهت با سرعت ۲۵۵ حرکت دادیم سپس جهت موتور را عوض کردیم و سرعت را کم کردیم.

digitalWrite(dir_b, LOW);  //Set motor direction, 3 high, 4 low
analogWrite(pwm_b,255);
delay(1000);
digitalWrite(dir_b, HIGH);
analogWrite(pwm_b,150);
delay(1000);

با استفاده از مثال ها خودتان چند مثال از عوض کردن جهت موتور های A و B و کم زیاد کردن سرعت آن با اعمال پالس بنویسید تا کاملا با نحوه کار آن آشنا شوید.

 

درباره نویسنده

شهاب کمالی

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

  • سلام

    تشکر از اطلاعات مفید شما

    لطفا در خصوص سروو موتورها نحوه اتصال ۴ سیم را با شکل نشان دهید. از لطف شما سپساسگزارم.

    • با سلام
      ضمن تشکر از توجه شما، نیازی به اطلاعات خاصی نیست. از روی همین شیلد میتوانید اتصالات را برقرار کنید.

    • با سلام
      ضمن تشکر از توجه شما، جهت دریافت راهنمایی کامل لطفا سوالتان را دقیق تر بیان کنید.

  • سلام راستش من برای ی پروژه به موتور نیاز دارم و متوجه شدم بصورت مستقیم نمیشه ازشون استفاده کرد و باید از شیلدی چیزی استفاده کرد:
    شیلد L298P آردوینو پیشنهادی بود ک دیدم ولی قیمتش واقعا زیاده و بصرفه نیست من گشتم و
    ماژول درایور موتور دو کاناله با تراشه TB6612FNG رو پیدا کردم با قیمت تقریبا یک چهارم میخاستم ببینم فرقشون چیه و اینکه با اردیونو میشه از این ماژول استفاده کرد برای کنترل دو موتور DC (منظورم همون ارمیچر های ماشین های بازی هست) با این امکان که بشه حالت چرخش رو هم کنترل کرد؟!

    • با سلام
      ضمن تشکر از توجه شما، برای دانستن تفاوت این دو برد باید به دیتاشیت هر کدام مراجعه کنید. هر دو ماژول با آردوینو کارایی دارند، همچنین توانایی مدیریت موتور DC را هم دارند.

  • با سلام و تشکر بابت مطالب ارزشمندتون که رایگان در اختیار همه قرار میدید و پاسخگو هم هستید.
    من برای کنترل دو موتور dc این شیلد رو گرفتم . امروز که میخواستم یه موتور گیربکس رو باهاش کنترل کنم هم با آداپتور ۱۲ ولت درایور رو تغذیه کردم و هم آردوینو رو به لب تاب متصل کردم و در همون لحظه لب تاب خاموش شد و دیگه روشن نشد. به نظر شما باعث سوختنش شده؟

    • با سلام
      با تشکر از شما
      لطفا موارد را از طریق یک کامنت دنبال کنید. با توجه به اینکه آردوینو دارای حفاظت مدار است، ارتباطی با آن نخواهد داشت.

  • با سلام و تشکر بابت مطالب ارزشمندتون که رایگان در اختیار همه قرار میدید و پاسخگو هم هستید.
    من برای کنترل دو موتور dc این شیلد رو گرفتم . امروز که میخواستم یه موتور گیربکس رو باهاش کنترل کنم هم با آداپتور ۱۲ ولت درایور رو تغذیه کردم و هم آردوینو رو به لب تاب متصل کردم و در همون لحظه لب تاب خاموش شد و دیگه روشن نشد. به نظر شما باعث سوختنش شده؟

    • با سلام
      با تشکر از شما
      لطفا موارد را از طریق یک کامنت دنبال کنید. با توجه به اینکه آردوینو دارای حفاظت مدار است، ارتباطی با آن نخواهد داشت.

      • ممنون بابت پاسختون. چون جامپر روی درایور رو برنداشته بودم و تغذیه آردوینو هم از آداپتور تامین میشد نباید اونو به لب تاب متصل میکردم. گفتم که کسی دیگه این اشتباهو نکنه. لبتاب هم که فیوزاش سوخته شاید بخاطر نوسان ولتاژ ورودی بوده.
        پوزش بابت درج دوباره ی نظر. نظر رو هم تو قسمت L298N نوشته بودم بعدا متوجه شدم و زیر این پست مرتبط نوشتم.

        • با سلام
          از اینکه نظر و تجربه خود را با دیگر کاربران به اشتراک می‌گذارید، صمیمانه سپاسگزارم.