آردوینوپروژه آردوینو

راه اندازی موتور DC با آی سی L293D

در این پروژه شما چگونگی راه اندازی موتور DC با L293D و آردوینو را خواهید آموخت، همچنین در این پروژه نحوه کنترل سرعت و جهت چرخش موتور نیز قابل کنترل می باشد.

راه اندازی موتور DC با L293D

قطعات مورد نیاز

۱ برد آردوینو Uno R3
۲ برد بورد راه اندازی موتور DC با L293D
۳  LED 5mm راه اندازی موتور DC با L293D
۴ مدار مجتمع L293D راه اندازی موتور DC با L293D
۵ دکمه فشاری راه اندازی موتور DC با L293D
۶ پتانسیومتر ۱۰ کیلو اهم
۷ موتور DC 6V راه اندازی موتور DC با L293D
۸ جامپر

یک آزمایش

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

در اینجا از آردوینو فقط به عنوان منبع تغذیه ۵ ولت برای تامین نیروی موتور استفاده می کنیم.

دقت کنید برای اتصال مستقیم موتور به آردوینو باید حتما از موتوری استفاده کنید که نهایت جریان مصرفی آن بین ۲۰۰ تا ۳۰۰ میلی آمپر باشد در غیر این صورت باید از منبع تغذیه خارجی استفاده کنید.

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

این مسئله گزینه کلیدی برای درک نحوه کار مدار مجتمع L293D  می باشد. پایه های کنترلی آن به ما این اجازه را می دهند که جای ترمینال ها را با یکدیگر عوض کرده تا جهت چرخش موتور نیز عوض گردد.

برد بورد را مطابق شکل زیر درست کنید.  آردوینو اینجا وظیفه تامین تغذیه مدار را به عهده دارد.

آرایش برد برد (آزمایش)

ابتدا با سه پایه L293D که در ادامه از آن ها استفاده می کنیم آشنا می شویم. پایه شماره ۱ (Enable) ، پایه شماره ۲ (In1)  و پایه شماره ۷ (In2). این پایه ها به ترتیب توسط جامپرهای بنفش ، زرد و نارنجی مطابق شکل به  منبع ۵ ولت و زمین متصل می شده اند.

مانند شکل بالا ، موتور باید در یک جهتی بچرخد. این جهت را جهت  A نام گذاری می نماییم.

اگر شما پایه شماره ۱ (Enable) را به زمین متصل کنید، موتور متوقف می شود و مهم نیست که پایه های دیگر دارای چه حالت هایی باشند. این پایه تمام چیزها را روشن و یا خاموش می کند. از این مسئله می توان برای کنترل این پایه توسط موج PWM استفاده نمود که با آن سرعت موتور را می توانیم تنظیم کنیم. دوباره پایه ۱ را به منبع ۵ ولت متصل کنید تا موتور شروع به چرخیدن  کند.

حال بیاید پایه In1 (پایه شماره ۲, رنگ زرد)  را از ۵ ولت جابجا کرده و به زمین متصل کنیم.در حال حاضر هر دو پایه In1 و In2 به زمین متصل هستند. در نتیجه موتور هیچ حرکتی نخواهد کرد.

پایه In2  را از زمین به ۵ ولت انتقال دهید. این کار سبب می شود که موتور در جهت عکس بچرخد.

حال بیاید هر دو پایه In1 و In2  را به ۵ ولت متصل نماییم. باز هم این کار باعث می شود موتور از حرکت باز ایستد.

تاثیراتی که این دو پایه در چرخش موتور دارند به صورت خلاصه در جدول زیر آمده است.

حالت موتور In1 In2
ایست GND GND
به جهت A می چرخد ۵V GND
به جهت B می چرخد GND ۵V
ایست ۵V ۵V

آرایش برد بورد

حال می خواهیم کنترل مدار را توسط آردوینو به دست بگیریم. این کار را با کنترل سه پایه Enable, In1 و In2 انجام می دهیم.

وقتی شما برد بورد را درست کردید باید مطمئن شوید که شکاف مدار مجتمع به سمت بالا باشد.

راه اندازی موتور DC با L293D

کد آردوینو

برنامه را در آردوینو بارگذاری نمایید.

/*
    Adafruit Arduino - Lesson 15. Bi-directional Motor
    */
     
    int enablePin = 11;
    int in1Pin = 10;
    int in2Pin = 9;
    int switchPin = 7;
    int potPin = 0;
     
    void setup()
    {
      pinMode(in1Pin, OUTPUT);
      pinMode(in2Pin, OUTPUT);
      pinMode(enablePin, OUTPUT);
      pinMode(switchPin, INPUT_PULLUP);
    }
     
    void loop()
    {
      int speed = analogRead(potPin) / 4;
      boolean reverse = digitalRead(switchPin);
      setMotor(speed, reverse);
    }
     
    void setMotor(int speed, boolean reverse)
    {
      analogWrite(enablePin, speed);
      digitalWrite(in1Pin, ! reverse);
      digitalWrite(in2Pin, reverse);
    }
 

مطابق معمول پایه ها به همراه نوع خود در تابع راه اندازی (Setup) معرفی شده اند.
در تابع حلقه ، مقدار سرعت چرخش موتور با خواندن پایه پتانسیومتر که بر ۴ تقسیم شده است به دست می آید.
این که بر ۴ تقسیم کردیم به این دلیل است که دامنه تغییرات ورودی های آنالوگ از ۰ تا ۱۰۲۳ می باشد. از طرفی مقدار قابل قبول برای خروجی دیجیتال ، بایستی مقداری بین ۰ تا ۲۵۵ باشد که با تقسیم ورودی بر ۴ بدست می آید.

تغییر سرعت و جهت حرکت موتور

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

حال که مقادیر سرعت و چرخش موتور را داریم ، بایستی آنها را به شکلی به راه انداز و یا درایور انتقال دهیم. این کار براحتی توسط تابع ‘setMotor’ انجام می گیرد. این تابع ورودی های سرعت و چرخش را دریافت می کند و آنها را به پایه های مناسب راه انداز L293D انتقال می دهد تا به آن وسیله موتور را کنترل کند.


    void setMotor(int speed, boolean reverse)
    {
      analogWrite(enablePin, speed);
      digitalWrite(in1Pin, ! reverse);
      digitalWrite(in2Pin, reverse);
    }

در تابع ‘setMotor’  ابتدا سرعت را توسط تابع خروجی آنالوگ  analogWrite به پایه enable  انتقال می دهیم. این پایه در L293 صرف نظر از اینکه مقادیر پایه های in1 و in2 دارای چه مقادیری باشد ، تنها موتور را خاموش و روشن می کند

برای کنترل جهت موتور ، مقادیر پایه های in1 و in2 بایستی مخالف یکدیگر باشند.

یعنی اگر پایه in1 برابر با HIGH  و مقدار پایه in2 برابر LOW باشد ، موتور در یک جهت خاص شروع به حر کت می کند. از طرف دیگر اگر in1 برابر با LOW و پایه  in2  برابر با HIGH  باشد ، آنگاه موتور در عکس جهت قبلی شروع به چرخش می کند.

فرمان ‘!’ به معنای ‘not’ منطقی می باشد. بنابراین توسط دستور digitalWrite اول ، پایه  in1  را عکس مقدار موجود  در متغیر ‘reverse’ قرار می دهیم. یعنی اگر مقدار موجود در متغیر   ‘reverse’ برابر HIGH باشد  آنگاه پایه in1  دارای مقدار  LOW  می گردد.

درست درهمان لحظه  مقدار دیجیتال پایه ‘in2’ نیز برابر با مقدار منطقی متغیر ‘reverse’ می گردد. توسط این دو دستور متوجه می شویم که در همه حالت ها همیشه مقادیر پایه های in1  و in2 مخالف یکدیگر هستند.

مدار مجتمع L۲۹۳D

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

راه اندازی موتور DC با L293D

موتور دوم به پایه های میانی OUT3 و OUT4 متصل می گردد. شما همچنین به سه پایه کنترلی نیز نیاز دارد.

پایه EN2 به خروجی Pwm آردوینو متصل می گردد.

پایه های IN3 و IN4  به خروجی های دیجیتال آردوینو متصل می گردند.

چیپ  L293D دارای دو پایه برای تغذیه می باشد. پایه شماره ۱۶ برای تغذیه خود چیپ و پایه شماره ۸ برای تغذیه موتور مورد استفاده قرار می گیرند. در این آزمایش ما هر دو تغذیه را به تغذیه خود آردوینو که برابر ۵ ولت می متصل کردیم. چنانچه شما از موتور قدرتمند تری با ولتاژ بالاتر استفاده می کنید ، منبع تغذیه آردوینو دیگر جوابگوی راه اندازی آن نیست. بنابراین شما به یک منبع تغذیه جدا نیاز دارید که پایه مثبت آن را بایستی به پایه شماره ۸ چیپ متصل نمایید و پایه منفی تغذیه را به طور مشترک به پایه منفی تغذیه آردوینو متصل می کنید.

ابن مطلب نیز به پایان رسید، امید واریم برای شما عزیزان مفید واقع شده باشد.

برچسب ها
نمایش بیشتر

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید

بستن
دکمه بازگشت به بالا
بستن