راه اندازی موتور dc با l298 آردوینو با روش PWM

امیدوارم تا اینجا آموزش‌هامون حسابی به کارت اومده باشن و حسابی حال کرده باشی. حالا وقتشه که بریم سراغ یه مبحث خیلی باحال و کاربردی: راه اندازی موتور dc با l298 آردوینو با روش PWM

توی این مقاله قراره با هم قدم به قدم پیش بریم و یاد بگیریم چطور یه موتور DC رو راه‌اندازی کنیم. از سیم‌کشی و اتصالات بگیر تا نوشتن کد توی آردوینو IDE، همه چیز رو حسابی توضیح می‌دیم تا قشنگ دستت بیاد. هدفمون اینه که هم روشن و خاموش کردن موتور رو یاد بگیری و هم بتونی با PWM (مدولاسیون عرض پالس)، سرعتش رو هم کنترل کنی. اینجوری می‌تونی کلی کاربرد خفن تو پروژه‌هات داشته باشی.

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

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

 

نمایش محصولات و قطعات مورد نیاز برای اسمبللیست قطعات مورد نیاز راه اندازی موتور dc با l298 آردوینو با روش PWM
آردوینو R3 UNO

آردوینو R3 UNO

350 هزار تومان

تعداد موردنیاز : 1

موتور زرد تک شفت 270 دور

موتور زرد تک شفت 270 دور

65 هزار تومان

تعداد موردنیاز : 2

سیم برد برد و جامپر

سیم برد برد و جامپر

51 هزار تومان

تعداد موردنیاز : 1

مولتی ترن 10 کیلو اهم ایستاده

مولتی ترن 10 کیلو اهم ایستاده

تعداد موردنیاز : 1

ناموجود

 

تفاوت L298 با L293 چیست؟

خیلی وقتا دیده میشه افراد بین دو آی‌سی L298 و L293 دو دل هستن. در اصل این دو آی‌سی برای کنترل موتورهای DC طراحی شدن، اما تفاوت‌هایی دارن که خیلی مهمه:

راه اندازی موتور dc با l298 آردوینو با روش PWM

اگه موتوری سبک‌دار (مثلاً 6 ولت و کم‌مصرف) استفاده می‌کنی، L293 جواب می‌ده.
ولی اگه موتورهایی داری که زیر بار جریان بالاتری می‌کشن، L298 انتخاب بهتریه.

 

ویژگی L298 L293
جریان خروجی هر کانال تا 2 آمپر تا 0.6 آمپر
تکنولوژی ساخت ترانزیستوری قدیمی‌تر
افت ولتاژ داخلی (ولتاژ از دست‌رفته) بیشتر کمتر
توانایی درایو موتورهای سنگین‌تر بله نه خیلی
ولتاژ کاری موتور تا 46 ولت تا 36 ولت
دمای کارکرد بالا ممکنه داغ شه کمتر داغ می‌کنه

 

آشنایی با مفهوم PWM

PWM یا “مدولاسیون عرض پالس” (Pulse Width Modulation) یک تکنیک بسیار کاربردی در الکترونیک است که به ما امکان می‌دهد مقدار متوسط ولتاژ یا توان ارسالی به یک دستگاه، مثل موتور DC، را با خاموش و روشن کردن سریع منبع تغذیه کنترل کنیم. این تکنیک با تغییر نسبت زمان روشن بودن سیگنال (حالت ON) به زمان خاموش بودن آن (حالت OFF) در یک دوره تناوب، که به آن **دوره کاری** (Duty Cycle) گفته می‌شود، کار می‌کند. به عبارت ساده‌تر، دوره کاری تعیین می‌کند که سیگنال PWM در چه درصدی از زمان روشن است و این درصد مستقیماً روی سرعت یا قدرت خروجی دستگاه تأثیر می‌گذارد.

PWM در کنترل سرعت موتور DC

برای کنترل سرعت موتور DC با استفاده از PWM، می‌توانیم از سیگنال‌های PWM تولیدشده توسط میکروکنترلرهایی مثل **آردوینو** استفاده کنیم. در آردوینو، تابع `analogWrite(pin, value)` برای این منظور به کار می‌رود. در این تابع:
– مقدار `value` می‌تواند بین 0 تا 255 باشد:
– **0**: موتور کاملاً خاموش است.
– **255**: موتور با حداکثر قدرت کار می‌کند.
– مقادیر بین 0 تا 255: سرعت موتور را به‌صورت تدریجی تنظیم می‌کنند.

 

راه اندازی موتور dc با l298 آردوینو با روش PWM

 

بسته به اندازه و قدرت موتور، می‌توان خروجی PWM آردوینو را به بیس یک ترانزیستور یا گیت یک **ماسفت** (MOSFET) متصل کرد. این کار باعث می‌شود که موتور، حتی اگر بسیار پرقدرت باشد، از طریق سیگنال PWM به‌صورت دقیق کنترل شود. در این حالت، آردوینو با تولید سیگنال PWM، گیت ماسفت را مرتباً خاموش و روشن می‌کند و به این ترتیب، موتور با سرعت دلخواه می‌چرخد. این روش نه‌تنها ساده و مؤثر است، بلکه به دلیل مصرف انرژی پایین آردوینو، برای کنترل موتورهای قوی نیز بسیار مناسب است.

 

پروژه کنترل موتور dc با l298 آردوینو با روش PWM

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

 

نحوه اتصال ماژول L298N به آردوینو

برای اینکه بتونی موتورت رو به آردوینو وصل کنی، باید بدونی هر پایه چی کار می‌کنه

راه اندازی موتور dc با l298 آردوینو با روش PWM

 

این بخش نحوه اتصال فیزیکی ماژول L298N به آردوینو Uno را مشخص می‌کند. اتصال صحیح پین‌ها برای عملکرد درست موتورها ضروری است. جدول زیر اتصالات را نشان می‌دهد:

پین ماژول L298N متصل به پایه آردوینو توضیحات
IN1 11 کنترل جهت چرخش موتور A (ورودی اول)، سیگنال دیجیتال برای جهت‌دهی.
IN2 10 کنترل جهت چرخش موتور A (ورودی دوم)، مکمل IN1 برای تغییر جهت.
IN3 5 کنترل جهت چرخش موتور B (ورودی اول)، سیگنال جهت‌دهی.
IN4 6 کنترل جهت چرخش موتور B (ورودی دوم)، مکمل IN3 برای تغییر جهت.
ENA (PWM) A2 تنظیم سرعت موتور A با استفاده از PWM، مقدار 0 تا 255.
ENB (PWM) A1 تنظیم سرعت موتور B با استفاده از PWM، مقدار 0 تا 255.
VCC منبع 12V خارجی تأمین ولتاژ اصلی برای تغذیه موتورها، باید با مشخصات موتور سازگار باشد.
GND GND آردوینو اتصال زمین مشترک برای جلوگیری از نویز و اطمینان از عملکرد صحیح.
5V 5V آردوینو (اختیاری) تغذیه منطقی ماژول (در صورت نیاز)، معمولاً برای مدار کنترل.

نکته مهم: پین‌های A1 و A2 به صورت پیش‌فرض PWM پشتیبانی نمی‌کنند. برای استفاده از PWM، پیشنهاد می‌شود ENA را به پین 9 و ENB را به پین 3 تغییر دهید، زیرا این پین‌ها در آردوینو Uno قابلیت PWM دارند.

 

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

تعریف پایه‌ها

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

int in1 = 11; // ورودی اول موتور A، برای کنترل جهت چرخش.
int in2 = 10; // ورودی دوم موتور A، برای تغییر جهت مخالف.
int in3 = 5;  // ورودی اول موتور B، برای کنترل جهت چرخش.
int in4 = 6;  // ورودی دوم موتور B، برای تغییر جهت مخالف.
int ENA = A2; // پایه برای تنظیم سرعت موتور A با PWM.
int ENB = A1; // پایه برای تنظیم سرعت موتور B با PWM.

 

تنظیم پایه‌ها

در این بخش، پایه‌ها به عنوان خروجی تنظیم می‌شوند تا آردوینو بتواند سیگنال‌های کنترلی را به ماژول ارسال کند.

void setup() {
  pinMode(in1, OUTPUT); // تنظیم IN1 به عنوان خروجی برای جهت موتور A.
  pinMode(in2, OUTPUT); // تنظیم IN2 به عنوان خروجی برای جهت موتور A.
  pinMode(in3, OUTPUT); // تنظیم IN3 به عنوان خروجی برای جهت موتور B.
  pinMode(in4, OUTPUT); // تنظیم IN4 به عنوان خروجی برای جهت موتور B.
  pinMode(ENA, OUTPUT); // تنظیم ENA به عنوان خروجی برای سرعت موتور A.
  pinMode(ENB, OUTPUT); // تنظیم ENB به عنوان خروجی برای سرعت موتور B.
}

 

کنترل موتورها

این بخش جهت چرخش موتورها (جلو، توقف، عقب) را بدون کنترل سرعت مدیریت می‌کند.

void loop() {
  // چرخش به جلو: فعال کردن جهت مثبت برای هر دو موتور.
  digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
  delay(1000); // تاخیر 1 ثانیه.

  // توقف: غیرفعال کردن تمام سیگنال‌ها.
  digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  digitalWrite(in3, LOW); digitalWrite(in4, LOW);
  delay(500); // تاخیر 0.5 ثانیه.

  // چرخش به عقب: فعال کردن جهت منفی برای هر دو موتور.
  digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
  delay(1000); // تاخیر 1 ثانیه.
}

 

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

این بخش از PWM برای تنظیم سرعت موتورها استفاده می‌کند و جهت را نیز کنترل می‌کند.

void loop() {
  // چرخش به جلو با سرعت متوسط: تنظیم سرعت و جهت مثبت.
  analogWrite(ENA, 150); analogWrite(ENB, 150);
  digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
  delay(1000); // تاخیر 1 ثانیه.

  // توقف: تنظیم سرعت به صفر.
  analogWrite(ENA, 0); analogWrite(ENB, 0);
  delay(500); // تاخیر 0.5 ثانیه.

  // چرخش به عقب با سرعت کم: تنظیم سرعت و جهت منفی.
  analogWrite(ENA, 80); analogWrite(ENB, 80);
  digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
  delay(1000); // تاخیر 1 ثانیه.
}

 

تابع PWM سفارشی

این تابع یکپارچه‌سازی کنترل سرعت و جهت را ساده‌تر می‌کند.

void ABCD(int a, int b, int c, int d) {
  // تنظیم سرعت موتورها با PWM و جهت با سیگنال دیجیتال.
  analogWrite(ENA, a); analogWrite(ENB, b);
  digitalWrite(in1, c); digitalWrite(in2, !c); // جهت مخالف برای IN2.
  digitalWrite(in3, d); digitalWrite(in4, !d); // جهت مخالف برای IN4.
}

void loop() {
  // چرخش به جلو با سرعت متوسط.
  ABCD(150, 150, HIGH, HIGH);
  delay(1000); // تاخیر 1 ثانیه.

  // توقف.
  ABCD(0, 0, LOW, LOW);
  delay(500); // تاخیر 0.5 ثانیه.

  // چرخش به عقب با سرعت کم.
  ABCD(80, 80, LOW, LOW);
  delay(1000); // تاخیر 1 ثانیه.
}

 

برای دانلود کامل فایل های این آموزش به قسمت انتهایی آموزش بروید و روی گذینه دانلودی کلیلک کنید.راه اندازی موتور dc با l298 آردوینو با روش PWM
// تعریف پایه‌ها
int in1 = 11; // ورودی اول موتور A برای کنترل جهت.
int in2 = 10; // ورودی دوم موتور A برای جهت مخالف.
int in3 = 5;  // ورودی اول موتور B برای کنترل جهت.
int in4 = 6;  // ورودی دوم موتور B برای جهت مخالف.
int ENA = A2; // پایه سرعت موتور A (توجه: PWM محدود).
int ENB = A1; // پایه سرعت موتور B (توجه: PWM محدود).

void setup() {
  pinMode(in1, OUTPUT); // تنظیم جهت موتور A.
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT); // تنظیم جهت موتور B.
  pinMode(in4, OUTPUT);
  pinMode(ENA, OUTPUT); // تنظیم سرعت موتور A.
  pinMode(ENB, OUTPUT); // تنظیم سرعت موتور B.
}

void loop() {
  // چرخش به جلو با سرعت متوسط.
  digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // جهت مثبت موتور A.
  digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // جهت مثبت موتور B.
  analogWrite(ENA, 150); analogWrite(ENB, 150);    // سرعت متوسط.
  delay(2000); // 2 ثانیه.

  // توقف کامل.
  digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  digitalWrite(in3, LOW); digitalWrite(in4, LOW);
  analogWrite(ENA, 0); analogWrite(ENB, 0);        // سرعت صفر.
  delay(1000); // 1 ثانیه.

  // چرخش به عقب با سرعت کم.
  digitalWrite(in1, LOW); digitalWrite(in2, HIGH);  // جهت منفی موتور A.
  digitalWrite(in3, LOW); digitalWrite(in4, HIGH);  // جهت منفی موتور B.
  analogWrite(ENA, 80); analogWrite(ENB, 80);      // سرعت کم.
  delay(2000); // 2 ثانیه.

  // توقف دوباره.
  digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  digitalWrite(in3, LOW); digitalWrite(in4, LOW);
  analogWrite(ENA, 0); analogWrite(ENB, 0);        // سرعت صفر.
  delay(2000); // 2 ثانیه.
}

نکات تکمیلی

  • محدودیت PWM: پین‌های A1 و A2 PWM نیستند. برای عملکرد صحیح، ENA را به 9 و ENB را به 3 تغییر دهید.
  • تست سخت‌افزاری: اتصالات و منبع 12V را بررسی کنید.
  • محافظت: از دیود برای جلوگیری از جریان برگشتی استفاده کنید.
  • تنظیم سرعت: مقادیر PWM (0-255) را بر اساس نیاز موتور تنظیم کنید.
  • جامپرها: اگر ماژول جامپر دارد، برای PWM آن‌ها را بردارید.

 

باهم مرور کنیم چه کار هایی انجام دادیم و چی یاد گرفتیم 

  • ماژول L298 رو به آردوینو وصل کنیم

  • موتورهای DC رو روشن/خاموش کنیم

  • جهت چرخش رو تغییر بدیم

  • سرعت چرخش رو با PWM کنترل کنیم

این پروژه یکی از پایه‌ای‌ترین پروژه‌های رباتیک و کنترل موتوره که می‌تونه توی خیلی از پروژه‌هات بهت کمک کنه؛ از ماشین کنترلی گرفته تا ربات مسیریاب.

اگه این آموزش برات مفید بود، حتما توی بخش نظرات بنویس که به چه پروژه‌هایی علاقه‌مندی؟ یا اگر سوالی داشتی درباره ماژول L298 یا کدنویسی آردوینو، همین پایین بپرس، جواب می‌دم. تجربه خودت از کار با L298 رو هم بنویس که بقیه بتونن استفاده کنن. منتظر کامنت‌هاتون هستم

boxdownlod باکس دانلود

راهنمای دانلود :
  • برای دانلود فایل های پیوستی ابتدا در حساب کاربری خود ورود یا ثبت نام کنید.
  • در صورت عدم دانلود فایل پیوست شده می توانید در قسمت گزارش خرابی لینک دلیل عدم دانلود را شرح دهید و از ما امتیاز دریافت کنید .
  • تمامی فایل های پیوست شده متعلق به سایت ربات افزار می باشد و نشر آن به هر نحوه، قانونی و شرعی اشکال دارد.
رمز فایل: robotafzar.com
گزارش خرابی لینک
×
این فیلد هنگام مشاهده فرم مخفی است
بابت گزارش خرابی 3 امتیاز برای شما اضافی میگردد.
آیا این مقاله برای شما مفید بود؟
_______ _______
مقالات مرتبط

مقالات مرتبط

محصولات مرتبط

محصولات مرتبط

آردوینو R3 UNO

آردوینو
-16% آردوینو MEGA 2560

آردوینو MEGA 2560 R3

آردوینو
-16% آردوینو Due

آردوینو Due

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

این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 37,587 نفر

1 + یک =

×
×