اطلاعیه

Collapse
No announcement yet.

کنترل سرعت موتور طی چند مرحله حرکت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کنترل سرعت موتور طی چند مرحله حرکت

    سلام
    من یه پروژه برای کنترل حرکت موتور توی کدویژن نوشتم. توی این پروژه یه سنسور اثر هال داریم که به موتور وصله و با حرکت موتور به پایه T0 یا T1 میکرو پالس میده. موتور هم به یک جک مکانیکی وصله. و با حرکت موتور مقدار حرکت جک به صورت دقیق اندازه گیری میشه. این پروژه سه قسمت داره:

    1- توی مرحله اول حرکت موتور طوری تنظیم میشه که جک مکانیکی مقدار خاصی رو که توی برنامه مشخص شده حرکت کنه. این حرکت توی چند مرحله انجام میشه که این مراحل به صورت یک آرایه در ابتدای برنامه تعریف میشه. مثلا اگر آرایه شامل اعداد زیر باشه:

    150
    120
    140
    100

    اگر آرایه این چهار عدد رو داشته باشه حرکت در واقع شامل سه مرحله س. اعداد بر حسب میلیمتر هستن. یعنی اول جک روی عدد 15 سانت قرار داره.(به صورت اختیاری) بعد باید به 120 بره یعنی سه سانت باید در یک جهت مثلا راست حرکت کنه. مرحله بعد از 120 به 140 میرسه . یعنی باید دو سانت در جهت خلاف جهت قبلی حرکت کنه.

    2- مرحله دوم پروژه استفاده از pwm برای کنترل سرعت بود که کاملا به جواب رسید و دقیقا در زمانی که میخواستم. مثلا اگر موتور تو سرعت ماکزیمم هر سانت رو توی 3.3 ثانیه میرفت. با یه تناسب ساده طوری تنظیمش کردم که مثلا هر سانت رو توی 6 ثانیه بره.

    3- قسمت سوم در واقع به نوعی ترکیب مرحله اول و دومه. توی این مرحله میخوام طوری تنظیم کنم که مثلا اگه کل حرکت 3 مرحله س. هر کدوم از این سه مرحله رو توی یه زمان ثابت بره. مثلا مرحله اول رو توی 5 ثانیه؛ مرحله دوم توی 5 ثانیه و مرحله سوم هم توی 5 ثانیه. واضحه که برای این کار باید اول مرحله ای که ماکزیمم حرکت تو اون مرحله س پیدا بشه و از اونجا مینیمم زمانی که میشه انتخاب کرد و اونو برای همه مراحل مبنا قرار داد پیدا میشه و حرکت بقیه استپ ها بر اون اساس تنظیم بشه. با یه مثال بهتر مشخص میشه:

    برای مثال سه مرحله زیر رو داریم:
    1- دو سانت به راست
    2- یک سانت به چپ
    3- سه سانت به راست

    با احتساب اینکه توی سرعت ماکزیمم جک مکانیکی هر سانت رو توی 3.3 ثانیه میره:

    1- دو سانت در 6.6 ثانیه
    2- یک سانت در 3.3
    3- سه سانت در 9.9 ثانیه

    در اینجا ماکزیمم زمانی که توی هر مرحله حرکت داریم 9.9 هست. پس اگر بخوایم حرکت هر 3 مرحله توی زمان ثابت انجام بشه اون زمان باید 9.9 باشه. چون اگه زمان کمتر از این باشه مرحله سوم کامل انجام نمیشه.

    خوب برنامه مربوط به این هم چیز خیلی سختی نیست: فقط باید یه تناسب بین زمان ‹‹مرحله ای که توش هستیم›› و ‹‹زمان ماکزیمم›› ببنیدم و این تناسب به OCR1A یا OCR1B داده بشه. تا به همون نسبت حرکت موتور کند بشه. یعنی مقداری که باید به OCR1A یا OCR1B توی هر مرحله داده بشه: (با فرض استفاده از تایمر 1 که ماکزیمم مقدارش 3FF یا 1023 هست)

    1- مرحله اول: OCR1A=1023*(6.6/9.9)

    2- مرحله دوم: OCR1A=1023*(3.3/9.9)

    3- مرحله سوم: OCR1A=1023*(9.9/9.9)

    خوب حالا تا اینجا داشتم صورت مسئله میگفتم!
    برای اینکه مشکل رو بگم باید کاملا پروژه رو توضیح میدادم:

    حالا مشکل اصلی

    مرحله اول و دوم به خوبی و با تکرار پذیری کامل به جواب رسیدن. ولی مرحله سوم جواب رندم میگیرم. یعنی درواقع جواب میده ولی تکرار پذیر نیست. مسئله اینجاست که انگار مراحل رو گم میکنه.مثلا بعضی وقتا مرحله اول رو 2 یا 3 بار میره بعد بقیشو درست میره. بعضی وقتا فقط مرحله اول رو واسه خودش تکرار میکنه!!! یا مثلا دو مرحله رو میره به جای مرحله سوم برمیگرده مرحله اول رو میره!!!!! تقریبا دارم از دستش دیوونه میشم. هر پارامتری که تونستم تغییر دادم. ولی درست نشد :angry:

    حالا احتمالاتی که خودم میدم:
    1- فیوز بیتها: که البته در این مورد به جایی نرسید. فقط سوالی که توی این زمینه دارم: اصلا امکان داره به خاطر اشتباه پروگرم شدن یه فیوزبیت برنامه جواب رندم داشته باشه؟

    2- نویز: آی سی که استفاده میکنم atmega32 هست. این آی سی تا چقدر به نویز حساسه . مدار کنترلی روی یه برد بورد بسته شده. امکان داره به خاطر خازن هایی که روی برد بورد بوجود میاد دچار خطای رندم بشه؟؟

    3- جک مکانیکی: یه احتمال هم دادم که ممکنه جایی که میکرو به درایور فرمان میده و درایور به موتور؛ توی اون قسمت مثلا موتور یا جک مکانیکی نمیتونن درست مراحل رو تشخیص بدن. البته باید اشاره کنم که سیستم مراحل رو قاطی میره ولی هر مرحله ای رو که میره دقیق میره مثلا مراحلی که اینجا داشتم یک؛دو و سه سانت بود. هر مرحله حرکت از این سه حالت خارج نیست و دقیق هم میره ولی ترتیب مراحل رو رعایت نمیکنه.

    اگر کسی چیز دیگه ای به ذهنش میرسه مارو هم بی نصیب نذاره!

    اگه لازم بود بگید کل برنامه رو بذارم


    #2
    پاسخ : کنترل سرعت موتور طی چند مرحله حرکت

    کسی نظری نداره؟

    دیدگاه


      #3
      پاسخ : کنترل سرعت موتور طی چند مرحله حرکت

      دیدگاه


        #4
        پاسخ : کنترل سرعت موتور طی چند مرحله حرکت

        یعنی هیچ کس نبود؟ :sad:

        دیدگاه

        لطفا صبر کنید...
        X