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

آموزش کار با درایور موتور L298N و برد آردوینو – بخش دوم کنترل سرعت موتور

L298-DC-motor-speed-control-with-arduino-Slide-pot-digispark
نوشته شده توسط پریسا پوربلورچیان

درایور موتور L298N هر درایوری ویژگی‌های منحصر به فرد خود را دارد. پیش از این راه اندازی موتورهای مختلف با درایورهای متنوع را در دیجی اسپارک منتشر کرده‌ایم. اما یکی از درایور موتورهای ساده و ارزان قیمت، که مورد توجه دانش آموزان و دانشجوها می‌باشد. درایور موتور L298N می‌باشد. تراشه این درایور خیلی قدرت و پتانسیل مناسبی ندارد. صرفا یک درایور جهت راه اندازی موتورهای ارزان قیمت و ساده است. از اینرو انتظار خیلی زیادی از این درایور نداشته باشید. در ادامه این مجموعه آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


درایور موتور L298N با هیت سینک 


درایور موتور L298N از تراشه دوبل L298 یک رگولاتور داخلی ۵ ولت ۷۸M05 تشکلیل شده است. در ساختار این درایور موتور از مدار H Bridge یا همان پل H استفاده شده است. این مدار توانایی درایور و کنترل جریان را دارد که توسط پایه PWM کنترل می‌شود. پایه PWMیا همان مدولاسیون پهنای باند کنترل مدت زمان یک پالس را انجام می‌دهد و در نتیجه ولتاژ خروجی را کنترل خواهد کرد. ولتاژ کاری درایور موتور L298 بین ۵ تا ۳۵ ولت DC است. جهت مطالعه اطلاعات بیشتر به بخش اول آموزش مراجعه کنید.

آموزش راه اندازی موتور DC با درایور موتور L298N و برد آردوینو – بخش اول

 درایور موتور L298 و برد آردوینو - دیجی اسپارک

در این آموزش توسط ولوم کشویی Slide Potentiometer، سرعت موتور DC را کنترل می‌کنیم. برای کنترل دور موتور از درایور موتور L298N استفاده شده است. با کشیدن ولوم از سمت Decreas به Increas، سرعت حرکت موتور افزایش می‌یابد.

 


ماژول ولوم کشویی Slide Pot


ماژول ولوم کشویی Slide Potentiometer شامل یک مقاومت متغیر خطی با حداکثر ۱۰ کیلو اهم است. ساختار ماژول ولوم همانند یک کلید کشویی است. هنگامی که اسلاید کشویی ماژول ولوم را از یک طرف به طرف دیگر می‌کشید، ولتاژ از ۰ ولت تا ولتاژ Vcc تعیین شده، تغییر خواهد کرد. ماژول ولوم کشویی Slide Pot دارای خروجی آنالوگ دو کاناله بین ۰ تا Vcc است. ولوم قرار گرفته بر روی ماژول حدودا در طول ۶٫۵ سانتی‌متر جا به جا شده و روان حرکت خواهد کرد. نوع ماژول به صورت خطی Linear است. ولتاژ کاری ولوم کشویی ۳٫۳ تا ۵ ولت DC است. این ماژول قابلیت راه اندازی با آردوینو  Arduino، MCU و AVR را خواهد داشت. ماژول ولوم کشویی دارای ۶ پایه است. دارای ۲ پایه Vcc و ۲ GND و دو کانال OTA و OTB است. با توجه به ساختار ماژول می‌توان از آن برای تنظیم و کنترل نور محیط، تنظیم صدای بلندگو استفاده کرد. همچنین با توجه به دو کاناله بودن ماژول ولوم کشویی Slide Potentiometer از آن برای کنترل کانال های راست و چپ در یک ربات استفاده نمود. تا به حال دو آموزش مجزا جهت راه اندازی و استفاده از ماژول ولوم کشویی در سایت منتشر شده است که از طریق لینک های زیر می‌توانید مطالعه کنید.

آموزش کار با ماژول ولوم کشویی ۱۰ کیلو اهم Slide Potentiometer و آردوینو

آموزش ساخت میکسر صوتی با ماژول ولوم کشویی Slide Potentiometer آردوینو

 

 

اتصال درایور موتور L298 به آردوینو Arduino

  • دو خروجی ترمینال ۱۲ ولت و GND درایور موتور L298N را به باتری اتصال دهید.
  • از GND آردوینو Arduino به GND درایور موتور L298N اتصال دهید.
  • پایه ENA درایور موتور L298 را به پایه ۱۰ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه IN1 درایور موتور L298 را به پایه ۸ دیجیتال آردوینو Arduino اتصال دهید.
  • پایه IN2 درایور موتور L298 را به پایه ۹ دیجیتال آردوینو Arduino اتصال دهید.

 

 

اتصال موتور DC به درایور موتور L298

  • یک قطب موتور DC را به خروجی OUT1 درایور موتور L298 اتصال دهید.
  • قطب دیگر موتور DC را به خروجی OUT2 درایور موتور L298 اتصال دهید

اتصالات ماژول درایور موتور L298 به برد آردوینو - دیجی اسپارک

 


کدنویسی درایور موتور L298N


 

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


تحلیل کد آردوینو Arduino


تعریف ورودی درایور موتور L298N

int in1 = 8; //اتصالات درایور موتور 
int in2 = 9;
int ENA = 10; // فعال کردن پایه PWM
int speedMotor; // تعریف یک متغیر برای  موتور

 

تعریف خروجی

pinMode(8, OUTPUT); // تعریف خروجی 


  pinMode(9, OUTPUT);  // تعریف خروجی 


  pinMode(10, OUTPUT); // تعریف خروجی

 

تعریف یک تابع حلقه برای موتور DC Motor

void MotorDC(){ // ساخت یک تابع برای کنترل سرعت و مسیر حرکت 


  digitalWrite(in1, LOW); // تغییر وضعیت بین دو حالت High و low جهت تغییر مسیر


  digitalWrite(in2, HIGH); // ""

 

ارسال فرمان پایه آنالوگ ولوم کشویی Slide Pot

 speedMotor = analogRead(A0); // انتخاب پایه A0 برای ولوم کشویی و ذخیره آن در یک متغیر


  analogWrite(ENA,speedMotor);// ارسال فرمان به موتور 

 

تکرار حلقه LOOP

void loop() {


 MotorDC(); // تنها یک حلقه در بالا تعریف کردیم 

}

کنترل سرعت موتور DC با درایور L298 و برد آردوینو - دیجی اسپارک

 


وسایل مورد نیاز


برد آردوینو Arduino

ماژول درایور موتور L298N

ماژول ولوم کشویی Slide Potentiometer

موتور Motor

برد بورد کوچک مخصوص کیت های DIY

 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

 


پروژه و دریافت بن ارسال رایگان


طی چند قسمت قبلی که طرح پروژه را پیاده سازی کردیم، با استقبال شما کاربران مواجه شدیم. در این سری برای اینکه گستره بیشتری از افراد بتوانند فرصت استفاده از بن خرید را داشته باشند؛ روال دیگری را در پیش گرفتیم. در این روش تصمیم گرفته‌ایم به ۱۰ نفر از کاربران بن خرید ارایه شود. برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و بسته به خلاقیت، مدار جدیدی ایجاد کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ «#دیجی_اسپارک» و «#دانشجوکیت» و «#digispark» و «#daneshjookit» منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

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

۵۲ دیدگاه

  • چراغ روی درایور من روشن نمیشه و کدها رو هم به درستی کپی کردم و ارور ندارم
    اتصالاتم کمی گیج کننده شده و میترسم به برد آسیب بزم
    خاهش میکنم سریع جواب بدین

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

    • سلام از توجه شما ممنونم.
      همانطور که در متن آموزش و کدها نوشته شده است از این دو پایه جهت فعال کردن پایه PWM استفاده می‌شود.

    • سلام من میخوام دور موتور۱۲ ولت را کنترل کنم ولی وقتی عدد خط enableرا بین ۰ تا ۲۵۵ با دستور (analogwhrite(enable,255 تغییر میدم خط enable فعال میشه ولی دور موتور تغییر نمیکنه و از عدد۱۲۰ به پایین هم موتور روشن نمیشه ممنون میشم راهنمایی کنید

      • سلام مجدد
        تابع مورد استفاده شده تاثیری در عملکرد مدار نخواهد داشت. با استفاده از یک پتانسیومتر و map کردن خروجی PWM، سرعت موتور را تنظیم نمایید.

  • سلام خداقوت وتشکر بابت مطالب مفیدتون سوال درمورد فرکانس پالس pwm داشتم
    فرکانس pwm در اینجا چنده و چطور میشه تغییر داد؟

    • با سلام
      در این خصوص می‌توانید با استفاده از یک پتانسیومتر فرکانس pwm را بخوانید. با map کردن می‌توانید اینکار را انجام دهید.

  • سلام
    مهدی هستم. من پروژه ای دارم که با استفاده از یک تک سوئیچ و موتور دی سی و l298 و آل سی دی ۱۶*۲ و آردینیو سرعت موتور را کنترل میکنه. هرچی تو سایتا گشتم چیزی پیدا نکردم . راهنمایی می فرمایید

    • با سلام
      در همین آموزش کنترل سرعت موتور DC با ولوم اجرا شده است و از آن می‌توانید استفاده کنید و در صورت استفاده از کلید بایستی در کدها تغییرات اعمال کنید.

  • با سلام.
    من پروژه ای با عنوان کنترل سرعت موتور دی سی با استفاده از برد آردوینو و l298 و یک تک سوئیچ و نمایشگر ال سی دی ۱۶*۲ دارم به این صورت که با هر بار تحریک تک سوئیچ و نمایش بر روی ال سی دی موتور از صفر و ۲۰ درصد و ۵۰درصد و… سرعتش تغییر می کند. لطفا راهنمایی بفرمایید. ممنونم

    • با سلام
      کاربر گرامی درخواست شما با موضوع آموزش همخوانی ندارد. در یکی از آموزش های مرتبط سوال خود را مطرح فرمایید.

  • سلام خسته نباشید.
    ممنون از آموزش خوبتون.
    اگه تو پروژه کنترل موتور dc بخواهیم سرعت رو اندازه بگیریم وکنترل کنیم در این صورت چ تغییراتی لازمه ؟
    تاکومتر یا انکودر باید به سیستم اضافه شه؟

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

      • سلام
        میخوام اطلاعات سرعت موتور dc رو با انکودر به دست بیارم(نمایش بدم تو متلب).
        و بعدش به سرعتی که مدنظرخودمه تغییرش بدم به وسیله متلب(مثلا بگم سرعت ۱۵۰۰ باشه)
        از چه قطعاتی باید استفاده کنم؟
        آردینو uno?
        موتور dc انکودر دار؟
        مقاومت؟
        درایو موتور؟
        باتری چند ولتی؟
        هر چیزی که لازمه واسه انجام این پروژه.
        کلی تحقیق کردم و مطالب سایتون رو خوندم ولی به نتیجه نمیرسم دقیقا چی استفاده کنم.
        اگه بشه از طریق ایمیل ارتباط داشته باشیم خیلی بهتره

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

  • با سلام از سایت جامع
    قسمتی که ولتاژ ۵ و دیگری ولتاژ ۱۲ میشه توضیح بدید لطفا و اینکه چرا موتور رو به ۲۹۸ وصل می کنم کار نمکنه ولی مستقیم باطری رو به موتور می زنم کار می کنه از ۴ باطری ۱٫۵ استفاده کردم

    • با سلام
      در این خصوص بایستی دیتاشیت درایورها را بر اساس ولتاژ و جریان مورد نیاز بررسی کنید.

  • سلام عرض ادب به شما لیدی پای عزیز
    سپاس بخاطر ایجاد سایت مفید و آموزشی که تدارک دیدین
    آموزش ماژول l298 بدون اردینو رو هم میشه توضیح بدین

    • با سلام
      کاربر گرامی سپاس از همراهی شما
      تست درایور موتور بدون آردوینو توسط بنده انجام نشده است.

  • سلام
    میخوام اطلاعات سرعت موتور dc رو با انکودر به دست بیارم تو متلب نمایشش بدم.
    بعدش با متلب سرعت موتور رو به مقداری که خودم میخوام برسونم.دقیق از چه قطعاتی باید استفاده کنم؟
    آردینو uno.موتور dc انکودر.درایوموتور.مقاومت.؟

    نمیتونم تو سایت ثبت نام کنم خطا میده.هیج راه ارتباطی دیگه وجود نداره؟لطفا ایمیل هم به اشتراک بزارید

  • سلام
    نمیدونم بار چندمه که این متن رو میفرستم ولی باز میبینم که نیست.
    میخوام اطلاعات سرعت موتور dc رو با انکودر به دست بیارم.(نمایش بدم تو متلب).
    و بعدش به سرعتی که مدنظرخودمه تغییرش بدم به وسیله متلب.
    از چه قطعاتی باید استفاده کنم؟
    آردینو uno?
    موتور dc انکودر دار؟یا جدا باشه
    مقاومت؟
    درایو موتور؟یا ترانزیستور
    کلا هر چیزی که لازمه واسه این پروژه اسم دقیقش رو واسه خرید میخوام.
    اگه بشه از طریق ایمیل ارتباط داشته باشیم خیلی بهتره
    چنانچه هزینه ای داره این راهنمایی بنده در خدمتم

  • سلام ببخشید من یه سوال داشتم.من دوتا موتور براش دارم و می‌خواهم به رادیو کنترل وصل کنم که دستور بگیره.شما برای این کار چه بردی رو پیشنهاد میکنید.البته به غیر از اسپید کنترل چون برای موتور براش نیست..

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

  • سلام
    در رابطه با تغذیه ی L298N، اگر ما یک باطری ۹ ولتی را به ورودی ولتاژ موتور ها بدیم و جامپر هم در جای خودش قرار داشته باشه، ایا ولتاژ ۵ ولتی مورد نیاز برای بخش های منطقی درایور فراهم می شه و یا فقط با ولتاژ ورودی ۱۲ ولت هست که می تونه این کار رو بکنه؟
    یه سوال دیگه هم داشتم
    اگر ما یک باطری ۹ ولتی را به ورودی ولتاژ موتور ها بدیم و جامپر هم در جای خودش قرار داشته باشه، ایا می تونیم از بخش خروجی ۵ ولت این ماژول به عنوان منبع تغذیه ی بورد اردوئینو استفاده کنیم؟

    • با سلام
      ورودی ماژول L298 ماکزییم ۴۶ ولت است و اگر از موتور ۱۲ ولت استفاده می‌کنید، حتما تغذیه کافی برای راه اندازی موتو را بایستی تامین کنید.

      • این ماژول ۲ ولت افت داره یعنی برای یه موتور ۹ ولت باید تقریبا ۱۲ ولت باطری داشته باشیم
        ولی سوال من این نبود
        منظورم این هست که اگر بخواهیم از این ماژول و باطری اون برای تغذیه اردوئینو استفاده کنیم، چه باطری باید وصل کنیم؟