آموزش راه اندازی ماژول درایور موتور L298

آموزش راه اندازی ماژول درایور موتور L298

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

ماژول L298 درایور ( L298N DC Motor Driver Module ) چیست؟

قطعه الکترونیکی L298N در دنیای الکترونیک به عنوان درایور یا ران کننده شناخته می‌شود. درایور یا ران کننده ابزاری الکترونیکی برای کنترل جریان و ولتاژ جهت را اندازی یک مصرف کننده پر مصرف است. این قطعه الکترونیکی با دریافت فرمان از پردازنده اقدام به روشن کردن مصرف کننده می‌کند.از این قطعه بیشتر برای راه اندازی موتور DC استفاده می‌گردد. L298N دارای دو ویژگی برجسته است.

  • راه اندازی دو موتور DC جداگانه
  • توانایی تغییر جهت راست گرد و چپ گرد هر دو موتور به صورت جداگانه
  • توانایی کنترل سرعت موتور ها

راه اندازی موتور DC با ماژول درایور L298N

موتور DC

هنگام راه اندازی یک موتور الکتریکی DC اگر توان کنترل دور موتور و سرعت آن را داشته باشیم  می‌توانیم بگوییم که به صورت کامل موتور را راه‌اندازی نموده‌ایم. برای این منظور باید از دو روش زیر استفاده نماییم.

  • سیگنال PWM
  •  پل H برای کنترل چپ گرد راست گرد کردن موتور

کنترل PWM برای کنترل سرعت موتور DC

جهت افزایش و کاهش دور RPM موتور باید میزان ولتاژ ورودی موتور را افزایش و کاهش دهیم. به این صورت با افزایش ولتاژ ورودی دور و چرخش موتور در دقیقه افزایش پیدا می‌کند. هنگامی که ولتاژ ورودی کاهش یابد دور بر دقیقه چرخش موتور نیز کاهش می‌یابد.

برای این منظور از تکنیک سیگنال PWM استفاده می‌نماییم. سیگنال PWM  به این صورت است که تعداد بسیار زیادی از مقادیر یک و صفر منطقی ( 0 – 5 Vdc ) در واحد زمان ارسال می‌شود. ولتاژ خروجی با تکنیک PWM قابل افزایش و کاهش است . این افزایش و کاهش ولتاژ که به پهنای باند سیگنال ارسالی در واحد زمان بستگی دارد را چرخه‌ی کار یا ( Duty Cycle ) می‌گویند.

هر چقدر چرخه کار سیگنال PWM بیشتر باشد ولتاژ خروجی نیز متناسب با سیگنال بیشتر می‌شود. در نتیجه سرعت موتورنیز افزایش پیدا می‌کند. تصویر زیر چرخه افزایش ولتاژ خروجی با تغیر چرخه‌ی کار ( Duty Cycle ) را نمایش می‌دهد.

Pulse-Width-Modulation-PWM-Technique-with-Duty-Cycles

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

تنها راه چرخش جهت حرکت یک موتور الکتریکی DC تغییر پلاریته یا ورودی‌های مثبت و منفی دو سر مصرف کننده آن است. علت این نام گذاری در شکل قرار گیری منابع تغذیه موتور و موتور در مرکز این مدار می‌باشد.

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

هر بار که یکی از پل‌های دو طرف به صورت ضرب دری بسته‌ می‌شوند. جهت ورودی ها تغییر پیدا می‌کند.

ماژول درایور L298N

در مرکز ماژول درایور یک قطعه الکترونیکی همراه با هیت سینک وجود دارد که درایور L298N می‌باشد.

L298-Motor-Drive-chip

درایور L298N قابلیت راه اندازی همزمان دو موتور را با تکنیک پل H دارا می‌باشد. که این ماژول را گزینه‌ای مناسب برای پروژه‌های رباتیک می‌کند. زیرا با استفاده از این ماژول ره راحتی می‌توان ربات را کنترل نمود. این ماژول که دارای رگولاتور داخلی است با ولتاژی بین 4 تا 35 ولت کار می‌کند همچنین به ازای هر کانال قابلیت مصرف 2 آمپر را می‌دهد. بیشتر موتورهای DC با این ولتاژ و آمپر قابل راه اندازی هستند.

  • ولتاژ خروجی برای مصرف کننده:            5 الی 35 ولت DC
  • ولتاژ توصیه شده توسط شرکت سازنده: 5 الی 12 ولت DC
  • ولتاژ مصرفی درایور :                             5 الی 7 ولت DC
  • جریان قابل تحمل به ازای هر خروجی:    2 آمپر
  • توان ماکزیموم درایور :                           25 وات

معرفی پین‌های خروجی ماژول درایور L298N

درایور L298 در مجموع 11 پین ورودی و خروجی دارد که در ادامه به معرفی هرکدام می‌پردازیم.

L298N-Motor-Driver-Module-Pinout

VCC این پین ولتاژ مصرفی موتورها را تامین می‌کند و ولتاژی بین 5 تا 35 ولت را می‌توان به آن وصل نمود البته به توصیه شرکت سازنده ولتاژ بین 5-12 ولت کافی است.

GND منفی یا زمین است که به صورت مشترک بین منبع تغذیه و برد کنترل کننده متصل می‌شود.

5V ولتاژ مصرفی درایور است و باید به منبع تغذیه 5 ولت دی‌سی متصل گردد.

ENA با متصل کردن این پایه به ولتاژ 5 ولت یا یک منطقی یکی از دو بخش قابل کنترل درایور فعال می‌شود.

IN1 & IN2 این دو پین وظیفه کنترل پل H را دارند که مربوط به دو خروجی 1 و 2 می‌باشند.

IN3 & IN4 این دو نیز وظیفه کنترل پل H  را دارند که مربوط به به دو خروجی 3 و 4 هستند.

ENB با متصل کردن این پایه به ولتاژ 5 ولت یا یک منطقی یکی از دو بخش قابل کنترل درایور فعال می‌شود.

OUT1 & OUT2 به ورودی‌های موتور A متصل می‌گردد.

OUT3 & OUT4 به ورودی‌های موتور B متصل می‌گردد.

کنترل روشن و خاموش کردن جهت چرخش و RPM موتور

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

یک موتور DC برای روشن شدن و چرخیدن در هر طرف نیاز به یک ولتاژ مثبت و اتصال به زمین دارد برای این منظر از پین‌های IN1 & IN2 & IN4 & IN3  استفاده می‌نماییم.

لازم است به این نکته توجه کنید که IN1 & IN2 خروجی OUT1 & OUT2 را کنترل می‌نمایند که جدول کنترل به شرح زیر می‌باشد.

IN1                  IN2                  OUT1              OUT2

LOW(0)          LOW(0)           LOW(0)         LOW(0)

HIGH(1)           LOW(0)           HIGH(1)         LOW(0)

   LOW(0)          HIGH(1)            LOW(0)            HIGH(1)

HIGH(1)           HIGH(1)           HIGH(1)        HIGH(1)

 در جدول بالا خط اول در صورتی که IN1 صفر باشد OUT1 نیز  صفر خواهد بود. در نتیجه با تغییر پلاریته خروجی‌های OUT1 & OUT2 در خط دوم می‌بینیم که می‌توان جهت موتورها را تغییر داد.

برای کنترل افزایش و کاهش دور موتور لازم است که از امواج PWM  استفاده شود. اگر به پین ENA & ENB سیگنال PWM ارسال شود می‌توانیم خروجی OUT1 & OUT2 & OUT3 & OUT4 را کنترل نماییم. باید توجه داشت که ENA خروجی OUT1 & OUT2 را همزمان افزایش و کاهش می‌دهد این مورد برای ENB و OUT3 & OUT4 نیز صادق است. در صورتی که نخواهیم از سیگنال PWM استفاده نماییم و هدف روشن و خاموش کردن با حداکثر جریان باشد در کنار پین‌های ENA & ENB دو عدد جامپر وجود دارد که آن‌ها را به یک منطقی متصل می‌کند با این کار هر مقداری که به عنوان منبع تغذیه در بخش VCC وارد مدار شده باشد با تحریک ورودی‌های کنترل کننده IN 1 – 4 در خروجی OUT 1 – 4 با کمی کاهش قابل دریافت است.

میزان افت ولتاژ در ماژول درایور L298N

میزان افت ولتاژ در ماژول درایور L298N مقدار 2 ولت است. ترانزیستورهای سوئیچینگ داخلی L298N در هنگام فعال شدن افت ولتاژ تقریباً 1 ولت دارند و از آنجایی که یک پل H نیاز به عبور جریان از دو ترانزیستور دارد، کل افت ولتاژ 2 ولت است.بنابراین، اگر 12 ولت را به سوکت تغذیه موتور وصل کنید، موتورها تقریباً 10 ولت دریافت خواهند کرد.

میزان افت ولتاژ در ماژول درایور L298N

با در نظر گرفتن افت 2 ولت، اگر از موتورهای 5 ولت استفاده می کنید، باید 7 ولت را در برای سوکت تغذیه فراهم کنید و اگر موتورهای 12 ولت دارید، ولتاژ تغذیه موتور شما باید 14 ولت باشد.

از هیت سینک مناسب استفاده کنید

این افت ولتاژ منجر به هدر رفتن توان زیادی به شکل گرما می شود. به همین دلیل برای اینکه درایورهای موتور L298N به شکل صحیح کار کند و دیرتر خراب شود از یک هیت سینک بزرگ برای خنک سازی این درایور استفاده کنید

راه‌اندازی ماژول درایور L298N با آردوینو

جهت راه اندازی ماژول L298N اتصالات را مشابه شماتیک زیر به آردوینو متصل نمایید.

Wiring-L298N-Motor-Driver-Module-with-DC-TT-motors-and-Arduino-UNO

VCC را به مثبت 12 ولت منبع تغذیه‌ای که می‌خواهید ولتاژ و جریان موتورها را تامین کند متصل کنید. ( اخطار از منبع تغذیه بیشتر از 2 آمپر استفاده نکنید. )

GND را منفی یا زمین منبع تغذیه و یکی از GND های برد آردوینو متصل کنید. ( اخطار : در صورتی که دو برد مجزا یک منفی مشترک نداشته باشند ارتباط برقرار نخواد شد. )

OUT1 & PUT2 را که خروجی ماژول هستند به مصرف کننده یا موتور شماره یک متصل نمایید.

ENA را به پایه دیجیتال شماره 9 آردوینو متصل کنید. ( PWM )

IN1 را به پایه دیجیتال شماره 8 آردوینو متصل کنید.

IN2 را به پایه دیجیتال شماره 7 آردوینو متصل کنید.

IN3 را به پایه دیجیتال شماره 5 آردوینو متصل کنید.

IN4 را به پایه دیجیتال شماره 4 آردوینو متصل کنید.

ENB را به پایه دیجیتال شماره 3 آردوینو متصل کنید. ( PWM )

OUT3 & OUT4 را که خروجی ماژول هستند به مصرف کننده یا موتور شماره دو متصل نمایید.

نمونه کد آردوینو جهت راه اندازی ماژول درایور موتور L298N

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

// 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);
}

برای این مطلب ۱۰ دیدگاه ثبت شده است

مجید

سلام مهندس تشکر از مطلبی که گذاشتید
عالی و کاربردی بود
مهندس امکانش هست با کارت rfid به برد اردوینو یا میکرو دستور داد که موتور چپ گرد یا راست گرد با سرعت پایین قدرت بالا فرمان داد
کدهای فرمان را هم میشه برام بزارید یا ارسال کنید
یا اگه تو کتابخانه اردوینو هست راهنمایی کنید
سپاسگزارم

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

پاسخ
1402/10/25
R_F

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

کامران محمودزاده : ممنون از لطف شما. خوشحالم که مطالبم برای شما مفید بوده است . در آینده، در مورد سایر ماژول های کاربردی نیز مطالبی منتشر خواهیم کرد.

پاسخ
1402/10/18
سعادت

سلام نمی شه ماژل گیرنده کدلرن را به درایور موتور وصل کنیم

کامران محمودزاده : سلام ، بله میشه این کارو انجام داد و یک ریموت کنترل ساخت

پاسخ
1402/10/07
احمدرضا

سلام ارادت مهندس بسیار عالی بود? اگر هیت سینگ مناسب گذاسته بشه حداکثر جریان که 2 آمپر هست رو جواب میده؟

کامران محمودزاده : سلام استاد بزرگوار ، اگر یک هیت سینک خوب بذاری بله به راحتی تا 2 آمپر میشه ازش جریان کشید

پاسخ
1402/01/19
محمد

درود بر شما
تا بحال ندیده بودم راه اندازی درایور موتور رو انقدر ساده و کاربردی و دقیق اموزش بدن خدا قوت
اگه ممکنه نحوه ساخت اسپید کنترلر برای موتورهای براش / کورلس و براشلس رو هم اموزش بدید ممنون

شارژ کیف پول : برای تشکر از دیدگاه مفیدتان 10,000 تومان به کیف پول شما افزوده شد.

کامران محمودزاده : سلام آقا محمد عزیز خوشحالم که مطالب رو دنبال می کنید. انشالله روی درایور موتور براشلس هم کار می کنیم.

پاسخ
1402/01/13
برای ارسال دیدگاه، ابتدا وارد حساب کاربری خود شوید
آموزش رایگان
×
به سبد خرید اضافه شد
×
به سبد خرید اضافه شد