با سلام
بنده یک موتور dc کوچک به همراه یک انکودر افزایشی جهت کنترل موقعیت زاویه ای شفت به همراه مدارات واسط به یک میکرو xmega متصل کرده ام. در حال حاضر موتور در هر دو جهت کاملا قابل چرخش و مقدار خروجی انکودر هم از طریق فعالسازی وقفه خارجی پورت مربوطه متصل به انکودر قابل شمارش می باشد. سوال بنده از دوستان بخصوص استاد محترم جناب کی نژاد این است که جهت حرکت شفت موتور به اندازه زاویه دلخواه با دقت حدود نیم درجه چه روشی را باید در پیش بگیرم ؟
چرا که در حال حاضر وقتی که مقدار کانتر بنده در سرویس روتین وقفه خارجی مربوط به انکودر به مقدار مطلوب ( زاوبه مطلوب ) می رسد
(( if(++counter == set point) و فرمان stop به موتور میدهم موتور مفداری چرخش اضافی ( اجتناب ناپذیر ) را دارد . برای رفع این چرخش اضافی یک مقدار ثابت ( تجربی ) را از عدد مقدار مطلوب ( set point ) کم نمودم ولی در زوایای مختلف باز دچار عقب رفتگی یا جلو رفتگی از زاویه مطلوب را دارم
با تشکر از راهنمایی شما
بنده یک موتور dc کوچک به همراه یک انکودر افزایشی جهت کنترل موقعیت زاویه ای شفت به همراه مدارات واسط به یک میکرو xmega متصل کرده ام. در حال حاضر موتور در هر دو جهت کاملا قابل چرخش و مقدار خروجی انکودر هم از طریق فعالسازی وقفه خارجی پورت مربوطه متصل به انکودر قابل شمارش می باشد. سوال بنده از دوستان بخصوص استاد محترم جناب کی نژاد این است که جهت حرکت شفت موتور به اندازه زاویه دلخواه با دقت حدود نیم درجه چه روشی را باید در پیش بگیرم ؟
چرا که در حال حاضر وقتی که مقدار کانتر بنده در سرویس روتین وقفه خارجی مربوط به انکودر به مقدار مطلوب ( زاوبه مطلوب ) می رسد
(( if(++counter == set point) و فرمان stop به موتور میدهم موتور مفداری چرخش اضافی ( اجتناب ناپذیر ) را دارد . برای رفع این چرخش اضافی یک مقدار ثابت ( تجربی ) را از عدد مقدار مطلوب ( set point ) کم نمودم ولی در زوایای مختلف باز دچار عقب رفتگی یا جلو رفتگی از زاویه مطلوب را دارم
با تشکر از راهنمایی شما
دیدگاه