راه اندازی شیلد 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);
}

از شماتیک زیر برای مثال فوق استفاده کنید :

 

Tags:
About Author: USER_4