راه اندازی شیلد L293 :
شیلد L293D یک شیلد ارزان قیمت و کاربرد است که می توان از آن برای راه اندازی موتور های DC استفاده نمود . در این شیلد از دو چیپ L293D و یک شیفت رجیستر 74HC595 استفاده شده است .
چیپ L293D یک درایور موتور دو کاناله است که قابلیت راه اندازی و کنترل دو موتور DC را از طریق ولتاژ 5 ولت دارد . برای کنترل هر موتور در این چیپ دو پین در نظر گرفته شده است که در مجموع 4 پین کنترلی برای هر L293D وجود دارد . برای راه اندازی 4 موتور توسط 2 درایور L293D به 8 پین از آردوینو احتیاج است . اما در این شیلد تنها از طریق 3 پین کل شیلد کنترل می شود !
چیپ 74HC595 یک شیفت رجیستر SIPO با قابلیت کارد در فرکانس حداکثر 25MHz است . در این شیلد از ی 74HC595 جهت کنترل دو چیپ L293D استفاده شده است . می توان با ارسال مقادیر کنترلی درایور ها به صورت سریالی به 74HC595 ، موتور ها را کنترل کرد . حتی می توان با ارسال سریع مقادیر و تغییر سطح آن ها ، سیگنال های PWM را ایجاد کرد تا سرعت هر موتور را کنترل نمود .
در شکل زیر شماتیک این شیلد نشان داده شده است :
برای کنترل این شیلد ابتدا باید از پین های ارتباطی آردوینو و 74HC595 اطلاع داشته باشیم . این شیفت رجیستر ازپین دارد که ما تنها به سه پین از آن نیاز داریم . این سه پین به صورت زیر می باشند :
SD پین ارسال دیتای سریال ( پین 14 چیپ 74HC595 ) که به پین 4 آردوینو متصل است .
LC پین Latch که با یک شدن این پین دیتای وارد شده به شیفت رجیستر در خروجی قرار می گیرد (پین 12 ) که به پین 7 آردوینو متصل است .
SC پین کلاک ( پین 11) که به پین 8 آردوینو متصل است .
الگوی ارسال دیتا به شیلد به صورت زیر است :
1-ابتدا کل پین های LC ، SC و SC را صفر میکنیم .
2-برای ارسال هر بیت ابتدا بیت مورد نظر بر روی پین SD قرار گرفته و سپس یک بار پین SC را صفر و یک می کنیم .
3- با اجرای مرحله اخر ( ارسال بیت 8) یک بار بیت LC را صفر و سپس یک می کنیم تا دیتا در خروجی شیفت رجیستر قرار بگیرد .
خوشبختانه نیازی به نوشتن تابعی برای ارسال مقادیر به شیلد وجود ندارد چراکه کلیه توابع و دستورات راه اندازی این شیلد در کتابخانه AFMotor وجود دارد . این کتابخانه را می توانید از لینک زیر دانلود کنید :
https://github.com/adafruit/Adafruit-Motor-Shield-library
برای افزودن این کتابخانه به برنامه از هدر زیر استفاده کیند :
#include <AFMotor.h>
پس از فراخوانی هدر مربوط به کتابخانه ، باید یک شی از AF_DCmotor بسازید تا با استفاده از ان متد های مختلف رو اجرا کنید .
AF_DCMotor motor(n);
motor نام شی موتور است که می تواند هر اسمی باشد . n نیز شماره موتور است که می تواند 1 تا 4 باشد .
با استفاده از متد setSpeed می توان سرعت چرخش موتور را تنظیم نمود .
motor.setSpeed(x);
x همان سرع موتور است که می توان بین 0 تا 255 باشد .
از متد run نیز جهت به چرخش در آوردن موتور استفاده می شود .
motor.run(BACKWARD);
این متد سه مقدار زیر را می تواند بگیرد :
FORWARD چرخش ساعت گرد
BACKWARD چرخش پاد ساعت گرد
RELEASE توقف چرخش موتور
مثال زیر نحوه راه اندازی و به کار گیری شیلد L293 را با استفاده از کتابخانه AFMotor نشان می دهد :
#include <AFMotor.h> AF_DCMotor motor(4); void setup() { //Set initial speed of the motor & stop motor.setSpeed(200); motor.run(RELEASE); } void loop() { uint8_t i; // Turn on motor motor.run(FORWARD); // Accelerate from zero to maximum speed for (i=0; i<255; i++) { motor.setSpeed(i); delay(10); } // Decelerate from maximum speed to zero for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10); } // Now change motor direction motor.run(BACKWARD); // Accelerate from zero to maximum speed for (i=0; i<255; i++) { motor.setSpeed(i); delay(10); } // Decelerate from maximum speed to zero for (i=255; i!=0; i--) { motor.setSpeed(i); delay(10); } // Now turn off motor motor.run(RELEASE); delay(1000); }
از شماتیک زیر برای مثال فوق استفاده کنید :