118ELEC | مجله خبری الکترونیک و رباتیک
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
        • معرفی قطعات الکترونیک
        • تجهیزات اندازه‌گیری
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور
بدون نتیجه
مشاهده همه نتیجه
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
        • معرفی قطعات الکترونیک
        • تجهیزات اندازه‌گیری
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور
بدون نتیجه
مشاهده همه نتیجه
118ELEC | مجله خبری الکترونیک و رباتیک
بدون نتیجه
مشاهده همه نتیجه

کنترل موتور DC با آي سي درايور موتور L293D و آردوينو

ادمین 2 توسط ادمین 2
13 خرداد 1400
در درایور موتور
4
نحوه کنترل موتور DC با استفاده از آي سي درايور موتور L293D و آردوينو

اگر در فکر ساخت یک ربات جدید هستید، لازم است نحوه کنترل موتور DC را یاد بگیرید. یکی از آسان‌ترین و ارزان‌ترین ابزار‌‌های کنترل موتور‌های DC بكارگيري آي سي درايور موتور L293D با استفاده از آردوینو است. این درایور مي‌تواند همزمان سرعت و جهت دوران دو موتور DC را کنترل کند. بعلاوه، با استفاده از آن مي‌توان یک استپ موتور تك قطبي نظير 28BYJ-48 يا يك استپ موتور دو قطبي نظیر NEMA 17 را نیز کنترل نمود.

کنترل استپ موتور تك قطبي نظير 28BYJ-48 يا يك استپ موتور دو قطبي نظیر NEMA 17 با استفاده از آي سي درايور موتور L293D

کنترل موتور DC

برای کنترل کامل یک موتور DC لازم است سرعت و جهت دوران موتور قابل کنترل باشد. این کنترل از ترکیب دو تکنیک زیر قابل دستیابی است:

  • تکنیک PWM: برای کنترل سرعت
  • تکنیک H-Bridge: برای کنترل جهت چرخش موتور

تکنیک PWM برای کنترل سرعت

کنترل سرعت موتور DC از طریق تغییر ولتاژ تغذیه موتور امکان پذیر است. یک تکنیک مرسوم برای این کار استفاده از روش مدولاسیون عرض پالس (PWM) است. در این تکنیک مقدار متوسط ولتاژ ورودی از طریق ارسال یکسری پالس‌‌های صفر و یک (ON-OFF) تنظیم مي‌شود. مقدار متوسط ولتاژ، متناسب با عرض پالس که duty cycle ناميده مي‌شود، خواهد بود. با افزایش duty cycle مقدار متوسط ولتاژ تغذیه اعمال شده به موتور DC بیشتر خواهد شد و در نتیجه سرعت دوران شافت موتور افزایش خواهد یافت. بطور برعکس، کم کردن duty cycle سبب کاهش متوسط ولتاژ تغذیه و در نتیجه کاهش سرعت دور موتور مي‌شود. در شکل زیر تکنیک PWM و ارتباط مقادير مختلف duty cycle  با مقدار متوسط ولتاژ تغذیه نشان داده شده است.

تکنیک PWM و ارتباط مقادير مختلفduty cycle  با مقدار متوسط ولتاژ تغذیه

تکنیک H-Bridge برای کنترل جهت چرخش موتور

کنترل جهت دوران شافت یک موتور DC از طریق تغییر پلاریته ولتاژ تغذیه آن امکان‌پذیر است. تکنیک مرسوم برای این کار استفاده از H-Bridge یا مدار پل H است. مدار پل H متشکل از چهار عدد سوئیچ است که موتور در مرکز آن‌ها قرار مي‌گيرد و بدین ترتیب ساختاری شبیه H تشکیل مي‌‌دهد. با بسته شدن همزمان دو سوئیچ خاص مي‌توان پلاریته ولتاژ تغذیه اعمالی به موتور و در نتیجه جهت چرخش شافت موتور را تغییر داد. در انیميشن زیر نحوه عملکرد مدار پل H نشان داده شده است.

آي سي درايور موتور L293D

پین های آي سي درايور موتور L293D که یک H-bridge دو کاناله است.

آي سي یک درایور موتور H-bridge دو کاناله است كه قابليت كنترل مستقل دو عدد موتور DC يا كنترل يك استپ موتور را دارد. لذا برای بکارگیری در ربات‌‌های دوچرخ ایده آل است.

تغذيه الكتريكي

تغذیه الکتریکی در آی سی درایور موتور L293D از طریق دو پین Vcc1 و Vcc2 انجام می شود.

آي سي درايور موتور L293D داراي دو پين تغذيه ورودي ‘Vcc1’ و  ‘Vcc2’ است. Vcc1 برای تغذیه مدارات منطقی داخلي استفاده مي‌شود که اندازه آن 5 ولت است. از طریق پین Vcc2 ولتاژ الکتریکی مورد نیاز برای درایو موتورهاي DC به مدار پل H داده مي‌شود که بین 4.5 تا 36 ولت مي‌تواند تغییر کند. هر دوي آن‌ها به يك زمين مشترك GND متصل مي‌شوند.

ترمينال‌هاي خروجي

ترمینال های خروجی در آی سی درایور L293D

كانال‌هاي خروجي درایور L293D براي دو موتور A و B عبارتند از پين‌هاي (OUT1,OUT2) و (OUT3,OUT4). مي‌توان دو موتور DC با ولتاژ كاري 4.5 تا 36 ولت را به اين كانال‌هاي خروجي متصل نمود. هر كانال خروجي مي‌تواند جرياني حداكثر تا 600 ميلي آمپر را براي موتور DC تامين نمايد. هرچند، مقدار جريان موتور به منبع تغذيه سيستم بستگي دارد.

پین‌‌های کنترلی

برای هر یک از کانال‌‌های L293D  دو نوع پین کنترلی وجود دارد که با استفاده از آن مي‌توان بصورت همزمان سرعت و جهت دوران موتور را کنترل نمود: پین‌‌های کنترل جهت دوران موتور‌‌ها و پین‌‌های کنترل سرعت موتور‌ها.

  • پین‌‌های کنترل جهت دوران       
پین‌‌های ورودی برای کنترل جهت دوران موتورها در آی سی درایور L293D

با استفاده از پین‌‌های کنترل جهت مي‌توان نحوه دوران شافت موتور DC را در دو جهت مستقیم یا عقبگرد کنترل نمود. این پین‌‌ها در حقیقت سوئیچ‌‌های مدار پل H  داخلي آی سی L293D را کنترل مي‌کنند. برای هر کانال خروجی دو پین کنترل جهت وجود دارد. پین‌‌های IN1 و IN2 جهت دوران موتور A  و پین‌‌های IN3 و IN4 جهت دوران موتور B را کنترل مي‌کنند. کنترل جهت دوران از طریق اعمال منطق High (5 ولت) یا منطق Low (صفر ولت) به پين‌هاي كنترلي طبق چارت زیر مي‌باشد.

ورودی 1ورودی 2جهت دوران موتور
Low  (صفر ولت)Low  (صفر ولت)موتور خاموش
High  (5 ولت)Low  (صفر ولت)دوران در جهت مستقیم
Low  (صفر ولت)High  (5 ولت)دوران در جهت معکوس
High  (5 ولت)High  (5 ولت)موتور خاموش

  • پین‌‌های کنترل سرعت  
دو پین ورودی کنترل سرعت ENA و ENB برای روشن و خاموش کردن موتورهاي DC

دو پین کنترل سرعت ENA و ENB برای روشن و خاموش کردن موتورهاي DC و همچنین کنترل سرعت دوران موتور‌های A و B  بکار گرفته مي‌شوند. اعمال منطق High (5 ولت) به اين پين‌ها سبب روشن شدن موتور مربوطه و اعمال منطق Low باعث متوقف شدن موتور مي‌شود. کنترل سرعت دوران از طریق اعمال پالس PWM انجام ‌پذیر است.

اتصال آي سي درايور موتور L293D به آردوینو UNO

اکنون با داشتن اطلاعات مورد نیاز در مورد آي سي درایور، در مورد نحوه بکارگیری آن بوسیله آردوینو برای کنترل موتور DC صحبت خواهیم کرد.

در ابتدا منبع تغذیه موتور‌های DC را وصل مي‌کنیم. در این‌جا ما از موتور‌ گیربکس DC (موتور TT) که بطور معمول در ربات‌‌های دوچرخ بکارگرفته مي‌شوند، استفاده مي‌کنیم. ولتاژ این موتور‌ها بین 3 تا 9 ولت است. بنابراین یک منبع تغذیه خارجی 9 ولت به پين Vcc2 متصل مي‌کنیم. براي تامين تغذيه الكتريكي مورد نياز مدارات داخلي آي سي نيز يك ولتاژ 5 ولت به پين Vcc1 وصل مي‌كنيم. زمين همه تغذيه‌ها را به هم متصل مي‌كنيم.

اکنون پین‌‌های ورودی و فعال‌ساز (یعنی پین‌‌های ENA، IN1، IN2، IN3، IN4 و ENB) آي سي L293D را به 6 پین خروجی دیجیتال آردوینو (خروجی‌‌های 3، 4، 5، 7، 8 و 9) متصل مي‌كنيم. دقت کنید که پین‌‌های شماره 9 و شماره 3 آردوینو مربوط به PWM  هستند.

در مرحله آخر یک موتور به ترمينال A  (Out1 و Out2) و موتور دیگر به ترمينال B  (Out3 و Out4) وصل مي‌شوند.

با انجام مراحل فوق، چیزی شبیه به شکل زیر خواهیم داشت.

شماتیک مدار اتصال آي سي درايور موتور L293D به آردوینو UNO

کد برنامه آردوینو ( کنترل موتور DC با  آي سي درايور موتور L293D )

در اين بخش نحوه کنترل سرعت و جهت دوران موتور DC  با استفاده از آي سي درايور موتور L293D توسط آردوينو شرح داده مي‌شود که مي‌توان آن را به عنوان يك مثال پایه‌ای برای کاربرد‌های عملی بیشتر بکار گرفت.

// Motor A connections
 int enA = 9;
 int in1 = 8;
 int in2 = 7;
 // Motor B connections
 int enB = 3;
 int in3 = 5;
 int in4 = 4;
 void setup() {
     // Set all the motor control pins to outputs
     pinMode(enA, OUTPUT);
     pinMode(enB, OUTPUT);
     pinMode(in1, OUTPUT);
     pinMode(in2, OUTPUT);
     pinMode(in3, OUTPUT);
     pinMode(in4, OUTPUT);
     // Turn off motors - Initial state
     digitalWrite(in1, LOW);
     digitalWrite(in2, LOW);
     digitalWrite(in3, LOW);
     digitalWrite(in4, LOW);
 }
 void loop() {
     directionControl();
     delay(1000);
     speedControl();
     delay(1000);
 }
 // This function lets you control spinning direction of motors
 void directionControl() {
     // Set motors to maximum speed
     // For PWM maximum possible values are 0 to 255
     analogWrite(enA, 255);
     analogWrite(enB, 255);
     // Turn on motor A & B
     digitalWrite(in1, HIGH);
     digitalWrite(in2, LOW);
     digitalWrite(in3, HIGH); 
     digitalWrite(in4, LOW); 
     delay(2000);
     // Now change motor directions
     digitalWrite(in1, LOW);
     digitalWrite(in2, HIGH);
     digitalWrite(in3, LOW);
     digitalWrite(in4, HIGH);
     delay(2000); 
    // Turn off motors
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
 }
 // This function lets you control speed of the motors
 void speedControl() {
     // Turn on motors
     digitalWrite(in1, LOW);
     digitalWrite(in2, HIGH);
     digitalWrite(in3, LOW);
     digitalWrite(in4, HIGH);
    // Accelerate from zero to maximum speed 
    for (int i = 0; i < 256; i++) {     
      analogWrite(enA, i);
      analogWrite(enB, i);     
      delay(20); 
} 
    // Decelerate from maximum speed to zero
    for (int i = 255; i >= 0; --i) { 
      analogWrite(enA, i);
      analogWrite(enB, i); 
      delay(20);
 } 
     // Now turn off motors
     digitalWrite(in1, LOW);
     digitalWrite(in2, LOW); 
     digitalWrite(in3, LOW);
     digitalWrite(in4, LOW);
 }

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

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

// Motor A connections
 int enA = 9;
 int in1 = 8;
 int in2 = 7;
 // Motor B connections
 int enB = 3;
 int in3 = 5;
 int in4 = 4;

در بخش setup كد، همه پین‌‌های کنترلی موتور به عنوان خروجی‌‌های دیجیتال تعریف مي‌شوند و مقدار اولیه آن‌‌ها بصورت Low تنظیم مي‌شود تا هر دو موتور در آغاز، خاموش شوند.

void setup() {
     // Set all the motor control pins to outputs
     pinMode(enA, OUTPUT);
     pinMode(enB, OUTPUT);
     pinMode(in1, OUTPUT);
     pinMode(in2, OUTPUT);
     pinMode(in3, OUTPUT);
     pinMode(in4, OUTPUT);
     // Turn off motors - Initial state
     digitalWrite(in1, LOW);
     digitalWrite(in2, LOW);
     digitalWrite(in3, LOW);
     digitalWrite(in4, LOW);
 }

در بخش loop، دو تابعی که قبلا توسط کاربر تعریف شده اند درون یک حلقه نرم افزاری با فاصله زمای یک ثانیه (هزار ميلي ثانیه) فراخوانی مي‌شوند.

 void loop() {
     directionControl();
     delay(1000);
     speedControl();
     delay(1000);
 }

این توابع عبارتند از:

  • ()directionControl : این تابع هر دو موتور را به مدت 2 ثانیه با حداکثر سرعت دوران در جهت مستقیم روشن مي‌کند. سپس، به مدت 2 ثانیه نیز در جهت معکوس موتور‌ها را مي‌چرخاند و در نهایت دو موتور را متوقف مي‌کند.
void directionControl() {
     // Set motors to maximum speed
     // For PWM maximum possible values are 0 to 255
     analogWrite(enA, 255);
     analogWrite(enB, 255);
     // Turn on motor A & B
     digitalWrite(in1, HIGH);
     digitalWrite(in2, LOW);
     digitalWrite(in3, HIGH); 
     digitalWrite(in4, LOW); 
     delay(2000);
     // Now change motor directions
     digitalWrite(in1, LOW);
     digitalWrite(in2, HIGH);
     digitalWrite(in3, LOW);
     digitalWrite(in4, HIGH);
     delay(2000); 
    // Turn off motors
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
 }
  • ()speedControl : این تابع سرعت دوران هر دو موتور را از مقدار صفر تا حداکثر سرعت افزایش مي‌دهد که این کار از طریق تولید سیگنال‌‌های PWM توسط تابع ()analogWrite انجام مي‌شود. پس از آن، مجددا سرعت دوران موتور‌‌ها از مقدار حداکثر تا رسیدن به صفر کاهش یافته و در نهایت دو موتور خاموش مي‌شوند.
void speedControl() {
     // Turn on motors
     digitalWrite(in1, LOW);
     digitalWrite(in2, HIGH);
     digitalWrite(in3, LOW);
     digitalWrite(in4, HIGH);
    // Accelerate from zero to maximum speed 
    for (int i = 0; i < 256; i++) {     
      analogWrite(enA, i);
      analogWrite(enB, i);     
      delay(20); 
} 
    // Decelerate from maximum speed to zero
    for (int i = 255; i >= 0; --i) { 
      analogWrite(enA, i);
      analogWrite(enB, i); 
      delay(20);
 } 
     // Now turn off motors
     digitalWrite(in1, LOW);
     digitalWrite(in2, LOW); 
     digitalWrite(in3, LOW);
     digitalWrite(in4, LOW);
 }
پست قبلی

شبکه CAN – Controller Area Network

پست بعدی

مشخصات فنی باتری و تعاریف آن‌ها

ادمین 2

ادمین 2

پست بعدی
مشخصات فنی باتری و تعاریف آن‌ها

مشخصات فنی باتری و تعاریف آن‌ها

نظرات 4

  1. آرش شیری می گوید:
    4 سال قبل

    سلام این محصول به چه دردی میخوره؟

    پاسخ
    • ادمین 2 ادمین 2 می گوید:
      4 سال قبل

      دوست عزیز این یک درایور موتور l293 هست که شما می تونید به عنوان مثال برای راه‌اندازی ربات ازش استفاده کنید.

      پاسخ
  2. جعفر می گوید:
    4 سال قبل

    حداکثر جریانی که میتوان با آن موتور را راه اندازی کرد، چقدر است؟

    پاسخ
    • می گوید:
      4 سال قبل

      سلام دوست عزیز
      همانطور که در توضیحات ذکر شده جریان خروجی برای هر کانال 600 میلی آمپر است .

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

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

راه اندازی سنسور تشخیص رنگ TCS230/TCS3200 با آردوینو

توسط 118elec .com
20 اسفند 1401
0
راه اندازی سنسور تشخیص رنگ TCS230/TCS3200 با آردوینو

در این مقاله به آموزش تشخیص رنگ با استفاده از سنسور رنگ TCS230 یا TCS3200 و آردوینو پرداخته شده است....

بیشتر بخوانید

نحوه ارتقاء مبدل XL4015

توسط 118elec .com
15 اسفند 1401
0
تغییر مبدل XL4015 با استفاده ازمحدود‌کننده‌های قابل تنظیم جریان

در این آموزش روشی ساده برای ارتقای ماژول XL4015، که یک مبدل DC به DC باک می‌باشد، با استفاده از...

بیشتر بخوانید

پیشرفت نوسان سازها در راستای پاسخ به نیازهای روز تکنولوژی

توسط نویسنده 2
14 شهریور 1401
0
پیشرفت نوسان سازها در راستای پاسخ به نیازهای روز تکنولوژی

Part components inside joystick of a console game نوسان سازهای ساعت، سیگنال مرجع دقیق زمان‌بندی‌شده‌ای برای کنترل مدار الکترونیکی ارائه...

بیشتر بخوانید

درباره ما

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

ارتباط با ما از طریق:

118elec@gmail.com

  • اصول مقاله نویسی
  • درباره ما
  • تماس با ما

Copyright © تمام حقوق این سایت متعلق به 118elec می‌باشد.

بدون نتیجه
مشاهده همه نتیجه
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور

Copyright © تمام حقوق این سایت متعلق به 118elec می‌باشد.

خوش آمدید!

ورود به حساب کاربری خود در زیر

رمز عبور را فراموش کرده اید؟ ثبت نام

ایجاد حساب جدید!

پر کردن فرم های زیر برای ثبت نام

تمام زمینه ها مورد نیاز است. ورود

رمز عبور خود را بازیابی کنید

لطفا نام کاربری یا آدرس ایمیل خود را برای تنظیم مجدد رمز عبور خود وارد کنید.

ورود