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

آموزش شیلد درایور موتور L293D با برد آردوینو بخش دوم کنترل جهت موتور DC

L293D-arduino-shield-DC-motor-digispark
نوشته شده توسط پریسا پوربلورچیان

در آموزش بخش اول شیلد درایور موتور L293D با اتصال یک سرو موتور به شیلد L293D، سرو موتور Servo Motor یک بار از ۰ تا ۳۶۰ درجه و بار دیگر از ۳۶۰ تا ۰ درجه می‌چرخید. در آموزش بخش دوم شیلد درایور موتور به دو موتور DC توسط ماژول جوی استیک JoyStick در دو جهت فرمان حرکت خواهیم داد. در ادامه مجموعه آموزش شیلد درایور موتور L293 با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


شیلد درایور موتور L293D


تراشه L293D توانایی درایو موتور تا ۳۶ ولت را خواهد داشت. توسط این تراشه هر کانال درایور موتور تا ۶۰۰ میلی آمپر جریان دهی خواهد داشت. از ویژگی‌های این شیلد می‌توان به داشتن ۲ کانکتور + ۵ ولت Dc اشاره کرد. همچنین دارای ۴ رابط کانکتور برای اتصال استپر موتور Stepper Motor و موتور ( ۲ استپر موتور + ۲ موتور DC) است. شیلد درایور موتور L293 دارای ۶ پین برای اتصال دو سرو موتور Servo Motor است که با نام های SER1 و SERVO – ۲ بر روی شیلد مشخص شده است. یک کلید ریست Reset پایین شیلد قرار گرفته شده است. ولتاژ ورودی شیلد درایور موتور ۴٫۵ تا ۱۲ ولت DC است. این شیلد قابلیت راه اندازی با میکروکنترل های آردوینو Arduino UNO و آردوینو Arduino Mega2560 را دارد. ابعاد شیلد درایور موتور ۶۹ * ۵۳ * ۱۴٫۳ میلی متر است. برای اطلاعات بیشتر به آمورش بخش اول شیلد درایور موتور L293D مراجعه کنید.

 

هدف از آموزش کنترل جهت موتور DC

در این آموزش با استفاده از ماژول جوی استیک JoyStick به دو موتور Motor DC فرمان می‌دهیم. در ادامه آموزش اتصالات و کد برنامه را بررسی خواهیم کرد.

 


ماژول جوی استیک Joy Stick Module


جوی استیک Joystick PS2 یک ماژول با خروجی آنالوگ و قابلیت شبیه سازی مختصات اهرم در راستای دو محور X و Y می‌باشد. در بسیاری از پروژه‌های رباتیک نیاز به جوی استیک کاملا مشهود است. ماژول جوی استیک JoyStick قابلیت حرکت در تمام زوایا در راستای محور X , Y را دارد. بر روی ماژول جوی استیک JoyStick دو پتانسیومتر ۱۰ کیلو با زاویه ۹۰ درجه در کنار یکدیگر قرار گرفته‌اند. با تغییر وضعیت اهرم قرار گرفته شده بر روی ماژول در راستای محور X,Y بسته به مسیر و جهت انتخابی، ولتاژ خروجی بین ۰ تا ۵ ولت DC تغییر خواهد کرد. هنگامی که ماژول جوی استیک را به میکروکنترلر متصل می‌کنید، در خروجی تا مقدار ۵۱۲ را در حالت Resting می‌توانید بخوانید. در حالت کلی با تغییر اهرم ماژول جوی استیک  مقدار  ۰ تا ۱۰۲۳ را می‌توانید در خروجی ماژول ببینید. ماژول جوی استیک JoyStick دارای ۴ پایه به ترتیب GND , 5v , VRx , VRy , SW می‌باشد. پایه VRx مروبط به تغییرات اهرم جوی استیک در راستای محور X  همان محور افقی می‌باشد. پایه VRy  مروبط به تغییرات اهرم جوی استیک در راستای محور Y همان محور عمودی می‌باشد. در آموزش راه اندازی ماژول جوی استیک JoyStick پکیج ۳۷ سنسور آردوینو به صورت کامل به توضیح و نحوه ی راه اندازی این ماژول پرداخته ایم. آن را مطالعه کنید.

 


پیش نیاز بخش دوم شیلد موتور L293D


آموزش شیلد درایور موتور L293D با برد آردوینو بخش اول سرو Servo motor

آموزش راه اندازی ماژول جوی استیک JoyStick پکیج ۳۷ سنسور آردوینو

 

 


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


بر روی شیلد درایور موتور L293D چهار خروجی M1 تا M4 برای اتصال استپر موتور Stepper Motor و موتور DC بر روی فیبر قرار گرفته شده است. در این آموزش تنها به دو خروجی M1 و M2 نیاز داریم.

  • دو موتور Motor DC را به خروجی ترمینال M1 و M2 اتصال دهید.

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

 


اتصال ماژول جوی استیک به شیلد


بر روی شیلد درایور موتور L293D پایه های دیجیتال و آنالوگ آردوینو Arduino قرار گرفته شده است. برای استفاده از این پایه ها می‌توانید پین هدر نری و یا پین هدر مادگی بر روی شیلد لحیم کنید تا بتوانید از پایه ها استفاده کنید. ماژول جوی استیک از نوع آنالوگ دو محوره می‌باشد. برای اینکار باید پایه A0 تا A5 را بر روی شیلد لحیم کنید. سپس

  • دو محور X و Y ماژول جوی استیک JoyStick را به ترتیب به پایه A0 و A1 آنالوگ اتصال دهید.
  • پایه های GND, تغذیه ۵ ولت , تغذیه ۹ ولت هم بر روی شیلد درایور موتور قرار دارد. آن را لحیم کرده و سپس اتصالات GND، ۵V ماژول جوی استیک را انجام دهید.

 

 


فراخوانی کتابخانه آردوینو


برای اجرای این پروژه تنها نیاز به کتابخانه AF MOTOR خواهیم داشت. چنانچه شیوه نصب کتابخانه در آردوینو را نمی‌دانید. به پستآموزش نصب کتابخانه در نرم افزار آردوینو مراجعه کنید. اگر هم شیوه نصب و راه اندازی نرم افزار آردوینو را نمی‌دانید. به آموزش کار با برد آردوینو و نصب نرم افزار آردوینو Arduino IDE مراجعه کنید.

  • کتابخانه AF Motor

کتابخانه AFMotor جهت راه اندازی شیلد درایور موتور فراخوانی می‌شود. لینک دانلود این کتابخانه در صفحه محصول شیلد درایور موتور L293D قرار گرفته شده است. از قسمت دانلود آن را دریافت کرده و نصب کنید.

 


کد آردوینو Arduino درایور موتور L293D


 

 

 
#include <AFMotor.h>  // فراخوانی کتابخانه 
#define x_pin A0 // تعریف محور X و اتصال به پایه A0 آنالوگ
#define y_pin A1 //تعریف محور Y و اتصال به پایه A1 آنالوگ 


int xpos; // محور X
int ypos; // محور Y
AF_DCMotor motor1(1); // موتور اول
AF_DCMotor motor2(2); // موتور دوم 

// ورودی و خروجی 
void setup() {


motor1.run(RELEASE); // موتور اول خروجی 
motor2.run(RELEASE); // موتور دوم خروجی 
pinMode(x_pin,INPUT); // پایه X ورودی 
pinMode(y_pin,INPUT); // پایه Y ورودی
}
// حلقه
void loop() {

  
xpos=analogRead(A0); // خواندن دیتا از پایه A0
ypos=analogRead(A1); // خواندن دیتا از پایه A1

xpos=map(xpos,0,1023,0,255);// تغییر حالت از ۰ تا ۱۰۲۳ در راستای محور X
ypos=map(ypos,0,1023,0,255); // تغییر حالت از ۰ تا ۱۰۲۳ در راستای محور Y




if(xpos>=120 && xpos<=130) // شرط گذاری برای فعال شدن موتور اول
{

motor1.run(RELEASE); // موتور اول فعال 
}
if(xpos>130 ) // شرط گذاری 
{
  motor1.setSpeed(xpos);
motor1.run(BACKWARD); // دنده عقب 
  
}

if(xpos<120 )
{
  motor1.setSpeed(255-xpos);
motor1.run(FORWARD); // حرکت رو به جلو 
 
}


if(ypos>=120 && ypos<=130)
{

motor2.run(RELEASE); // موتور دوم فعال
}
if(ypos>130 )
{
  motor2.setSpeed(ypos);
motor2.run(BACKWARD); // حرکت دنده عقب
  
}

if(ypos<120 )
{
  motor2.setSpeed(255-ypos);
motor2.run(FORWARD); // حرکت رو به جلو
 
}




}

کد را از طریق کلید های میانبری که برای انتقال کدها در نظر گرفته شده است، به نرم افزار آردوینو Arduino انتقال دهید.

 


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


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

فراخوانی کتابخانه

#include <AFMotor.h>  // فراخوانی کتابخانه 

تعریف محور X , Y

ماژول جوی استیک در دو محور X , Y حرکت میکند. ماژول جوی استیک در واقع یک ماژول دو محوره آنالوگ است و برای راه اندازی آن از پایه های آنالوگ میکروکنترلر استفاده خواهیم کرد:

#define x_pin A0 // تعریف محور X و اتصال به پایه A0 آنالوگ
#define y_pin A1 //تعریف محور Y و اتصال به پایه A1 آنالوگ
int xpos; // محور X
int ypos; // محور Y

فراخوانی موتور Motor DC

در این آموزش تنها از دو خروجی شیلد L293 استفاده شده است. بنابراین از دو موتور DC استفاده خواهیم کرد:

AF_DCMotor motor1(1); // موتور اول
AF_DCMotor motor2(2); // موتور دوم

فعال شدن دو موتور

motor1.run(RELEASE); // موتور اول خروجی 
motor2.run(RELEASE); // موتور دوم خروجی 

تعریف جوی استیک به عنوان ورودی Input

pinMode(x_pin,INPUT); // پایه X ورودی 
pinMode(y_pin,INPUT); // پایه Y ورودی

خواندن دیتا از پایه ماژول جوی استیک

xpos=analogRead(A0); // خواندن دیتا از پایه A0
ypos=analogRead(A1); // خواندن دیتا از پایه A1

xpos=map(xpos,0,1023,0,255);// تغییر حالت از ۰ تا ۱۰۲۳ در راستای محور X
ypos=map(ypos,0,1023,0,255); // تغییر حالت از ۰ تا ۱۰۲۳ در راستای محور Y

 

راه اندازی درایور موتور L293D به آردوینو و موتور DC - دیجی اسپارک

 


فعال شدن موتور اول


در این حالت موتور اول فعال شده و سپس در جهت محور X به چرخش درمی‌آید.

if(xpos>=120 && xpos<=130) // شرط گذاری برای فعال شدن موتور اول
{

motor1.run(RELEASE); // موتور اول فعال 
}
if(xpos>130 ) // شرط گذاری 
{
  motor1.setSpeed(xpos);
motor1.run(BACKWARD); // دنده عقب 
  
}

if(xpos<120 )
{
  motor1.setSpeed(255-xpos);
motor1.run(FORWARD); // حرکت رو به جلو 
 
}


فعال شدن موتور دوم


در این حالت موتور دوم فعال شده و در جهت محور Y به چرخش در می‌آید.

if(ypos>=120 && ypos<=130)
{

motor2.run(RELEASE); // موتور دوم فعال
}
if(ypos>130 )
{
  motor2.setSpeed(ypos);
motor2.run(BACKWARD); // حرکت دنده عقب
  
}

if(ypos<120 )
{
  motor2.setSpeed(255-ypos);
motor2.run(FORWARD); // حرکت رو به جلو
 
}

 


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


شیلد درایور موتور L293D

برد آردوینو UNO

موتور DC

کابل فلت

 

 

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

 

پروژه

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

 

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

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

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

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

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

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

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

۳۴ دیدگاه

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

  • سلام و درود.
    با این کانفیگ آیا می شه دو عدد موتور ۱۲ ولت دی سی رو با پروتکل pwm کنترل کرد ؟ توان هر موتور تقریبا ۳۰ وات و جمعا ۶۰ وات توان خروجی نیاز دارم از درایو موتور.

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

  • واقعا عالی بودو لذت بردم
    مدتی هست که روی شیلد درایور ها مطالعه میکنم و به درایورL293D که تحت nodeMCU و blynk ران میشه برخوردم اینطور به نظرم بهتره چون نه دیگه به جامپراضافه نیازی هست و نه جوی استیک و نه حتی برد اردینو
    اینطور میشه از فاصله خیلی دور تر موتور ها رو کنترل کرد و یکسری کار های جالب انجام داد. البته بخشی از این کار رو با دو تا HC-05 MASTER & SLAVE هم میشه انجام داد ولی خب بازم باید از جوی استیک و اردینو استفاده کرد .
    نظرتونو خواستم در موردش بدونم چون واقعا برام اهمیت داره:)

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

      • بله شیلد درایور موتور به تنهایی قابلیت کامپال کد ها را ندارد ولی از ان جای که nodeMCU دقیقا روی شیلد درایور l293d نصب میشود این امکان برای کامپایل کد ها فراهم میشود.
        البته منظور من نوعه خاصی از شیلد موتور درایور L293D هست جهت درک بیشتر موضوع میتوانید به لینک زیر مراجعه کنید.نا گفته نماند که این پروژه نظر من رو خیلی به خودش جلب کرده و هم اکنون در حال کار کردن روی ان با استفاده از پلتفرم Blynk هستم اگر خواستید در صورت اتمام پروژه حتما شما رو مطلع و فیلم ان را برای شما خواهم فرستاد.
        سپاس فراوان 🙂
        https://www.instructables.com/id/Motorize-IoT-With-ESP8266

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

          • سلام و عرض خسته نباشید
            حتما به خاطر دارید که در مورد wifi car using esp8266 motorshield با هم صحبت کردیم در واقع یه nodeMCU بود که روی نوعه خاصی از موتور درایور l293d بسته میشد و از طریق پلتفرم Blynk اجرا میشد لینک ویدئو را در زیر برای شما قرار میدهم در صورت تمایل نگاه کنید البته از انجایی که به موتور گریبگس دسترسی نداشتم از موتور های dc ساده فاقد گریبکس استفاده کردم
            سپاس فراوان 🙂
            https://www.aparat.com/v/boR3S

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

  • سلام خسته نباشید
    ببخشید چطور میشه این دو تا موتور رو بدون دخالت دست حرکت داد..یعنی همون کاری که تو سلول های خورشیدی انجام میدن؟
    با تشکر

    • سلام
      بنده اصلا متوجه منظور شما نشدم. سلول خورشیدی ربطی به حرکت بدون دست ندارد.
      شفاف تر توضیح دهید تا راهنمایی کنم.

  • با سلام ببخشید میخواستم بپرسم ، یک موتوری که ۱A جریان نامی نیاز داره و ما اگر بخوایم با یک درایور L298 دوتا از این موتور را رو کنترل کنیم این یعنی داره از درایور ۲A کشیده میشه یا نه داره از هر پین ۱A کشیده میشه و از جریان مجاز درایور عبور نمیکنه

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

  • سلام
    ببخشید استپرموتورهای سی دی رام و یا فلاپی دیسک رو هم میشه با این ای سی راه انداخت یا ای سی دیگه ای داره؟اگه کمک کنید ممنون میشم

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

  • سلام استاد گرامی من یک روز وقت دارم که پایان نامه ام رد شود به سال بعد خیلی به کمک شما نیاز دارم پروژه من رباط کوچک آتش نشان است قطعاتش هم سرو موتور، آردوینو، موتور درایور l293d, پمپ آب ۱۲ ولت، و سه دانه سنسور آتش است خیلی گیچ شده ام شما کمکم کنی از کجا شروع کنم

  • سلام و باتشکر از محتوای خوبتون.
    یه سوال داشتم. میخواستم با آردوینو موتور ۱۲ ولت (که اندازه فیزیکیش ۱۲ در ۱۲ سانته) رو دور موتورشو کنترل کنم.
    دور بالا هستن.۵۰۰۰ rpm. که ۴ تا ترمینال داره.که فکر میکنم بجز دوتا هات و گراند یکی rpm و دیگری سیگنال باشه.
    با چه درایوری میتونم کنترل کنم؟ یک مدلشو میگم تا بتو.نید دیتاشیتشو ببینید.
    D12BM-12D از شرکت YaLn fan
    ممنون میشم راهنمایی کنید.
    خیلی ممنون بازم.

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

  • سلام و احترام
    ببخشید شیلد کنترل موتور آردوینو رو چگونه باید روی برد آردوینو mega2560 r3 تصب نمود ممنون میشم اگه رانماییم نمایید با تشکر

    • با سلام
      چه شیلدی مد نظر شما است؟ اگر شیلد l293 را میفرمایید مطابق با پایه های gpio قرار دهید.

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

    • با سلام
      این موتور دارای ۴ رابط کانکتور برای اتصال استپر موتور Stepper Motor و موتور ( ۲ استپر موتور + ۲ موتور DC) است

  • سلام خانم مهندس ممنون از آموزش های مفیدتون من یه مشکل با این شیلد دارم و اونم اینه که نمیدونم برای فرمان به موتور از کدام پین های آردوینو استفاده میکنه منظورم اینه که مثلا یه ربات مسیریاب که میسازم نمیدونم ماژول های مادون قرمز رو به کدام پایه ها باید لحیم کنم میشه یه لطف کنید و بگید ایم شیلد دقیقا کدام پین های آردوینو رو اشغال می کنه؟
    ممنون

    • با سلام
      برای اتصال موتورها از پایه های دیجیتال برد آردوینو استفاده کنید. از پایه ۲ تا ۱۳ مناسب است.

  • با سلام و خسته نباشید، بنده نیاز دارم تا از موتور ویبره ۳ولتی برای ایجاد ارتعاش استفاده کنم اما با توجه به اطلاعات درایور، موتور DC قابل استفاده باید بین ۴٫۵ تا ۲۵ ولت باشه، میخواستم بدونم راهی هست که من بتونم از این درایور برای موتور ۳v استفاده کنم؟
    سپاس فراوان.

    • با سلام
      این مورد توسط بنده تست نشده است. بهتر است مطابق با دیتاشیت پیش بروید.

  • با سلام خدمت شما:
    بنده دستگاه cncگرفتم و سوالاتی داشتم راجب به همون موضوع اگه امکان مشاوره داشته باشید هر مبلغی تعیین بفرمائید حتما پرداخت خواهد. شد البته که دانشی که منتقل می کنید حتما برای ما و مجموعه بنده ارزشمند خواهد بود وقداردان شما پیشاپیش هستیم ! باتشکر فرشادیان

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