آموزش آردوینوپروژه های آردوینو

کنترل موتور DC با ترانزیستور دارلینگتون و Arduino

پین های GPIO آردوینو تنها قادر به ارائه حداکثر جریان 40 میلی آمپر هستند. از آنجایی که حتی موتورهای DC کوچک 5 ولت می توانند 50 میلی آمپر یا بیشتر جریان داشته باشند، توصیه نمی شود که موتورهای DC را مستقیماً از پایه های GPIO آردوینو تغذیه کنید. در این آموزش به موارد زیر می پردازیم و با آنها آشنا می شویم:

  • مشکلات رایج در اتصال و کنترل یک موتور DC که نیاز به جریان بالا دارد
  • چگونه می توان از ترانزیستور دارلینگتون برای به حرکت درآوردن موتورها، رله ها و سلونوئیدها با آردوینو استفاده کرد؟
  • نحوه کنترل سرعت موتور DC با استفاده از ترانزیستور دارلینگتون TIP120 و آردوینو

مشکل بارهای القایی چیست؟

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

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

بستن سوئیچ باعث می شود جریان از سیم پیچ عبور کند و میدان مغناطیسی (با رنگ آبی نشان داده شده) در اطراف سیم پیچ ایجاد کند:

مشکل بارهای القایی چیست؟

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

بازگشت میدان مغناظیسی به مدار

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

استفاده از دیود برای جلوگیری بازگشت جریان

ترانزیستور دارلینگتون TIP120 برای کنترل موتور DC

ترانزیستور دارلینگتون عمدتاً برای تأمین جریان بسیار بالا با جریان بیس کم استفاده می شود.

TIP120 چگونه کار می کند؟

TIP120 یک ترانزیستور دارلینگتون محبوب است زیرا ارزان است، ولتاژهای تا 60 ولت را کنترل می کند و بهره ولتاژ بالایی دارد. TIP120 دارای 2 ترانزیستور NPN و یک دیود بزرگ برای جلوگیری از برگشت EMF است. در اینجا یک شماتیک از مدار داخلی TIP120 آمده است:

مدار داخلی TIP120

پایه های TIP120 در تصویر زیر آمده است:

پایه های TIP120

اتصال موتور DC و TIP120 به ARDUINO

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

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
  • آردوینو اونو یا پرو مینی
  • ترانزیستور دارلینگتون TIP120
  • موتور DC (5-9 ولت)
  • مقاومت 2.2 کیلو اهم
  • مقاومت 330 اهم
  • یک عدد LED
  • پتانسیومتر 10 کیلو اهم
  • باتری 9 ولت
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

برای اتصال موتور DC و TIP120 به آردوینو، این نمودار سیم کشی را دنبال کنید:

اتصال موتور DC و TIP120 به ARDUINO

توجه داشته باشید که آردوینو از منبع تغذیه 3 ولت تغذیه می شود و موتور DC توسط یک باتری 9 ولت جداگانه تغذیه می شود.

کد کنترل موتور دی سی با زوج دارلینگتون

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

موتورهای DC با ولتاژ کمتر از ولتاژ نامی هم کار می کنند، اما با سرعت کمتر و نا کارآمد تر کار میکنند. بنابراین، ما یک نشانگر LED اضافه کرده‌ایم که وقتی ولتاژ خیلی کم باشد، روشن می‌شود. مقدار motorLimit در ابتدای کد روی صفر تنظیم شده است.

پس از آپلود کد بالا، مانیتور سریال را باز کنید و به مقدار motorSpeed ​​نگاه کنید.

نیرویی که به موتور ارسال می شود عددی بین 0 تا 255 خواهد بود. پتانسیومتر را تنظیم کنید تا موتور به آرامی کار کند و مقدار سرعت موتور را یادداشت کنید.

اکنون به کد برگردید و متغیر motorLimit را برابر با عددی کمی بزرگتر از مقدار motorSpeed ​​که یادداشت کرده اید قرار دهید. سپس دوباره کد را آپلود کنید، و باید ببینید که وقتی برق خیلی کم است، موتور خاموش می شود. LED نیز روشن می شود که نشان می دهد موتور خاموش است. این کار از روشن شدن موتور تا زمانی که قدرت کافی برای کارکرد صحیح آن وجود نداشته باشد، جلوگیری می کند.

اگر موتور خیلی سریع کار می کند، با اضافه کردن متغیر int motorMax = xxx به کد، یک قطع کننده سرعت بالا ایجاد کنید. xxx را روی هر حد بالایی که لازم است، تا 255 تنظیم کنید. سپس، در خطی که می‌گوید if(motorSpeed ​​<= motorLimit)، آن را به

if(motorSpeed ​​<= motorLimit || motorSpeed ​​>= motorMax) تغییر دهید این برنامه اکنون موتور را در محدوده های با برق کم و خیلی زیاد قطع می کند.

طرح فوق از متغیرهای زیر استفاده می کند:

  • speedSet برابر با پایه آنالوگ (A0) است که ورودی را از پتانسیومتر می گیرد.
  • Tip120 برابر با پایه خروجی است که به ترانزیستور TIP120 متصل می شود.
  • speedVal برای ذخیره مقدار بازگردانده شده توسط تابع analogRead() استفاده می شود.
  • motorSpeed ​​برابر با عددی بین 0 تا 255 تنظیم شده است که برای به حرکت درآوردن موتور به تابع analogWrite() ارسال می شود.
  • motorLimit برابر با یک مقدار قطع است که برای خاموش کردن موتور در سرعت های آهسته استفاده می شود
  • LED برابر با پین متصل به LED نشانگر است

در کد، متغیر speedVal بسته به مقدار خروجی تابع analogRead() دارای یک عدد صحیح از 0 تا 1023 خواهد بود. ولتاژ آنالوگ اعمال شده به speedSet (پایه آنالوگ A0) را می گیرد و آن را به یک عدد صحیح ذخیره شده در speedVal تبدیل می کند. در خط بعدی، تابع map() مقدار ذخیره شده در speedValand را می گیرد و آن را به مقداری بین 0 تا 255 تبدیل می کند. مقدار نگاشت شده در متغیر motorSpeed ​​ذخیره می شود. متغیر motorSpeed ​​بعداً در کد به تابع analogWrite() ارسال می‌شود تا سیگنال PWM ایجاد شود و به پین ​​Tip120 ارسال شود.

دستور if مقایسه ای را انجام می دهد تا ببیند آیا متغیر motorSpeed ​​از متغیر motorLimit کمتر است یا خیر. اگر motorSpeed ​​کمتر از motorLimit باشد، Tip120 روی LOW تنظیم می شود، موتور خاموش می شود و نشانگر LED روشن می شود. در غیر این صورت، دستور analogWrite(Tip120، motorSpeed) سیگنال PWM را برای هدایت موتور با analogWrite(Tip120، motorSpeed) ارسال می کند.

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

موارد موجود در فایل : فایل سورس کامل

4.3 (3 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

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

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