ايران ويج

نسخه‌ی کامل: برنامه کنترل سرعت موتور با pwm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
من ودوستانم داريم روي يه پروژه رباتيک کار ميکنيم توي کنترل سرعت ودور به مشکل برخورديم .کسي از دوستان ميتونه تو برنامه نويسي(کنترل همزمان سرعت و دور موتور dc) به ما کمک کنه
درضمن ما با بيسيک اشناييم
يا علي
دوست عزیز زیاد پست دادن دلیل بر جواب زیاد و درست گرفتن نیست. پس به جای ایجاد چندین پست یک پست بدید و منتظر بمونید.Angry

Rolleyes من میتونم کمکتون کنم.Smile

منظورتون از کنترول هم زمان یعنی سرعت هر دو موتور باهم کم و زیاد بشه؟Shy
از چه درایوری برای موتور هاتون استفاده میکنین؟Shy
از چه میکرویی استفاده میکنید؟Shy
Wink
سلام
اقا واقعا شرمنده وقتی این پستو میزدم کامپیوتر هنگ کرد منم دوباره رو ارسال کلیک کردم .بکزریم
درایور L298
میکروMEGA3
خوب برای اینکه pwm رو به موتور هابدیم باید پایه های ENABLE آی سی l298 رو به pwm آی سی mega32 وصل کنید

پایه های pwm روی میکرو با نام های OC1A و OC1B مشخص شده اند. در عکسی که ضمیمه شده این پایه ها مشخص شده

بعد از انجام کار های سخت افزای مدار حالا بریم سراغ برنامه:HappyClap

×××(به عنوان مرجع میتونید با سرچ کردن config TIMER1 در هلپ بسکام این موضوع رو دنبال کنید.)×××

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear up , Prescale = 1
Pwm1a = 100
Pwm1b = 100

مقدار pwm1a , pwm1b به صورت فرضی مشخص شده که میتونید هر جای برنامه که خواستید این مقدار رو کم یا زیاد کنید

اگه سوالی هست بازم در خدمتیمWink




اقا دستت درد نکنه اینو نمیدونستم
(۱۷-مهر-۱۳۹۰, ۱۲:۴۱:۱۰)abbasalifix نوشته است: [ -> ]×××(به عنوان مرجع میتونید با سرچ کردن config TIMER1 در هلپ بسکام این موضوع رو دنبال کنید.)×××

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear up , Prescale = 1
Pwm1a = 100
Pwm1b = 100

مقدار pwm1a , pwm1b به صورت فرضی مشخص شده که میتونید هر جای برنامه که خواستید این مقدار رو کم یا زیاد کنید

اگه سوالی هست بازم در خدمتیمWink
سلام دوست عزیز ببخشید میشه این کدهایی که نوشتین رو یکم بیشتر توضیح بدین ممنونShy

سلام.

نقل قول: به عنوان مرجع میتونید با سرچ کردن config TIMER1 در هلپ بسکام این موضوع رو دنبال کنید.

هلپ بسكام كامل توضيح داده . PWM يعني مدولاسيون عرض پالس .
به اين وسيله يه سري پالس درست مي كنيد كه فركانسشون ثابته و فقط زمان 0 و يا 1 بودنشون ( يا همون روشن خاموش بودنشون رو به واسطه ي Pwm1a وPwm1b مي تونيد كنترل كنيد )مدت زمان 1 بودن يا روشن بودن رو duty cycle مي گن.

براي تست كردنش به صورت عملي مي تونيد PWM رو به يه LED اعمال كنيد.

Prescale مقسم فركانس كاريه ميكرو هست.
در واقع PWM توسط يكي از تايمر ها ساخته مي شه ، در بسكام از تايمر 0 نمي تونيد خروجيه PWM بگيريد اما در codevision مي شه ...
PWM هم دقت هاي مختلفي داره كه 8 و 9 و 10 با تايمر 0 فقط مي تونيد از مقدار 8 استفاده كنيد.
از تايمر 1 اگر براي ايجاد PWM استفاده مي كنيد مي تونيد تا مقدار 10 رو انتخاب كنيد.
اين عدد ها ميزان دقت رو در تغيير مقادير متواليه PWM تعيين مي كند.

داستانش اينه كه هر شكل موج متناوبي يه مقدار DC داره و شما براي اينكه ولتاژ DC رو بخواهيد كم و زياد كنيد از اين ويژگي مي تونيد استفاده كنيد.
مثلا اگر بخواهيد سرعت موتور رو بيشتر كنيد ، يكي از راه هاي كنترل سرعت موتور DC اسنه كه ولتاژ دو سرش رو زياد كنيد ، خوب با استفاده از PWM وتغيير duty cycle هم دقيقا همين كار رو مي كنيد. ولتاژ رو از 0 ولت تا 5 ولت مي تونيد آرام آرام يا خيلي سريع تغيير بديد.
تغيير ميزان duty cycle با استفاده از دو متغيير Pwm1b و Pwm1a امكان پذير هست.
هر PWM هم معمولا 2 خط خروجي مي ده كه مي شه پايه هاي OC1A و OC1B .
دقت كنيد كه ديگه از پايه ي تايمري كه باهاش PWM رو ساختيد نمي تونيد استفاده كنيد.

باقيش هم ديگه خودتون دنبال كنيد ، چون داستان زياد داره ، سعي كردم يه ديد كل بهتون بدم كه وقتي رفيد دنبالش راحت تر دركش كنيد ...

موفق باشيد.
يا علي.