اطلاعیه

Collapse
No announcement yet.

برنامه PID

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

    #16
    پاسخ : برنامه PID

    این برنامه ایه که من اولین بار به روش PID نوشتم, مربوط می شه به پروژه ی کنترل موتور DC برای درس ماشین 1. دیگه ساده تر از این PID نمی شه نوشت. :read:
    به نظر من PID به روش گسسته و رایجی که استفاده می شه با اونی که توی درس کنترل خطی هستشو پیوسته هم هست خیلی متفاوتن! :angry:

    مهمترین مشکل یادگیری PID هم اینه که معمولا کسی که می خواد PID یاد بگیره میاد تو نت سرچ می کنه و یه سری توضیحات پیدا می کنه که در کل مربوط می شن به همون مبحث پیوسته ی درس کنترل خطی.
    اگه کسی می خواد PID یاد بگیره باید یا از همین جور فروما که بحثاش عملین استفاده کنه, یا به صورت حضوری از کسی که کار کرده بپرسه. :nerd:

    کد:
    Po=P;
    
    P=rpm_desired-rpm_current;
    I=min(I+P,300);
    I=max(I,-300);
    D=P-Po;
    
    pwm=min(1023,pwm+Kp*P+Ki*I+Kd*D);
    pwm=max(pwm,0);
    
    OCR1A=pwm;
    ای پادشه خوبان داد از غم تنهایی

    دل بی تو به جان آمد وقت است که باز آیی

    دیدگاه


      #17
      پاسخ : برنامه PID

      نوشته اصلی توسط hamedhamidi
      در کدوم مورد؟ فازی یا پی ای دی؟
      PID
      خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
      [hr]

      دیدگاه


        #18
        پاسخ : برنامه PID

        وای خدا این دفعه سومه که دارم تایپ میکنم و گوشیم ریست میشه!!!:-@
        داشتم میگفتم ببخشید که این چند روزه نبودم...بیمارستان بستری بودم واسه یه عمل جراحی...دعا کنید زود خوب شم...مرسی!

        بله...
        اولا اینکه چرا از PID استفاده کنیم؟چرا از Pخالی یا PI استفاده نکنیم؟
        خب انتخاب نوع کنترلر بستگی به سیستم مورد نظر ما داره...بعضی وقتا سیستم پاسخ سریعی داره مثل یه موتور ولی بعضی وقتا خیلی خیلی کند عمل میکنه مثل یه المنت حرارتی که ختی بعضی مواردش تا 5مین طول میکشه که به مقدار نهایی دمای خودش برسه!
        خب پس باید یه سیستم تقریبا پیش بین! هم داشته باشیم که بتونه مقادیر آینده خروجی(در این مورد دما) رو حدس بزنه!
        اولا میدونیم خروجی یه کنترلر PID اینطوری هستش:
        output signal=Kp*e + (Ki*e)/S + Kd*e*S
        خب این خروجی فقط روی کاغذ قابل دسترسی هستش!چون سیستم های موجود در دنیای واقعی همگی CASSUAL هستن و واقعا نمیشه اون قسمت مشتق گیر رو پیاده سازی کرد...برای حل این مشکل یه قطب کم تاثیر در مخرج قسمت مشتق گیر اضافه میکنند...اینجوری:
        S*Td~S*Td/(1+ S*Td/N)
        خب با این کار یکی از مشکلات مرتفع میشه...
        ولی باید توجه داشت که اگه سیستم سریع باشه و Set Point به طور ناگهانی تغییر کنه باعث میشه که به سیستم شوک وارد بشه چون مشتق یا تغییرات خطا تغییر ناگهانی و بزرگی داره...
        مورد بعدی اینه که اگه نویز وارد سیستم بشه مشتق گیر بهش واکنش نشون میده و این خودش میتونه ما رو از هدف کنترلی مد نظرمون دور کنه...البته این ها هم راه حل داره...اگه مایل بودید توضیح میدم...
        آهان...در مورد کدهای خودم خواستم یه سری توضیحات بدم:
        اولا اینکه اگه بخوایم کنترلر رو آنالوگ پیاده کنیم که خودتون بلدید با چند تا Op Amp و چند تا خازن و مقاومت میشه طراحی کرد...ولی اگه بخوایم دیجیتال پیاده سازی کنیم باید چند مورد رو مد نظر داشته باشیم:
        اولا اینکه اون مجموعه کد ها باید به طور مرتب اجرا بشه...
        پس در هر مرحله یه نمونه از خروجی سیستم میگیریم و با Set Point مقایسه میکنیم و بعدش هم خروجی هر قسمت رو بدست آورده و در نهایت با هم جمع میکنیم...این میشه خروجی کنترلر ما!
        ولی از اونجایی که سرعت میکرو خیلی زیاد هست نمیتونیم اوه کد ها رو داخل یه حلقه بی نهایت و پشت سرهم و بی وقفه اجرا کنیم چرا که عملا با این کار داریم با سرعت خیلی زیاد از خروجی نمونه میگیریم ولی به سیستم فرصت لازم رو نمیدیم تا خودش رو برسونه به مقدار مورد نظر ما!
        پس یا باید با یه تاخیر مشخص مثلا هر 200میلی ثانیه یه بار اون مجموعه کدها رو اجرا کنیم یا از Anti Wind Up استفاده کنیم که البته استفاده از هر دو تاثیر بهتری داره!
        این نوع PID که اینجا کدهاشو گذاشتم به نوع موازی مشهوره!
        نوع سری یا با اثر متقابل و انتگرال گیر بر مسیر خطا و انواع دیگه هم داره که اگه مایل بودید توضیح میدم خدمتتون...
        برای بدست آوردن ضرایب هم راه هایی مثل زیگلر-نیکولز هست که به تابع تبدیل سیستم نیاز دارن...راه های دیگه هم هست که بشه بدون داشتن تابع تبدیل مقادیر دقیق ضرایب رو بدست آورد که اگه خواستید میگم چجوری....
        در مورد Anti Wind up هم اگه مطلب پیدا نکردید بگید تا خدمتتون عرض کنم...
        ببخشید خیلی خسته شدم...
        فعلا با اجازه تون....
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


        ساخت کنترلر دما PID فازی با AVR [آموزشی]

        دیدگاه


          #19
          پاسخ : برنامه PID

          با سلام کسی برنامه pid برای ربات مسیریاب رو بلد هست؟

          دیدگاه


            #20
            پاسخ : برنامه PID

            نوشته اصلی توسط soheilsa
            با سلام کسی برنامه pid برای ربات مسیریاب رو بلد هست؟
            فکر کن تو همین انجمن سرچ کنی چند تا تاپیک پیدا کنی

            از دوستان میخوام لطف کنن و تعیین ضرایب برای pid بیشتر توضیح بدن و حد امکان ساده
            برای درک بهتر هم بهتر از مثال کنترل دما با pid رو لطف کنن

            پیشاپیش ممنون عزیزان من

            دیدگاه


              #21
              پاسخ : برنامه PID

              http://www.eca.ir/forum2/index.php?topic=71720.msg548779#msg548779

              توی این تاپیک من یه سری توضیحات دادم, فکر کنم برا شروع کافی باشه, بازم اگه هرجاش سوالی داشتین بپرسین تا جواب بدم. :job:
              ای پادشه خوبان داد از غم تنهایی

              دل بی تو به جان آمد وقت است که باز آیی

              دیدگاه

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