⚙️ کنترل دور موتور DC با AVR و درایور L298
در این درس یاد میگیریم چگونه با استفاده از میکروکنترلر ATmega16 و درایور L298 سرعت و جهت چرخش موتور DC را با PWM کنترل کنیم.
🎯 اهداف درس
- آشنایی با PWM و مفهوم Duty Cycle
- کنترل سرعت موتور DC با ATmega16
- استفاده از درایور L298 برای کنترل جریان موتور
- خواندن مقدار پتانسیومتر با ADC
پیشرفت آموزش — ۶۰٪
🔋 PWM چیست؟
مفهوم PWM
PWM یا Pulse Width Modulation یک موج مربعی است که بین ۰ و ۱ تغییر میکند.
با تغییر Duty Cycle — یعنی مدت زمان روشن بودن نسبت به کل دوره — میتوان توان موتور را مدیریت کرد.
🔌 درایور L298
چرا از L298 استفاده میکنیم؟
در این پروژه با PWM در AVR، کنترل جهت و سرعت موتور و درایور L298 آشنا شدیم. این پروژه پایه بسیاری از سیستمهای رباتیک و صنعتی است.
📐 شماتیک کلی پروژه
- سه کلید برای راستگرد، چپگرد و توقف
- یک پتانسیومتر برای کنترل سرعت
- خروجی PWM از پین OC2 → ورودی ENA در L298
- تغذیه موتور ۱۲ ولت، تغذیه منطقی ۵ ولت
⚠️ نکته مهم
نکته مهم
برای کنترل دقیق سرعت، مقدار PWM باید مطابق مقدار ADC تنظیم شود.
همچنین حتماً اتصال زمین (GND) بین منبع تغذیه و AVR مشترک باشد.
🧾 تنظیمات در CodeVision
- خروجیها: PC0, PC1 (جهت)، PD7 (PWM)
- ورودیها: PB0, PB1, PB2 (کلیدها), ADC0 (پتانسیومتر)
- PWM: تایمر ۲ → خروجی OC2
- ADC: حالت ۸ بیت → استفاده بهعنوان سرعت موتور
💻 کد کامل پروژه
🧠 جمعبندی
در این پروژه با PWM در AVR، کنترل جهت و سرعت موتور و درایور L298 آشنا شدیم.
این پروژه پایه بسیاری از سیستمهای رباتیک و صنعتی میباشد.