خانه / پروژه های میکروکنترلر AVR / پروژه با ماژول ها / کنترل دور موتور dc با میکروکنترلر avr

کنترل دور موتور dc با میکروکنترلر avr

در این پروژه ما توسط ای سی L298 و میکروکنترلر atmega16 جهت چرخش (چپ گرد و راست گرد) و سرعت چرخش یک موتور dc را کنترل می کنیم. کنترل سرعت موتور با استفاده از pwm میکرو انجام می شود, بنابراین در این پروژه شما با نحوه راه اندازی و استفاده از pwm در میکرو avr اشنا می شوید.

PWM چیست؟ PWM یا Pulse Width Modulation ( مدولاسیون عرض پالس ) یک موج مربعی است که به طور متناوب 0 و 1 می شود. دامنه این موج می تواند بر حسب نیاز ما متغیر باشد, که با تغییر Duty Cycle (نسبت سطح 1 در یک دوره تناوب) می توان برای کنترل موتور و… از ان استفاده کرد. به تصویر زیر دقت کنید بهتر متوجه می شوید :

با اعمال موج های PWM بالا به درایور L298 می توانید توان یک موتور DC را بین ۰ تا ۱۰۰% تغییر دهید که این تغییر توان تاثیر مستقیمی بر سرعت موتور خواهد گذاشت.

 

ای سی درایور L298 :

همانطور که می دانید جریان خروجی پین های میکروکنترلرها محدود است و نمیتوان قطعاتی که نیاز به جریان زیادی برای راه اندازی دارند را مستقیما به میکرو وصل کرد. بنابراین ما نیاز به یک قطعه واسط داریم تا جریان مورد نیاز را ایجاد کند که به ان قطعه درایور می گویند.

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

پین 1 : CURRENT SENSING A

  • از این پایه جهت کنترل جریان موتور A  استفاده می گردد. همچنین می توان این پایه را به صورت مستقیم به خط منفی مدار GND اتصال داد که در این صورت کنترلی بر روی جریان وجود ندارد

پین 2 : OUTPUT 1

  • این پایه به یکی از ترمینالهای موتور A  متصل می گردد 

پین 3 : OUTPUT 2

  • این پین به ترمینال دیگر موتور A متصل شده

پین 4 : (SUPPLY VOLTAGE (VS

  • به پایه باید ولتاژ مورد نظر خود جهت اعمال به موتورها را متصل نمایید. این ولتاژ با توجه به  موتورهای مورد استفاده شما حداکثر تا 46 ولت می تواند افزایش یابد. برای ساخت رباتهای کوچک به طور معمول بین 6 تا 12 ولت است

پین 5 : INPUT 1 TTL Compatible Inputs 1 to drive Motor A

  • این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 7 می توانند جهت گردش موتور را مشخص نمایند

پین 6 : ENABLE A TTL Compatible Enable Input for Motor A

  • این پایه جهت روشن و خاموش کردن موتور A  و در بیشتر مواقع جهت اعمل فرکانس  PWM  به موتور استفاده می گردد. پنج ولت موتور را روشن و صفر موتور را خاموش می کند

پین 7 : INPUT 2 TTL Compatible Inputs 2 to drive Motor A

  • این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 5 می توانند جهت گردش موتور را مشخص نمایند

پین 8 : GND

  • اتصال به خط منفی مدار GND

پین 9 : (LOGIC SUPPLY VOLTAGE (VSS

  • اتصال به 5 تا 7 ولت

پین 10 : INPUT 3 TTL Compatible Inputs 1 to drive Motor B

  • این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 12 می توانند جهت گردش موتور B  را مشخص نمایند

پین 11 : ENABLE B TTL Compatible Enable Input for Motor B

  • این پایه جهت روشن و خاموش کردن موتور B  و در بیشتر مواقع جهت اعمل فرکانس  PWM  به موتور استفاده می گردد. پنج ولت موتور را روشن و صفر موتور را خاموش می کند

پین 12 : INPUT 4 TTL Compatible Inputs 2 to drive Motor B

  • این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 10 می توانند جهت گردش موتور B  را مشخص نمایند

پین 13 : OUTPUT 3

  • این پایه به یکی از ترمینالهای موتور B  متصل می گردد

پین 14 : OUTPUT 4

  • این پین به ترمینال دیگر موتور B  متصل می گردد

پین 15 : CURRENT SENSING B

  • از این پایه جهت کنترل جریان موتور B  استفاده می گردد. همچنین می توان این پایه را به صورت مستقیم به خط منفی مدار GND اتصال داد که در این صورت کنترلی بر روی جریان وجود ندارد.

 

شماتیک پروژه :

همانطور که در شماتیک بالا می بینید, سه کلید برای راست گرد , چپ گرد و توقف موتور قرار داده شده و یک پتانسیومتر که با تغییر ان سرعت موتور تغییر خواهد کرد . کلیدها توسط سه مقاومت Pull up شده اند و درنتیجه زمانی که کلید وصل نیست پین های میکرو یک هستند و زمانی که کلید فشار داده شود پینی که کلید به ان متصل است صفر می شود. 

در این پروژه ما فقط از یک موتور استفاده کردیم, بنابراین پین های مربوط به موتور B در ای سی L298 را نیاز نداریم .

برای حفاظت از قطعات مدار لازم است که پین های خروجی L298 که به دو سر موتور متصل می شوند (OUT1 و OUT2) را مانند شماتیک بالا به 4 دیود و خازن متصل کنیم .

توجه کنید که پین 9 ای سی L298 به 5 ولت متصل شده و پین 4 باید به ولتاژ مورد نیاز موتور ما (تا حداکثر 46 ولت) متصل شود که ما در شماتیک بالا به 12 ولت متصل کرده ایم .

پین شماره 21 میکروکنترلر خروجی موج PWM ما هست (OC2) که به پین 6 یا ENA متصل شده است و با تولید موج های PWM مختلف سرعت موتور تغییر می کند.

تصویر بزرگتر و واضح تر از مدار در فایل هایی که در انتها قرار داده شده وجود دارد که می توانید دانلود کنید

 

برنامه این پروژه با کدویژن :

در نرم افزار کدویژن یک پروژه جدید ایجاد کنید و در محیط کدویزارد میکروکنترلر را ATmega16 انتخاب کرده و فرکانس را 1 مگاهرتز تنظیم کنید. پین های 0 و 1 از پورت C را خروجی کنید و پین 7 از پورت D که برای تولید موج PWM ما می باشد را هم خروجی کنید. پین های پورت B که به کلیدها متصل هستند, خودشان ورودی هستند و لازم نیست در انها تغییری ایجاد کنید.

در این پروژه با اندازه گیری ولتاژ انالوگی که به پین 40 میکرو یا ADC0 توسط پتانسیوتر اعمال می شود, موج PWM متناسب با ان تولید می کنیم. بنابراین لازم است که ADC میکرو را هم فعال کنیم, تنظیمات ADC در کدویزارد به صورت زیر باشد:

توجه کنید که حتما تیک Use 8 bits را فعال کنید .

میکرو ATMEGA16 دارای سه تایمر می باشد که از انها می توان برای تولید موج PWM استفاده کرد. خروجی PWM تایمر 0 پایه 4 می باشد و با نام OC0 نامگذاری شده است . تایمر 1 این میکرو از انجایی که 16 بیتی است 2 خروجی با نام های OC1A-OC1B دارد (پین های 18 و 19 میکرو) و تایمر 2 که 8 بیتی است و یک خروجی به نام OC2 دارد (پین 21) .

ما در این پروژه از تایمر 2 میکرو یا OC2 برای ایجاد موج PWM استفاده می کنیم, که تنظیمات کدویزارد برای فعال شدن ان به صورت زیر است :

برنامه نهایی این پروژه به صورت زیر می باشد :

توابع و دستورات استفاده شده در برنامه بطور کامل توضیح داده شده است و نیاز به توضیح دیگری نیست ولی اگر در مورد هر قسمت از این پروژه سوالی داشتید می تونید در نظرات مطرح کنید. موفق باشید…

کلیپ شبیه سازی :

 

دانلود فایل ها

پسورد فایل زیپ : www.emic.ir

نظر یادتون نره …

درباره ی عابد رازانی

فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, در حال حاضر به تولید محتوای اموزشی و طراحی و انجام پروژه مشغول هستم و همچنین درحال اماده شدن برای ارشد

6 دیدگاه

  1. سلام .
    خیلی ممنون
    با همین یه صفحه ی شما کارم حل شد .
    خیلی کامل و خوب
    با تشکرر.

  2. کد های مربوط به سرعت کدامند

  3. سلام داداش… دمت گرم که این تایمر کانتر و ای دی سی رو با تصویر توضیح دادی من یه کم متوجه شدم… چون مبتدی هستم… تازه امروز یه ال ای دی چشمک زن رو تونستم راه اندازی کنم… داداش یه چیزی رو خواهشا” اگه میتونی با تصویر برام توضیح بده خیلی کلافم کرده… ببین الان تو این پروژه … میکرو 10 و 11 صفر و پنج ولت هستش.. حالا ال 298 هم شماره چهارش 12 تا 46 ولت… باز شماره ی 9 این ال298 پنج ولت…. خوب اینا چه جوری میشه؟ یعنی باید 12ولت بدم به پایه ی چهارمه 298 و بعد 5ولت جداگانه بدم به پایه ی دهم میکرو … بعدش 5ولت جداگانه بدم به پایه ی نهم ال298 و زمینهارو یکی کنم با هم… یکی اینو متوجه نمیشم…. دیگه اینکه مثلا” پتانسیومتر دو قطب مثبت منفیش به کجا وصل شده… یا اینکه اون یکی سره کلیدهای راست و چپگرد و توقف به کجا وصل شده… مقاومتها اون یه سرشون به کجا وصل شده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    ممنون میشم راهنماییم کنی.

    • سلام, اگه موتوری که استفاده می کنید 12 ولت است باید به پین 4 ای سی l298 دوازده ولت اعمال کنید و همین 12 ولت رو هم با یک ای سی رگولاتور 7805 به 5 ولت تبدیل کنید و برای میکرو و تغذیه l298 (پین 9) استفاده کنید. در مورد پتانسیومتر هم دو سرش به مثبت 5 ولت و زمین متصل شده (اون مثلث که به پایه بالایی متصل شده نماد 5 ولت است و پایه پایین هم به نماد زمین متصل هست). برای کلیدها و مقاومت ها هم همینطور است, یعنی یک سر کلیدها و مقاومت ها به میکرو متصل هست و سر دیگر کلیدها به زمین و سر دیگه مقاومت ها به مثبت 5 ولت متصل هست

  4. واقع دستتون درد نکنه عااااااالی بود چسسسسسسبید
    من نه می دونستم pwm چیه نهadc ولی با همین یه صفحه کیلت داستان دستم اومد و دیگه برام گنگ نیستن
    کاش همه اموزشها اینجوری بود
    انقد که خوب بود من قشنگ از روش جزوه نوشتم می خونم و می فهمم
    بازم تشششششششکر

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

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