آردوینو درایور موتور پروژه های آردوینو

کنترل دور و جهت موتور از طریق ویندوز به کمک آردویینو و زبان #C-قسمت دوم

نوشته شده توسط معین صابری

در قسمت پیشین، به طراحی نرم افزار تحت ویندوز، به کمک زبان #C در محیط ویژوال استودیو به منظور کنترل دور موتور و جهت موتور پرداختیم. در این آموزش، بخش سخت افزاری پروژه را مطرح می نماییم. مشابه آموزش های پیشین، هسته پردازشی در این آموزش، برد آردویینو UNO در نظر گرفته شده است. این برد به کمک رابط سریال UART خود، به رایانه متصل شده و فرامین ارسالی از سوی ویندوز را دریافت می نماید. آردویینو پس از دریافت فرامین کنترلی موتور، آن ها را به کمک درایور موتور، بر موتور اعمال می نماید. در این آموزش به برنامه نویسی و طراحی مدار می پردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی دیجی اسپارک همراه باشید.

 


کاربرد کنترل موتور DC از طریق ویندوز


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

 


درایور موتور L298D


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

اتصال آرمیچر به آردوینو Arduino - دیجی اسپارک

 

به کمک مدار فوق می توانیم دور موتور را از طریق PWM کنترل نماییم. اما مدار فوق، تنها قادر است تا موتور را در یک جهت به گردش درآورد. به عبارت دیگر، مدار فوق، قابلیت کنترل دور موتور را دارد، اما قادر به کنترل جهت آن نیست. در صورتیکه در پروژه ای نیاز باشد تا علاوه بر دور، جهت نیز کنترل شود، می بایست از درایور موتور L298 استفاده نماییم. این درایور می تواند علاوه بر دور موتور، جهت آن را نیز کنترل نماید. ماژول این درایور ولتاژ های ۵ و ۱۲ را به عنوان ورودی می پذیرد. همچنین این درایور موتور قادر است تا جریانی تا حدود ۲  آمپر را از خود عبور دهد. از طرف دیگر، این ماژول دوکاناله بوده و می تواند دو موتور را به صورت جداگانه، درایو نماید.

پروژه کنترل موتور با درایور موتور L298 و جوی استیک آردوینو - دیجی اسپارک

جهت اطلاعات بیشتر در زمینه راه اندازی موتور با این درایور، این آموزش که پیشتر توسط همکارم منتشر شده است را مطالعه نمایید.

 


شماتیک و اتصالات


ابتدا اتصالات مدار کنترل موتور آرمیچر با آردوینو را مطابق تصویر زیر، انجام دهید.

برای اتصال ماژول درایور موتور به آردویینو مطابق رویه زیر عمل کنید.

-پایه ENA ماژول به پایه ۳(در صورت وجود جامپر روی این پایه، آن را برداشته و پایه ENA را به پایه شماره ۳ آردویینو متصل نمایید)

-پایه IN1 ماژول به پایه شماره ۴ آردویینو

-پایه IN2 ماژول به پایه شماره ۵ آردویینو

-پایه GND ماژول علاوه بر GND تغذیه، به یکی از پایه های GND آردویینو متصل گردد.

-پایه OUT1 ماژول به یکی از پایه های تغذیه موتور و پایه OUT2 به پایه دیگر متصل گردد

توجه: برای تغذیه ماژول درایور موتور از یک آداپتور جداگانه ۵V (برای یک موتور ۵ ولتی) استفاده نموده و با توجه به تغذیه آردویینو از لپ تاپ، جهت حفاظت از پورت USB لپ تاپ، تغذیه ماژول درایور موتور و موتور الکتریکی از آردویینو متصل به رایانه، توصیه نمی گردد.

 


نحوه کنترل موتور از طریق ویندوز


همانطور که اطلاع دارید، برد آردویینو UNO یک رابط سریال به USB بر روی خود دارد، این رابط پایه های RX و TX (پایه های شماره ۰ و ۱ آردویینو) را به مبدل متصل می نماید. از طرفی دیگر، با اتصال برد آردویینو به رایانه از طریق کابل USB، یک پورت سریال به آردویینو اختصاص داده شده و به کمک این پورت می توانیم برنامه های خود را به آردویینو انتقال دهیم. در برنامه #C، به کمک پورت اختصاص داده شده توسط ویندوز، به آردویینو متصل شده و فرامین خود را به آن ارسال می نماییم، همانند اتصال دو دستگاه سریال به یکدیگر،  نرخ ارسال(baudrate) سمت ویندوز و آردویینو هر دو به مقدار ۱۱۵۲۰۰ تعیین می شود.

برد آردوینو اونو Uno Arduino - دیجی اسپارک

 


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


در زیر، کدهای پروژه کنترل دور موتور و جهت موتور از طریق ویندوز را مشاهده می نمایید. این کدها بایستی روی برد آردوینو آپلود شوند.

 

 


تحلیل کدهای برنامه


در ابتدای برنامه، پایه ۳ و ۴ و ۵ به ترتیب برای کنترل دور و جهت چپ و راست انتخاب می شوند، از آنجاییکه قرار است داده ها از سمت ویندوز با نرخ انتقال ۱۱۵۲۰۰ ارسال شده و آردویینو با سریال سخت افزاری داده ها را دریافت نماید، بنابرانی نرخ انتقال با دستور زیر تعیین می گردد.

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

-فرمان چپ گرد: !L

-فرمان راست گرد : !R

-دور موتور: !عدد

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

راه اندازی موتور DC با درایور موتور L298 از طریق ویندوز - دیجی اسپارک

 


وسایل مورد نیاز


برد آردویینو UNO (به کمک کابل USB، تغذیه تامین شده و فرامین کنترلی موتور از ویندوز دریافت می گردد)

ماژول درایور موتور L298

منبع تغذیه ۵ ولت

موتور DC (در این آموزش از یک موتور DC کوچک ۵ ولتی استفاده نموده ایم.)

 


جمع بندی


در این آموزش که در دو قسمت منتشر شد، به طراحی نرم افزاری، تحت ویندوز پرداختیم تا به کمک آن، یک موتور الکتریکی را کنترل نماییم. برای کنترل موتور از برد آردویینو uno و برای فرمان به موتور از درایور موتور L298 استفاده کردیم. از آنجاییکه برد آردویینو می تواند با اتصال به رایانه از طریق کابل USB، به ارسال و دریافت داده بپردازد، برنامه ای تحت زبان برنامه نویسی #C طراحی نموده و فرامین راست گرد، چپ گرد و دور  را به کمک پورت سریال آردویینو، به موتور خود ارسال می نماییم.

کنترل دور موتور آرمیچر با برد آردوینو از طریق ویندوز - دیجی اسپارک

 

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

 

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

معین صابری

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

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه