به نام خدا
راه اندازی سروو موتور بدون نیاز به PWM!!!
از جمله موتور های پر کاربرد در عرصه رباتیک و صنعت، سروو موتور ها هستند. این موتور ها در کاربرد هایی که نیاز به ایجاد چرخش با زاویه مشخص وجود دارد، استفاده می شوند.
از جمله کاربرد های موتور های سروو می توان به موارد زیر اشاره کرد:
- ربات های بازو
- سطوح کنترلی هواپیما ها
- ربات های دلتا
- فرمان چرخ های ربات های زمینی
- و …
در این پروژه می خواهیم بدون استفاده از توانایی pwm میکرو، یک سروو موتور را کنترل کنیم!!!
همان طور که در تصاویر زیر مشاهده می کنید، سیگنالی که موتور سروو را به حرکت در می آورد دارای یک دوره تناوب ثابت می باشد که با تغییر مدت زمان یک بودن(یک منطقی)، می توان زاویه آن را تنظیم کرد.
در این پروژه مدت زمان تناوب را ۲۰ میلی ثانیه(فرکانس ۵۰ هرتز) در نظر گرفته ایم.حال با دستور های set و reset و گذاشتن دستور wait بین این دستور ها مدت زمان یک بودن را با تغییر مدت زمان دستور wait، تغییر می دهیم.
به دستور های مقابل توجه کنید:
set portb.1
waitus 1000
reset portb.1
waitus 19000
خط اول، پین یک از پورت B را یک می کند.
خط دوم، این پین را به مدت زمان ۱۰۰۰ میکرو ثانیه(۱ میلی ثانیه) در همان حالت(یک منطقی) نگه می دارد.
خط سوم، این پین را صفر می کند.
خط چهارم، این پین را در همان حالت خط قبل(صفر منطقی) به مدت زمان ۱۹۰۰۰ میکرو ثانیه(۱۹ میلی ثانیه) نگه می دارد.
به این صورت با تغییر دو عدد جلوی خط دوم و چهارم می توان پهنای پالس(مدت زمان یک بودن) را تغییر داد.مجموع این دو عدد باید ۲۰۰۰۰ میکرو ثانیه(۲۰ میلی ثانیه) باشد.
برای اطلاعات بیشتر و دانلود پروژه همراه با شماتیک مدار، فایل زیر را دانلود کنید.
کلیه پروژه های سایت به صورت کاملا عملی بر روی بردبورد تست شده اند.
برای دانلود پروژه بر روی لینک زیر کلیک کنید .
دانلود فایل
سلام. عالی بود. ممنون. نمیدونستم بدون pwm هم میشه سروو موتور راه اندازی کرد... :)
سلام- خواهش میکنم...
سلام دوست عزیز مطلبت در مورد سرو موتور بسیار عالی بود خدا خیرت بده من چند روز بود که دنبال این جور مطلبی بودم شما به من بسیار کمک کردید
سلام .
خیلی ممنون
سلام
تو بسکام یه بخشی هست که به اسم config servo که دیگه نیاز به این همه برنامه نویسی بی دلیل نداره .
سلام
بله دوست عزیز . بنده اولین کامپایلری که باهاش کار کردم همین بسکام هستش و ازین دستور آگاهی دارم.....برای کنترل سروو با کامپایلر های مختلف راه های زیادی وجود داره که همشون با فعال سازی مد pwm کار میکنن حتی این دستور config servo هم با فعال سازی مد pwm کار میکنه.......ولی ما خواستیم بگیم که برای کنترل موتور سروو حتما نیازی به فعال سازی مد pwm میکروکنترلر نیست و میشه به صورت دستی این موج رو ایجاد کرد....
از نظرتون ممنون
سلام کجاست لینک اش چه جوری باید دانلود کرد
سلام
مشکل لینک ها حل شد.
سلام
در مورد PWM باید بگم که یعنی مدولاسیون عرض پالس و این کار شما همون PWM است البته شما بجای استفاده از تایمر برای ایجاد PWM از خاموش و روشن کردن دستی پورت برای تولید PWM استفاده کردید. در واقع فقط سخت افزار تولید اون رو تغییر دادید. این رو گفتم که مفهوم PWM اشتباه جا نیوفته.
سلام.خیلی ممنون از توضیحاتتون.
اینکار در مواقعی مفید هستش که شما پورت pwm کم داشته باشید همون طور که خودتون میدونید تعداد پورت های pwm هر میکروکنترلر محدود هستش برای همین میشه پالس pwm رو به صورت دستی خودمون درست کنیم .