مقاله

ماژول L298 چیست ؟ — راهنمای کاربردی استفاده

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

کنترل موتور DC

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

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

مدولاسیون پهنای پالس برای کنترل سرعت

سرعت یک موتور DC را می‌توان با تغییر ولتاژ ورودی آن کنترل کرد. یک روش معمول برای انجام این کار استفاده از PWM است. مدولاسیون پهنای پالس روشی است که در آن مقدار متوسط ​​ولتاژ ورودی با تولید دنباله‌ای از پالس‌های ON-OFF تنظیم می‌شود. ولتاژ متوسط ​​متناسب با پهنای پالس‌ها، معروف به چرخه کاری (Duty Cycle)، است.

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

تصویر زیر تکنیک PWM را با چرخه‌های کاری مختلف و ولتاژ متوسط ​​متناظر با آن‌ها نشان می‌دهد.

تکنیک مدولاسیون پهنای پاس (PWM)
تکنیک مدولاسیون پهنای پاس (PWM)

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

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

بسته شدن همزمان دو کلید خاص، قطب ولتاژ اعمال شده به موتور را برعکس می‌کند و این امر باعث تغییر جهت چرخش موتور می‌شود. تصویر متحرک زیر، عملکرد مدار پل اچ را نشان می‌دهد.

عملکرد پل اچ
عملکرد پل اچ

آشنایی با ماژول L298

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

ماژول L298

منبع تغذیه ماژول L298

ماژول درایور موتور L298N از طریق 3 پین ۳٫۵ میلی‌متری تغذیه می‌شود و شامل پین‌هایی برای منبع تغذیه موتور (Vs)، زمین و منبع تغذیه 5 ولت (Vss) است.

تذکر: آی‌سی درایور 298N در واقع دارای دو پایه توان ورودی است: “Vss” و “Vs”. پل اچ از پین Vs توان خود را برای هدایت موتورها دریافت می‌کند. ولتاژ این پین می‌تواند 5 تا 35 ولت باشد. ولتاژ Vss برای تغذیه مدارهای منطقی است که مقدار آن ممکن است بین 5 تا 7 ولت باشد. هر دوی این ولتاژ‌ها زمین مشترکی به نام “GND” دارند.

ماژول تصویر زیر، دارای یک رگولاتور ولتاژ 78M05 با مقدار ۵ ولت است که سازنده آن اس‌تی‌مایکروالکترونیکس (STMicroelectronics) است. این رگولاتور روی برد، از طریق جامپر فعال‌ یا غیرفعال‌ می‌شود.

ماژول L298N

وقتی این جامپر در مدار قرار داده شود، رگولاتور 5 ولت فعال می‌شود و منبع تغذیه منطقی (Vss) را از منبع تغذیه موتور (Vs) تأمین می‌کند. در این حالت، ترمینال ورودی 5 ولت به عنوان پین خروجی عمل می‌کند و 5 ولتِ 0٫5 آمپری را تحویل می‌دهد. می‌توان از این رگولاتور برای تغذیه آردوینو یا مدارهای دیگری که به منبع تغذیه 5 ولت نیاز دارند، استفاده کرد.

هنگامی که جامپر را برداریم، رگولاتور 5 ولت از کار می‌افتد و باید 5 ولت را از طریق ترمینال ورودی 5 ولت جداگانه تأمین کنیم.

اخطار: اگر منبع تغذیه موتور کمتر از 12 ولت باشد، می‌توانید جامپر را در در مدار قرار دهید. اگر ولتاژ بیش از 12 ولت است، باید جامپر را بردارید تا از خراب شدن رگولاتور 5 ولت جلوگیری کنید. همچنین، دقت کنید زمانی که جامپر در جای خود قرار دارد، منبع تغذیه موتور و منبع تغذیه 5 ولت را جداگانه تأمین نکنید.

افت ولتاژ ماژول L298N

اگر 12 ولت را به ترمینال منبع تغذیه موتور وصل کنیم، موتورها ولتاژ حدود 10 ولت دریافت می‌کنند. این بدین معناست که یک موتور 12 ولت DC هرگز با حداکثر سرعت خود نخواهد چرخید.

افت ولتاژ ماژول L298N

برای خارج شدن حداکثر سرعت از موتور ، منبع تغذیه موتور باید کمی ولتاژ بالاتر (2 ولت) از ولتاژ واقعی موتور باشد.

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

پین‌های خروجی ماژول L298

کانال‌های خروجی درایور موتور L298N برای موتور A و B با دو پین 3٫5 میلیمتری به لبه ماژول متصل می‌شوند.

پین‌ های خرو L298

می‌توانید دو موتور DC با ولتاژ بین 5 تا 35 ولت را به این ترمینال‌ها متصل کنید. هر کانال روی ماژول می‌تواند حداکثر 2A به موتور DC تحویل دهد. با این حال، میزان جریان تحویل داده شده به موتور به منبع تغذیه سیستم بستگی دارد.

پین‌های کنترل ماژول L298

برای هریک از کانال‌های L298N، دو نوع پین کنترل وجود دارد که به ما امکان کنترل همزمان سرعت و چرخش موتورهای DC را می‌دهد. پین‌های کنترلِ جهت و پین‌های کنترلِ سرعت.

پین‌های کنترل جهت در شکل زیر مشخص شده‌اند.

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

با استفاده از پین‌های کنترل جهت، می‌توانیم موتور را در دو جهت بچرخانیم‌. این پین‌ها در واقع سوئیچ‌های مدار پل اچ داخل آی‌سی L298N را کنترل می‌کنند. ماژول L298 دارای دو پایه کنترلِ جهت برای هر کانال است. پایه‌های IN1 و IN2 جهت چرخش موتور A را کنترل می‌کنند، در حالی که IN3 و IN4 موتور B را کنترل می‌کنند. جهت چرخش یک موتور را می‌توان با اعمالِ منطقِ HIGH (5 ولت) یا منطقِ LOW (زمین) به این ورودی‌ها کنترل کرد. جدول زیر نحوه انجام این کار را نشان می‌دهد.

ورودی ۱ورودی ۲جهت چرخش
Low (0)Low (0)موتور خاموش
High (1)Low (0)مستقیم
Low (0)High (1)عکس
High (1)High (1)موتور خاموش

پین‌های کنترل سرعت در شکل زیر مشخص شده‌اند.

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

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

با اعمال HIGH، این پایه‌ها موتور را می‌چرخانند و اعمال LOW باعث متوقف شدن آن‌ها می‌شود، اما با PWM می‌توانیم سرعت موتورها را کنترل کنیم.

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

پین‌های ماژول L298N

شکل زیر ماژول L298 و پین‌های آن را نشان می‌دهد.

ماژول L298

  • پین VCC توان موتور را تأمین می‌کند. ورودی این پین می‌تواند هر مقداری بین 5 تا 35 ولت باشد. به یاد داشته باشید اگر جامپر 5 ولت EN در جای خود قرار داشته باشد، برای رسیدن به حداکثر سرعت، باید 2 ولت بیشتر از ولتاژ واقعی موتور را تأمین کنید.
  • GND پایه زمین مشترک است.
  • پین 5V منبع تغذیه مدارهای منطقی سوئیچینگ داخل آی‌سی L298N است. اگر جامپر 5 ولت EN در جای خود باشد، این پین به عنوان یک خروجی عمل می‌کند و می‌توان از آن برای تغذیه آردوینو استفاده کرد. اگر جامپر ۵ ولت EN برداشته شود، باید آن را به پایه 5 ولت آردوینو وصل کنید.
  • از پین‌های ENA برای کنترل سرعت موتور A استفاده می‌شود. اعمال HIGH به این پایه (HIGH نگه داشتن جامپر) باعث چرخش موتور A می‌شود و LOW شدن آن باعث متوقف شدن موتور می‌شود. برداشتن جامپر و اتصال ورودی PWM به این پایه، باعث می‌شود بتوانیم سرعت موتور A را کنترل کنیم.
  • از پین‌های IN1 و IN2 برای کنترل جهت چرخش موتور A استفاده می‌شود. هنگامی که یکی از آن‌ها HIGH و دیگری LOW باشد، موتور A می‌چرخد. اگر هر دو ورودی HIGH یا LOW باشند، موتور A متوقف می‌شود.
  • پین‌های IN3 و IN4 برای کنترل جهت چرخش موتور B به کار می‌روند. وقتی یکی از این پین‌ها HIGH باشد و دیگری LOW، موتور B می‌چرخد. اگر هر دو ورودی HIGH یا LOW باشند، موتور B متوقف می‌شود.
  • از پین‌های ENB برای کنترل سرعت موتور B استفاده می‌شود. اعمال HIGH به این پایه (HIGH نگه داشتن جامپر) باعث چرخش موتور B می‌شود، LOW کردن آن باعث متوقف شدن موتور می‌شود. با برداشتن جامپر و اتصال این پایه به ورودی PWM می‌توانیم سرعت موتور B را کنترل کنیم.
  • پین‌های OUT1 و OUT2 به موتور A متصل می‌شوند.
  • پین‌های OUT3 و OUT4 به موتور B متصل می‌شوند.

کنترل موتور DC با ماژول L298

اکنون که همه چیز را در مورد ماژول L298N می‌دانیم، می‌توانیم اتصال آن به آردوینو را شروع کنیم.

با اتصال منبع تغذیه به موتورها شروع می‌کنیم. در این پروژه، از موتورهای اصطلاحاً گیربکس DC (همچنین معروف به موتورهای TT) استفاده شده که معمولاً در ربات‌های دو چرخ به کار می‌روند. ولتاژ‌ نامی این موتورها 3 تا 12 ولت است. بنابراین، با در نظر گرفتن افت ولتاژ داخلی آی‌سی L298N، موتورها 10 ولت دریافت می‌کنند و با سرعت کمتری می‌چرخند که البته قابل قبول است.

در ادامه، باید 5 ولت را برای مدار منطقی L298N تأمین کنیم. بدین منظور، از رگولاتور 5 ولت استفاده می‌کنیم و 5 ولت را از منبع تغذیه موتور می‌گیریم، بنابراین جامپر 5 ولت EN را در جای خود نگه دارید.

اکنون پین‌های ورودی و فعال‌ساز (ENA و IN1 و IN2 و IN3 و IN4 و ENB) از ماژول L298N به شش پایه خروجی دیجیتال آردوینو (۹ و ۸ و ۷ و ۵ و ۴ و ۳) متصل شده‌اند. توجه داشته باشید که پایه‌های خروجی آردوینو، یعنی 9 و 3، هر دو PWM هستند.

در نهایت، یک موتور را به ترمینال A (OUT1 و OUT2) و موتور دیگر را به ترمینال B (OUT3 و OUT4) متصل کنید. بعد از اتمام کار باید چیزی شبیه به تصویر زیر داشته باشید.

ماژول L298N

کد آردوینو کنترل موتور DC

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

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

در بخش تنظیم (setup) کد، تمام پین های کنترل موتور به عنوان خروجی (OUTPUT) دیجیتال معرفی می‌شوند و برای خاموش (OFF) کردن هر دو موتور، LOW در نظر گرفته می‌شود.

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

این توابع به صورت زیر هستند:

  • () directionControl: این تابع هردو موتور را به صورت مستقیم در حداکثر سرعت و در مدت دو ثانیه می‌چرخاند. سپس جهت چرخش موتور را عکس کرده و در جهت عکس، آن را به مدت دو ثانیه دیگر می‌چرخاند. در نهایت، موتورها خاموش می‌شوند.
  • () speedControl: این تابع به دو موتور شتاب می‌دهد و با تولید سیگنال‌های PWM و استفاده از تابع ()analogWrite سرعت دو موتور را از صفر تا مقدار حداکثر افزایش می‌دهد. سپس، سرعت آن‌ها را به صفر کاهش داده، در نهایت، موتورها خاموش می‌شوند.

کنترل موتور پله‌ای با ماژول L298

اگر قصد ساخت چاپگر سه‌بعدی یا دستگاه CNC داشته باشید، باید از تعدادی موتور پله‌ای استفاده کرده و آن‌ها را کنترل کنید. استفاده از آردوینو به تنهایی برای این کاربردها گزینه مناسبی نیست و می‌توانید از یک درایور مخصوص موتور پله‌ای، مانند A4988 نیز استفاده کنید.

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

تصویر زیر موتور پله‌ای را با پل اچ نشان می‌دهد.

در این پروژه، از موتور پله‌ای دوقطبی NEMA 17 با ولتاژ نامی 12 ولت استفاده شده است. این موتور 200 گام در هر دور را ارائه می‌دهد و می‌تواند با سرعت 60 دور در دقیقه کار کند. اگر چنین مشخصاتی را از قبل درباره موتور نمی‌دانید، حتماً درباره آن‌ها اطلاعات کسب کنید

قبل از اینکه موتور را با ماژول وصل کنیم، باید سیم‌های A+ و A- و B+ و B- روی موتوری که قصد استفاده از آن را دارید تعیین کنید. بهترین راه برای انجام این کار، بررسی دیتاشیت موتور است. برای موتوری که در حال بررسی آن هستیم، این سیم‌ها قرمز، سبز، آبی و زرد هستند.

موتور پله‌ای

اتصالات نسبتاً ساده است. با اتصال منبع تغذیه 12 ولت خارجی به ترمینال VCC شروع کنید. و جامپر ۵ ولت EN را در جای خود نگه دارید. همچنین باید هر دو جامپر ENA و ENB را در جای خود قرار دهید تا موتور همیشه فعال باشد.

اکنون پین‌های ورودی (IN1 و IN2 و IN3 و IN4) ماژول L298 را به چهار پایه خروجی دیجیتال آردوینو (8 و 9 و 10 و 11) متصل کنید.

در پایان، همان‌طور که در تصویر زیر نشان داده شده است، سیم‌های A + و A- و B + و B- را از موتور پله‌ای به ماژول وصل کنید.

درایو موتور پله‌ای دوقطبی (NEMA 17)

کد آردوینو کنترل موتور پله‌ای NEMA 17

کد زیر نحوه پیاده‌سازی کنترل یک موتور پله‌ای دوقطبی، مانند NEMA 17 را با درایور موتور L298N نشان می‌دهد که می‌توان از آن به عنوان کد پایه برای پروژه‌‌های عملی بزرگ‌تر استفاده کرد.

اکنون کد بالا را شرح می‌دهیم. کد با گنجاندن کتابخانه Arduino Stepper شروع می‌شود. کتابخانه موتور پله‌ای (Arduino Stepper) همراه با Arduino IDE است و توالی پالس‌هایی که به موتور پله‌ای ارسال خواهیم کرد را مهیا می‌کند.

پس از گنجاندن کتابخانه، متغیری به نام stepsPerRevolution تعریف می‌کنیم. همان‌طور که از نام آن مشخص است، این متغیر تعداد گام‌ها در هر دور را نشان می‌دهد. در موردی که ما بررسی می‌کنیم، این مقدار برابر با 200 است، یعنی 1٫8 درجه در هر گام.

در ادامه، نمونه‌ای از کتابخانه Stepper را ایجاد می‌کنیم. با این کار، تعداد گام‌ها در هر دور اتصال پین موتور و آردوینو به عنوان پارامتر خواهد بود.

در بخش تنظیم (Setup) کد، با فراخوانی تابع ()setSpeed ​​سرعت موتور پله‌ای را تنظیم و ارتباط سریال را مقداردهی اولیه می‌کنیم.

در بخش حلقه کد، به سادگی تابع ()step را فراخوانی می‌کنیم که موتور را با سرعت تعیین شده توسط تابع ()setSpeed ​​با تعداد مشخصی از گام‌ها می‌چرخاند. اگر این تابع یک عدد منفی بگیرد، باعث تغییر جهت چرخش موتور می‌شود.

نوشته های مشابه

دیدگاهتان را بنویسید

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