اطلاعیه

Collapse
No announcement yet.

PID controller with AVR

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

    PID controller with AVR

    سلام .
    من یه پروژه ی ساخت PID کنترلر با AVR دارم. ولی نمیدونم که این PID دقیقاً بهچه دردی میخوری و چه طور میشه به صورت دیجیتالی پیاده سازیش کرد.
    دوستان لطف کنن و راهنمایی کنن.
    خدايا
    من در كلبه ي فقيرانه ي خود چيزي دارم كه تو در عرش كبريايي خود نداري
    من چون تويي دارم و تو چون خودي نداري
    امام سجاد (ع)

    #2
    پاسخ : PID controller with AVR

    سلام.
    اگه خوب درست شده باشه بدرد میخوره در حد لالیگا !
    بدرد کنترل دور موتور میخوره. مخصوصا تو ربات.به عنوان مثال وقتی که ربات مسیر یاب به یه سربلندی میرسه باید بصورت هوشمند دور موتور (یا توان موتورها ) رو زیاد بکنه و ......... که مربوط به مبحث PID میشه.
    یعنی چی چه طور میشه به صورت دیجیتالی پیاده سازیش کرد.؟

    دیدگاه


      #3
      پاسخ : PID controller with AVR

      PID یک متد برای روش کنترل مطلوب خروجی
      روش های زیادی وجود داره . مثل ZH ، CHR و ... که PID یک روش اصلی و عمومی تر هستش

      اگه میخوای اطلاعات بیشتری راجع به این کنترلرها ومخصوصا پارامترهای اون بدست بیاوری بهتر یک کتاب مرجع درس کنترل خطی را دوباره بخونی و حتما به گزارش آزمایشگاه کنترل هم رجوع کنی
      این کار باعث میشه راحت تر با AVR این کنترلر رو پیاده سازی کنی

      در ضمن برا اطلاع بیشتر دوستان علاقه مند بگم که شرکت ATmel یک سری آیسی جدید داده به بازار که کنترلر PID هستند
      شماره رو یادم نیست

      دیدگاه


        #4
        پاسخ : PID controller with AVR

        آخه ما اینو تو درس مدار مجتمع خوندیم. خوندیم که چه عرض کنم ؛ گفتن میشه با پ امپ پیاده سازیش کرد.یعنی یه مدار مشتق گیر انتگرالگیر که خروجیش با ورودی
        رابطه ی تناسبی انتگرالی مشتقی داشته باشه. حالا چه طوری میشه با میکرو یه همچین کاری کرد؟
        اینطوری که من فهمیدم باید یه سیگنال خطا توسط ADC وارد میکرو بشه ولی چطوری باید پردازش بشه و اون رابطه ها رو درست کنیم نمیدونم. و اصلا نمیدونم چرا
        باید رابطه تناسبی مشتقی انتگرالی باشه؟
        خدايا
        من در كلبه ي فقيرانه ي خود چيزي دارم كه تو در عرش كبريايي خود نداري
        من چون تويي دارم و تو چون خودي نداري
        امام سجاد (ع)

        دیدگاه


          #5
          پاسخ : PID controller with AVR

          شما که گفتید این پروژه رو دارید ؟

          دیدگاه


            #6
            پاسخ : PID controller with AVR

            یک مثال از کنترل مکان PID با AVR

            کد:
            void PID(void)
            {
            int error,scaled_out;   
                error=set_point-position;
                if (error>error_Limit) error=error_Limit;
                if (error<-error_Limit) error=-error_Limit;    
                sum= sum + error;    
                if (abs(sum)>10000) sum=0;
                output=kp*error + ki * sum + kd*(position_1-position);    
                scaled_out=abs(output/40); 
                position_1=position;
            }
            با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

            دیدگاه


              #7
              پاسخ : PID controller with AVR

              نوشته اصلی توسط kasper
              شما که گفتید این پروژه رو دارید ؟
              عرض کردم که گفت میشه با پ امپ پیاده سازیش کرد و همچنین گفتن شما با AVR درست کند.مشکل من هم اینجاست که چهطوی یه مدار آنلو رو با AVR میشه
              درست کرد.
              یه چیزی که یادم رفت بگم اینه که من درس کنترل رو هنوز نخوندم و احتمالاً تو این درس یه چیزایی در موردش خواهن گفت.
              خدايا
              من در كلبه ي فقيرانه ي خود چيزي دارم كه تو در عرش كبريايي خود نداري
              من چون تويي دارم و تو چون خودي نداري
              امام سجاد (ع)

              دیدگاه


                #8
                پاسخ : PID controller with AVR

                نوشته اصلی توسط m.r.M.R
                سلام .
                من یه پروژه ی ساخت PID کنترلر با AVR دارم. ولی نمیدونم که این PID دقیقاً بهچه دردی میخوری و چه طور میشه به صورت دیجیتالی پیاده سازیش کرد.
                دوستان لطف کنن و راهنمایی کنن.
                http://www.atmel.com/dyn/resources/prod_documents/doc2558.pdf
                There is nothing so practical as a good theory. — Kurt Lewin, 1951

                دیدگاه


                  #9
                  پاسخ : PID controller with AVR

                  سلام دوستان.یک مشکلی در خصوص PID دیجیتال داشتم اونم اینکه برنامه ام جواب نمیده..نمیدونم چرا؟! مشکل اینه که سرعت همیشه حول 100 RPM باقی میمونه...!!!! حتی اگر SETPOINT رو تغییر بدم.راهنمایی کنید لطفا
                  اینم برنامم هستش.با تشکر
                  $regfile = "m32def.dat"
                  $crystal = 12000000
                  Config Lcd = 16 * 2
                  Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
                  Dim A As Long
                  Dim B As Byte
                  Dim I As Long
                  Dim E As Long
                  Dim J As Byte
                  Dim F As Long
                  Dim Kp As Byte
                  Dim Kd As Byte
                  Dim Ki As Byte
                  Dim Setpoint As Byte
                  Dim Pterm As Byte
                  Dim Dterm As Byte
                  Dim Iterm As Byte
                  Dim Dstate As Byte
                  Dim Istate As Byte
                  Dim Rpmout As Byte
                  Kp = 3
                  Ki = 3
                  Kd = 3
                  I = 0


                  Config Timer0 = Timer , Prescale = 1024
                  Config Timer1 = Counter , Edge = Rising
                  Config Timer2 = Pwm , Pwm = On , Prescale = 1024 , Compare Pwm = Clear Up
                  Enable Interrupts
                  On Ovf0 Isr0
                  On Ovf1 Isr1
                  Start Timer0
                  W:
                  A = A / 4
                  A = A * 60
                  Rpmout = A
                  Locate 1 , 1
                  Locate 2 , 1
                  Lcd "SETPOINT=" ; 100
                  E = 100 - Rpmout
                  J = E / 100
                  J = J * 100
                  Locate 1 , 9
                  Lcd "E=%" ; J
                  F = E * 22
                  F = E / 100
                  Pterm = Kp * F
                  Dterm = F - Dstate
                  Dterm = Dterm * Kd
                  Iterm = Istate + F
                  Iterm = Ki * Iterm
                  Dstate = F
                  Istate = F
                  Ocr2 = Ocr2 + Pterm
                  Ocr2 = Ocr2 + Dterm
                  Ocr2 = Ocr2 + Iterm
                  If Ocr2 > 255 Then
                  Ocr2 = 255
                  Else
                  Ocr2 = Ocr2
                  End If
                  Goto W
                  End
                  Isr0:
                  Stop Timer0
                  Incr I
                  If I > 31 Then
                  Wait 1
                  A = B * 65536
                  A = A + Counter1
                  A = A / 2
                  B = 0
                  Counter1 = 0
                  I = 0
                  End If
                  Start Timer0
                  Return
                  Isr1:
                  Incr B
                  Counter1 = 0
                  Return

                  دیدگاه


                    #10
                    پاسخ : PID controller with AVR

                    با سلام

                    من در مورد PID مطالعه کردم همه چیز فهمیدم غیر از اینکه این ضرایب Kp و Ki و Kd راچطوری میشه به دست آورد؟


                    میگن تجربی و روش سعی و خطا!!!

                    خب سعی و خطا یعنی چه جوری؟؟

                    من می خوام برای یه کوره برنامه بنویسم!!!

                    این ضرایب را چطوری به دست بیارم؟!!!

                    پیشاپیش از کمکتون ممنونم!!

                    دیدگاه


                      #11
                      پاسخ : PID controller with AVR

                      نوشته اصلی توسط ok20
                      با سلام

                      من در مورد PID مطالعه کردم همه چیز فهمیدم غیر از اینکه این ضرایب Kp و Ki و Kd راچطوری میشه به دست آورد؟


                      میگن تجربی و روش سعی و خطا!!!

                      خب سعی و خطا یعنی چه جوری؟؟

                      من می خوام برای یه کوره برنامه بنویسم!!!

                      این ضرایب را چطوری به دست بیارم؟!!!

                      پیشاپیش از کمکتون ممنونم!!
                      سلام
                      با توجه به کاری که میخوای بکنی روش های متنوعی وجود داره...
                      راحتترینش روش زیگلر نیکولز هست...
                      Ki و Kd رو غیر فعال میکنی بعدش تقویت کنندت رو اونقدر زیاد میکنی که مدار بره تو حالت ناپایدار بعدش با توجه به نسبت تقویت کنندگی بقیه ضرایب بدست میاد
                      تو اینترنت سرچ کن ضرایب زیگلر نیکولز

                      -----------------------------------------------------------
                      فرایندهای صنعتی معمولا فرکانس کاری پایینی دارند مثل همین تغییر دمای یک کوره
                      بهتره قبل از اینکه این کارها رو انجام بدی با مفهوم کنترلرها تو آزمایشگاه کنترل خطی آشنا شده باشی

                      واقعا توی این آزمایشگاه مفاهیمی که خوندی تازه جا میافته

                      دیدگاه


                        #12
                        پاسخ : PID controller with AVR

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

                        دیدگاه

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