اطلاعیه

Collapse
No announcement yet.

کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

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

    #31
    پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

    نوشته اصلی توسط ehsanbagheri
    من PID رو واسه کنترل یرعت موتور با فیدبک از شفت اینکودر استفاده کردم و خیلی نتیجه خوبی داد
    برای کار شما میتونم کمک کنم ولی من فقط روش و مسیر رو میگم کد نویسیش با خودتون البته تا جایی
    که وقت داشته باشم کمک میکنم
    شما اول همین فسمت که گفتم رو انجام بده قسمت P از PID رو پیاده کردی بعد از اون میریم یراغ قسمت
    I و بعد D که دیگه تموم میشه
    البته شما باید یه تایم سمپلینگ هم درست کنید که یه تایمر رو فعال کنید و با اسفاده از وقفه این کارو بکنید
    البته در مرحله اول این کارو انجام ندید و با همون تاخیر کارتئن رو انجام بدید

    من فردا ساعت 19 به بعد آنلاین میشم
    سلام
    میشه ادامه بدید.
    در مورد کنترلر های I و d
    باتشکر

    دیدگاه


      #32
      پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

      نوشته اصلی توسط rekima
      سلام
      میشه ادامه بدید.
      در مورد کنترلر های I و d
      باتشکر
      سلام
      دوست عزیز فکر کنم قدم به قدم بریم جلو بهتر باشه.
      مثل همه تایپیک ها از اول نپریم وسط و بعدشم اخر بعدم هیچکس چیزی نفهمه.

      دیدگاه


        #33
        پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

        چشم دوست عزیز.
        دوست عزیز از چه موتوری در ربات مسیریاب استفاده میکنی؟؟
        باتشکر...

        دیدگاه


          #34
          پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

          نوشته اصلی توسط rekima
          چشم دوست عزیز.
          دوست عزیز از چه موتوری در ربات مسیریاب استفاده میکنی؟؟
          باتشکر...
          من برای 24 سنسوره از 700 استفاده کردم الان بصورت معمولی نوشتم برنامشو این فیلمشه:
          http://upload7.ir/preview.php?user=&...76e482de58a808
          هر راهنمایی خواستی اگر بتونم در خدمتت هستم

          دیدگاه


            #35
            پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

            بازم با تشکر
            عالی بود...
            در ضمن برنامه رو تست کردی؟؟؟
            که دوست عزیز بحث رو ادامه بده؟؟

            دیدگاه


              #36
              پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

              من همه متغییر های c رو با error عوض کردم که بعدا برای پیاده سازی
              یه PID کامل به مشکل برنخوریم اون اخری رو یادم رفته تغییر بدم
              شما پاکش کن به جاش بنویس error

              دیدگاه


                #37
                پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                نوشته اصلی توسط ehsanbagheri
                من همه متغییر های c رو با error عوض کردم که بعدا برای پیاده سازی
                یه PID کامل به مشکل برنخوریم اون اخری رو یادم رفته تغییر بدم
                شما پاکش کن به جاش بنویس error
                متشکرم
                برنامه تست کردم اما حرکت بدی داره.یعنی روی خط چپ راست میکنه و جلو میره
                مشکل چیه!

                اضافه شده در تاریخ :
                نوشته اصلی توسط ehsanbagheri
                Set Portd.3
                set Portd.6


                Do
                A = Porta
                B = Portc

                error= A -B

                If error > 0 Then
                Pwm1a = 500 + error
                Pwm1b = 500 - error
                if(Pwm1a >1023) then
                Pwm1a =1023
                end if

                if(Pwm1b <0) then
                Pwm1b =0
                end if

                Elseif error < 0 Then
                Pwm1a = 500 - error
                Pwm1b = 500 + error
                if(Pwm1b >1023) then
                Pwm1b =1023
                end if

                if(Pwm1a <0) then
                Pwm1a =0
                end if

                Elseif C = 0 Then
                Pwm1a = 1023
                Pwm1b = 1023


                End If
                Loop
                دوستان اگر خواستن اینو تست کنند بجای

                A = Porta
                B = Portc

                بنویسن
                A=PINA
                B=PINC
                ( در بسکام )

                دیدگاه


                  #38
                  پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                  میتونی فیلم بزاری از رفتن ربات؟؟؟

                  دیدگاه


                    #39
                    پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                    نوشته اصلی توسط rekima
                    میتونی فیلم بزاری از رفتن ربات؟؟؟
                    الان اصلا مخم کار نمیده.خسته خسته ام.فردا انشاالله ازش میگذارم.

                    دیدگاه


                      #40
                      پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                      باشه.
                      خسته نباشی.

                      دیدگاه


                        #41
                        پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 س

                        همین که حرکت میکنه خیلی خوبه
                        توی بحث کنترل این پدیه به دلیل تیون نبودن یا نا پایداری سیستم هست
                        شما باید أعداد رو کم و زیاد کنید و همینطور یه ضریب در error ضرب کنید مثلا از 0.0001 تا 100 (هر دفه 10برابرش کنید )
                        و نتیجه رو ببینید تا بفهمید چه حالتی بهترین حالت هست
                        البته این رو هم بگم که این طرحی که الان پیاده شده کنترلر P درست نیست ولی خیلی شبیه هست اگر مرحله به مرحله پیش بریم فکر
                        کنم نتیجه خوب بشه
                        بعد do یه waitms100 یا 50 بزارید تا یکم بهتر بتوندی نتیجه رو ببینید
                        کد:
                        Set Portd.3
                        set Portd.6
                        
                        Do 
                        Waitms 100
                        A = pina
                        B = pinc
                        
                        error= A -B
                        
                        If error > 0 Then
                        error=error*0.1
                        Pwm1a = 500 + error
                        Pwm1b = 500 - error
                        if(Pwm1a >1023)  then
                        Pwm1a =1023
                        end if
                        
                        if(Pwm1b <0)  then
                        Pwm1b =0
                        end if
                        
                        Elseif error < 0 Then
                        error=error*0.1
                        Pwm1a = 500 - error
                        Pwm1b = 500 + error
                        if(Pwm1b >1023)  then
                        Pwm1b =1023
                        end if
                        
                        if(Pwm1a <0)  then
                        Pwm1a =0
                        end if
                        
                        Elseif error= 0 Then
                        Pwm1a = 1023
                        Pwm1b = 1023
                        
                        
                        End If
                        Loop
                        متغیر ها رو هم از نوع integer تعریف کنی بهتره البته بعدا باید error از نوع float باشه

                        دیدگاه


                          #42
                          پاسخ : پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 س

                          نوشته اصلی توسط ehsanbagheri
                          همین که حرکت میکنه خیلی خوبه
                          توی بحث کنترل این پدیه به دلیل تیون نبودن یا نا پایداری سیستم هست
                          شما باید أعداد رو کم و زیاد کنید و همینطور یه ضریب در error ضرب کنید مثلا از 0.0001 تا 100 (هر دفه 10برابرش کنید )
                          و نتیجه رو ببینید تا بفهمید چه حالتی بهترین حالت هست
                          البته این رو هم بگم که این طرحی که الان پیاده شده کنترلر P درست نیست ولی خیلی شبیه هست اگر مرحله به مرحله پیش بریم فکر
                          کنم نتیجه خوب بشه
                          بعد do یه waitms100 یا 50 بزارید تا یکم بهتر بتوندی نتیجه رو ببینید
                          کد:
                          Set Portd.3
                          set Portd.6
                          
                          Do 
                          Waitms 100
                          A = pina
                          B = pinc
                          
                          error= A -B
                          
                          If error > 0 Then
                          error=error*0.1
                          Pwm1a = 500 + error
                          Pwm1b = 500 - error
                          if(Pwm1a >1023)  then
                          Pwm1a =1023
                          end if
                          
                          if(Pwm1b <0)  then
                          Pwm1b =0
                          end if
                          
                          Elseif error < 0 Then
                          error=error*0.1
                          Pwm1a = 500 - error
                          Pwm1b = 500 + error
                          if(Pwm1b >1023)  then
                          Pwm1b =1023
                          end if
                          
                          if(Pwm1a <0)  then
                          Pwm1a =0
                          end if
                          
                          Elseif error= 0 Then
                          Pwm1a = 1023
                          Pwm1b = 1023
                          
                          
                          End If
                          Loop
                          متغیر ها رو هم از نوع integer تعریف کنی بهتره البته بعدا باید error از نوع float باشه
                          آقا تشکر
                          من یه مشکلی برام پیش اومده یکی از نزدیکانم فوت شد الان ، انشاالله شب ها میام و تست میکنم هرچی فرمودید نتیجه اش با فیلم براتون میگذارم.

                          دیدگاه


                            #43
                            پاسخ : پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 س

                            نوشته اصلی توسط ehsanbagheri
                            همین که حرکت میکنه خیلی خوبه
                            توی بحث کنترل این پدیه به دلیل تیون نبودن یا نا پایداری سیستم هست
                            شما باید أعداد رو کم و زیاد کنید و همینطور یه ضریب در error ضرب کنید مثلا از 0.0001 تا 100 (هر دفه 10برابرش کنید )
                            و نتیجه رو ببینید تا بفهمید چه حالتی بهترین حالت هست
                            البته این رو هم بگم که این طرحی که الان پیاده شده کنترلر P درست نیست ولی خیلی شبیه هست اگر مرحله به مرحله پیش بریم فکر
                            کنم نتیجه خوب بشه
                            بعد do یه waitms100 یا 50 بزارید تا یکم بهتر بتوندی نتیجه رو ببینید
                            کد:
                            Set Portd.3
                            set Portd.6
                            
                            Do 
                            Waitms 100
                            A = pina
                            B = pinc
                            
                            error= A -B
                            
                            If error > 0 Then
                            error=error*0.1
                            Pwm1a = 500 + error
                            Pwm1b = 500 - error
                            if(Pwm1a >1023)  then
                            Pwm1a =1023
                            end if
                            
                            if(Pwm1b <0)  then
                            Pwm1b =0
                            end if
                            
                            Elseif error < 0 Then
                            error=error*0.1
                            Pwm1a = 500 - error
                            Pwm1b = 500 + error
                            if(Pwm1b >1023)  then
                            Pwm1b =1023
                            end if
                            
                            if(Pwm1a <0)  then
                            Pwm1a =0
                            end if
                            
                            Elseif error= 0 Then
                            Pwm1a = 1023
                            Pwm1b = 1023
                            
                            
                            End If
                            Loop
                            متغیر ها رو هم از نوع integer تعریف کنی بهتره البته بعدا باید error از نوع float باشه
                            برنامه تصحیح شده به بسکام:
                            کد:
                            $regfile = "m16def.dat"
                            $crystal = 8000000
                            
                            Config Porta = Input
                            Config Portb = Input
                            Config Portc = Input
                            Config Pind.0 = Input
                            Config Pind.1 = Input
                            Config Pind.2 = Input
                            Config Pind.7 = Input
                            
                            Config Portd.3 = Output
                            Config Portd.4 = Output
                            Config Portd.5 = Output
                            Config Portd.6 = Output
                            
                            Config Timer1 = Pwm , Pwm = 10 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
                            Dim A As Integer , B As Integer , Error As Integer
                            Set Portd.3
                            set Portd.6
                            
                            Do
                            Waitms 100
                            A = pina
                            B = pinc
                            
                            Error = A - B
                            
                            If error > 0 Then
                            error=error*0.1
                            Pwm1a = 500 + error
                            Pwm1b = 500 - error
                            if Pwm1a >1023  then
                            Pwm1a =1023
                            end if
                            
                            If Pwm1b < 0 Then
                            Pwm1b =0
                            end if
                            
                            Elseif error < 0 Then
                            error=error*0.1
                            Pwm1a = 500 - error
                            Pwm1b = 500 + error
                            If Pwm1b > 1023 Then
                            Pwm1b =1023
                            end if
                            
                            If Pwm1a < 0 Then
                            Pwm1a =0
                            end if
                            
                            Elseif error= 0 Then
                            Pwm1a = 1023
                            Pwm1b = 1023
                            
                            End If
                            Loop

                            دیدگاه


                              #44
                              پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                              سلام
                              اون أعداد رو تغییر بده تا دیگه رباط زیاد به چپ و راست نپیجه و نتیجه خوبی بده

                              دیدگاه


                                #45
                                پاسخ : کمک برای نوشتن برنامه ربات تعقیب خط 24 سنسوره

                                میشه ادامه بدبد.
                                کنترلر های I و D و در نهایت PID؟؟؟؟؟؟؟؟؟؟
                                :sad:

                                دیدگاه

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