avatar_Mucit23

PID kontrol Sistemleri

Başlatan Mucit23, 30 Kasım 2011, 11:30:30

0nur

Şuan yapmış olduğum çalışmada hız kontrolü üzerinden gidiyorum, yani motor çıkış hızını referans değerde tutmaya çalışıyorum. Motora yük binince hız düşüyor ve geribesleme etkisi ile bunu algılayarak hızı tekrar ref. değere çekmeye çalışıyoruz ve yükten kaynaklanan direnci yenmesi için torku arttırıyoruz.

Benim dediğim ise şu ; motorda referans aldığım durum hız değilde tork olursa yani çıkış torkum 0.5nm olsun istiyorsam bunu nasıl yapabilirim diye düşündüm bir an..

Bunun için tork geribildirimini almam lazım fakat buda sisteme adapte edilmesi zor bir işlev

F®T

eğer hızı sabit tutarsan tork ta sabit olur.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

0nur

Hızı sabit tutmaktan kastım şu ;

Şuanki kontrol sisteminde motorun çıkışındaki hız 10 rpm.

Ben bu motora yük bağladığımda 10 rpmde durmak için duty cycle artacak ve dolayısıyla torku arttırmış olacam. Benim burada torku arttırma durumum hıza bağlı.

Fakat direkt torku kontrol edebilirmiyim diye düşündüm.

Bu arada oransal kontrol sonucu aşağıdaki tabloda yer alıyor. Integralde eklenince bu salınımları ortadan kaldırabilir yada azaltabiliriz diye düşünüyorum.


Mucit23

Hız sabitken motor voltajı artarsa (örneğin motorun zorlanma durumunda hızın sabit tutulması için besleme voltajının artması) tork artar. Fakat motor ısınır.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

F®T

motor devrini ölçtükten sonra voltaj artsada düşsede yük artsa düşsede farkeden birşey olmaz.nasıl olsa devri sabit tutmaya çalışacaksın.ama motorunda bir dur noktası mutlak vardır onunda tedbirini almak lazım.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

0nur

Alıntı yapılan: F.T - 27 Eylül 2013, 17:19:34
motor devrini ölçtükten sonra voltaj artsada düşsede yük artsa düşsede farkeden birşey olmaz.nasıl olsa devri sabit tutmaya çalışacaksın.ama motorunda bir dur noktası mutlak vardır onunda tedbirini almak lazım.

Yük arttığında benim devrim düşüyor, dolayısıyla ben tekrar aynı devri yakalamak için pwm ile motorun hızını arttırıyorum. Mevcut yükte tekrar aynı hıza ulaştığım anda ben zaten torku arttırmış oluyorum.


F®T

hızını koruyorsun ama motorun yükleniyor ne oluyor akımın artıyor.tabi bununda stop noktası olmalı.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

0nur

Alıntı yapılan: F.T - 27 Eylül 2013, 17:43:03
hızını koruyorsun ama motorun yükleniyor ne oluyor akımın artıyor.tabi bununda stop noktası olmalı.

Ebette, o konuda haklısınız. Maksimum zorlamaya maruz kaldığında motorda yada sürücüde sıkıntılar muhakkak meydana gelecektir.

0nur

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24.9.2013                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

Device 16F877   
Config hs_OSC , WDT_OFF, PWRTE_ON,  BODEN_OFF , LVP_OFF, CP_OFF 

Declare Xtal 20

'============================== LCD TANIMLAMALARI=====================================;

Declare LCD_DTPin = PORTD.4
Declare LCD_RSPin = PORTE.0
Declare LCD_ENPin = PORTE.1
Declare LCD_Interface =  4 ' 4-bit Interface
Declare LCD_Lines =  4
Declare LCD_Type  = alpha
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
All_Digital TRUE
Cls

'==========================================================================================================;           
'=====================================KESME TANIMLAMALARI ================================;             


On_Hardware_Interrupt GoTo bak              'Software int. oluştuğunda INT etiketine git.

OPTION_REG.6=0
T1CON=%00110001    ' -------->>>  |  DİSABLE   |   DİSABLE   |   PS1    |  PS0   |   T1OSCEN  |   T1SYNC   |  TMR1CS   |   TMR1ON   |
         
Symbol INTF = INTCON.1      'RB0 KESME BARAĞI
Symbol INTE = INTCON.4      'RB0 KESME YETKİ
Symbol GIE = INTCON.7       'GLOBAL INT. YETKI
Symbol PEIE=   INTCON.6
Symbol TMR1E=  T1CON.0      ' TMR1 ENABLE BİTİ
Symbol TMR1IF= PIR1.0       ' TMR1 TAŞMA BAYRAĞI
Symbol TMR1IE= PIE1.0


TMR1IE=1 ' TMR1 AŞIMI KESME OLUŞTURMA AKTİF ETME BİTİ
TMR1IF=0 ' TMR1 AŞIM KESME BAYRAĞI
PEIE=1 
INTE=1                      'RB0 Kesmesi aktif
GIE=1                       'Aktif O an Tüm kesmelere Yetki ver     


TMR1H=$0b
TMR1L=$dc

'==========================================================================================================;
'=====================================PWM TANIMLAMALARI ================================; 

CCP1CON=%00001100
Declare CCP1_Pin = PORTC.2   ' Select HPWM port and bit for CCP1 module. i.e. channel 1
Declare CCP2_Pin = PORTC.1   ' Select HPWM port and bit for CCP2 module. i.e. channel 2     
   
'==========================================================================================================;
'============================= GİRİŞ - ÇIKIŞ VE DEĞİŞKENLER ==========================;
     
Input PORTB     
     
Input PORTD         
TRISC=0
Dim T1 As Word   
Dim sayac As Word   
       
Dim sure As Byte

Dim redhiz  As Dword         
Dim motorhiz  As Dword
Dim redtam  As Word         
Dim redonda  As Word
Dim mtam As Word
Dim monda As Word
Dim yon As Bit
Dim a As Bit
Dim b As Bit
Dim t11 As Byte
Dim cycle As Byte



Dim ref As Byte
Dim PID_Kp As Byte
Dim PID_e As Word
Dim PID_Ps As Dword

'================================== integral kont sabitleri =========================================================================;;
   
Dim PID_ISET As Bit          ; İntegral sürücü için flag                               


    Dim PID_Ki As Word                              ; integral kazanc ( Bizim girdiğimiz değer - Matlab ın hesapladığı )   
    Dim hatai As Word                               ; e değeri ( HATA)  e=SET-ÖLÇÜM
    Dim PID_it As Byte                                ; integral zaman sabitimiz.Buraya adet bilgisi gireceğiz
    Dim PID_Imax As Word                        ; İntegral değer hesabı için girilecek max. değer. Programa bakınca anlarsınız
    Dim PID_Is As Word                             ; İntegral sürücü
    Dim PID_isat As Word                          ; integral sürücü ara toplam değeri
    Dim PID_Isayac As Byte                      ; İntegral ölçümler için sayıcı
    Dim PID_a As Bit                                 ;  Bit bazında kayıt yapabileceğimiz bir register




'================================== GİRİŞ ÇIKIŞ TANIMLAMALARI =========================================================================;;


Symbol yonbilgi=PORTD.1
Symbol mi=PORTC.0
Symbol mg=PORTC.1
Symbol led=PORTC.3
Symbol led2=PORTC.4

Symbol enc=PORTB.0       
Symbol enc2=PORTB.1       
Clear



'==========================================================================================================;
'============================= ANA DÖNGÜ ==================================================================;


mi=0
mg=1


ref=10
PID_Kp=0.8
PID_Ki=1.2
PID_it=8
PID_Imax = 10


basla:

HPWM 1,cycle,1000

motorhiz=((sayac)*3.75)*100       '60/16=3.75
mtam=motorhiz/100
monda=motorhiz//100
redhiz=(sayac*0.7732)             '(60/(485*16))*100~= 0.7732
redtam=redhiz/100
redonda=redhiz//100
PID_e=(ref-redtam)


cycle= PID_Ps + PID_Is


' ORANSAL KONT...................

'PID_PS=10+( PID_kp * (PID_E) )      ' ORANSAL SÜRÜCÜ DEĞERİ

PID_Ps = Abs PID_e                   ; Hata sinyalinin değerini oransal sürücüye yüklüyoruz
PID_Ps = PID_Ps * PID_Kp          ; oransal sürücü değeri ile oransal katsayımızı çarpıyoruz (32 bit )         
If PID_e.15 = 1 Then
PID_Ps = -PID_Ps  ; Hata sinyalinin 15. bitine bakarak yönünü öğreniyoruz ( +  -  )
EndIf




' İNTEGRAL KONT..................


PID_isat = PID_isat + PID_e              ; HATA değerini ara toplam değeri ile topluyoruz


If PID_Isayac>= PID_it Then              ;( PID_it = 8 ) kaç adet ölçüm yapacaksak onun karşılaştırmasını yapıyoruz. Ben 8 dedim
    PID_a= PID_isat.15                         ; ara toplam değerinin işaretine bakıyoruz. ( + - )
    PID_isat = Abs PID_isat                   ; ara toplamın mutlak değerini alıyoruz
    PID_isat = PID_isat * PID_Ki          ; ara toplam değeri ile Ki değerini çarpıyoruz. Ki değerini biz veriyoruz. Matlabın işi :)
    PID_isat = PID_isat / PID_it            ; ara toplam değerini integral ölçüm adedine bölüyoruz. Ben 8 kabul etmiştim
    If PID_a = 1 Then PID_isat = -PID_isat      ; ara toplam değerinin işaretini geri yüklüyoruz
    PID_Is = PID_Is + PID_isat              ; İntegral sürücünün değerini hesaplıyoruz.Bu değer giderek artar. Ne zaman isat değeri
                                      ; negatife kaydı o zaman bu değer azalmaya başlar. Böylece SET noktasının altında ve
                                                     ; üstünde salınım yapar. Bir süre sonra tam SET değerine oturur. Biraz uzun sürer
    PID_a = PID_Is.15                          ; Integral sürücünün işaretini kaydediyoruz ( + - )
    PID_Is = Abs PID_Is                      ; integral sürücünün mutlak değerini kaydediyoruz
       
        If PID_Is >= PID_Imax Then          ; Hesap sonucu integral sürücü değeri 100 den büyükse
            PID_ISET= 1                                 ; Taşma var diyoruz
            PID_Is = PID_Imax                     ; ve 100 e eşitliyoruz. ( Imax için önceden 100 değerini girmiştim.)
        EndIf

       If PID_a = 1 Then PID_Is = -PID_Is   ; integral sürücünün işaretini geri yüklüyoruz ( +  - )
          PID_Isayac= 0                                   ; İntegral sayacı sıfırlıyoruz
          PID_isat = 0                                       ; ara toplam değerini sıfırlıyoruz                       
EndIf


Print At 1,1,"S:",@ref," ","Cyc:",SDec2 cycle," ","h:",@PID_e,"    ",
Print At 2,1,"MOTOR: ",@mtam,".",Dec2 monda,
Print At 2,16,"RPM"
Print At 3,1,"SAFT : ",@redtam,".",Dec2 redonda,
Print At 3,16,"RPM"
Print At 4,1,"FREQ : ",@sayac,
Print At 4,13,"hz"



If yon=1 Then
Print At 4,16,"Cw ",@PID_Isayac,
Else
Print At 4,16,"Cww",@PID_Isayac,
EndIf






GoTo basla                 
               
'============================================== KESME ======================================================       

Disable
bak:
Context Save
If TMR1IF=1 Then
TMR1H=$0b
TMR1L=$dc
TMR1IF=0
Inc sure
PID_Isayac= PID_Isayac + 1              ; Sayaç değerimizi arttırıyoruz


If sure=10 Then
   sayac=T1   
   T1=0
   sure=0
EndIf


GoTo CIK
EndIf
Inc T1

t11=T1//2

If t11=1 Then
a=enc
EndIf
If t11=0 Then
b=enc2
EndIf
yon=a^b



INTF=0 

CIK:
Context Restore
Return





'=====================================================================================================================================00000


 






Yukarıdaki koda integral konrolüde ekledim fakat motoru zorladığımda cycle değeri artması gerekirken herhangi bir değişim olmuyor.Fakat hatayı görebiliyorum. Bir yerde hata var sanırım.

inventor

#99
Alıntı yapılan: ete - 27 Eylül 2013, 16:35:22
Tork kontrolü ile ilgili bir çalışmam olmadı. Tork kontrolü tabirini kafama oturtamadım. Tork dedğin şey senin redüktörlü motorun redüktör çıkışının dairesl kuvvetidir. Bunu kontrol etmek ne anlama geliyor biraz açıklarmısın?

Ete


Merhaba,
PID konusu bir hayli ilerlemiş. Yardımım dokunursa sevinirim. Ete hocamın bahsettiği konuya biraz açıklama getirmek istiyorum. ( Elimden geldiğince ).

TORK kelimesini kaba bir tabirle Döndürme momenti- gücü gibi algılayabiliriz. Genelde Otomobil sektöründe duyduğumuz bir kelime. Ve yine motorun gücü ile karıştırılan bir kelime.

Bizi ilgilendiren kısım elektrik motorlarındaki tork olayı. İşe torku oluşturan unsurlarla başlayalım.

Eski tip bir kapı kolu düşünelim. L harfi şeklinde olan.( Çevirmeli değil yani ). Kapıyı açmak için kolu aşağı yönde bastırıyoruz. Kolun uç kısmında dönme hareketi oluyor ve kapı kilidini içeri doğru çekiyor. Çalışması bu şekilde. Şimdi neler olup bittiğine bakalım;

Biz kapı koluna aşağı yönde kuvvet uygulamıştık. Buna güç diyoruz ve Watt ya da HP ( Beygir Gücü ) olarak tanımlıyoruz. ( HP hakkında kısa bir bilgi verelim. HP ( Horse power ), 75 kg ağırlığı 1 saniye içerisinde 1 metre yukarıya kaldırabilen gücün adıdır. Peki neye bağlıdır? :

P= V * I     

Formülünü çoğu kişi bilir. Buradaki P  watt olarak görünür ama 0,001341 ile çarparsanız birimini hp olarak bulursunuz. Bir dc motorda motorun tükettiği güç motora uygulanan gerilim ile motorun çektiği akımın çarpımı kadardır. ( Kayıpları yok sayıyoruz ) ))

Kapı koluna uyguladığımız kuvvet, kapı kolu boyunca ilerliyor ve uç noktada bir dönme hareketine neden oluyor. İşte tork tam burada ortaya çıkıyor. Bu dönme hareketinin kuvveti nelere bağlı , ona bakalım.

Kola uyguladığımız kuvvet doğrudan etkili olacaktır. Ayrıca kuvvet kolu dediğimiz yolun uzunluğuna da bağlıdır. Diğer bir unsurda torkun ortaya çıktığı dönme hareketinin çapına bağlıdır. Bu üç unsur bizim elde edeceğimiz torku gösterir. Kısaca hesabını anatalım sonra konumuza dönelim.

Tork = Toplam kuvvet kolu * Uygulanan kuvvet

Motorlara gelince;
Motorlarda da bilindiği üzere hem güç hem de tork vardır. Motorlarda güç, motorun torkunun açısal hızı ile çarpımına eşittir. Aynı zamanda uygulanan voltaj ile çekilen akımın çarpımına eşittir. Açısal hız ise ; 1 saniyede ki motor devrinin 2*pi ile çarpımına eşittir. Formül ile anlatalım;

P = V * I       bildiğimiz klasik formül P: Güç , V: Voltaj , I:Akım
P = T * w      Tork ile güç hesabı. P: Güç , T:Tork , w: Açısal hız

w = 2*pi*f    Açısal hız hesabı.  w:Açısal hız , f:Dönme frekansı ( 1 sn. deki tur sayısı )

Konumuz DC motorlar olduğu için sadece o konu ile devam edelim.

DC motorlarda tork değeri , devirden bağımsız olarak değiştirilemez. AC motorlarda devir sayısı uygulanan gerilime bağlı değildir. Bu nedenle anlık olarak motora yüksek gerilim gönderirseniz , motor devrini değiştirmeden torkunu arttırmış olursunz. ama bu durum DC motorlar için geçerli değil. Eğer DC motorun gerilimi ile oynarsanız aynı anda devrini de oynamış olursunuz.

DC motorlar belli bir devir sayısı ve tork değeri düşünülerek tasarlanırlar. Mesela 12 Volt 0,1 Nm , 6000 d/d olarak tasarlanan bir motor için bu değerler üst noktayı belirler. Torku arttırmak için voltajı artırırsanız bir süre sonra motor yanacaktır. DC motor kullanılan projelerde değişken torka ihtiyaç varsa bu iş devir kontrolü ile yapılır. Ama unutmamak gerekir ki; tork sadece  aşağı yönde ayarlanabilir. AC motorlarda ise VFD sürücüler sayesinde yukarı yönde tork kontrolü yapılabiliyor.

Şimdi elimizde bir motor var diyelim ve torkunu bulalım.

Motor çalışma anında 1Amper çekiyor olsun. Besleme gerilimi de 12 Volt. Bu şartlar altında motorun devir bilgilerini de üreticinin sınırları içerisinde kabul edelim ve 4600 d/d olsun.

P=V*I   ,  P=12*1  , P=12 Watt

w=2*pi*f  , w=6,28 * (4600/60)  ,  w= 6,28*76,66  , w=481

P=T*w  , T=P/w  , T=12 / 481  , T= 0,0249 Nm  , T=24,9 mNm

Motorumuz yaklaşık 25 mNm tork üretmektedir. Bu rakam motorun rotor milinden alınan torku gösterir. Eğer bu mile bir kasnak takarsanız, tork hemen değişecektir. Kasnak çapı motor mil çapından daha geniş olduğu sürece tork düşer. Eğer kayış kasnak gibi bir düzenekle devri düşürürseniz tork artacaktır. Dikkat ettiyseniz motor gücü sabit kaldığı halde tork değişebiliyor.

Aklıma gelenler bunlar. Soru olursa yanıtlamaya çalışırım

EDIT..........

Eksik bıraktığımız bir yer kalmış.

Diyelim ki aynı motor yükten dolayı devir kaybetmeye başladı. Yüke uygulanan torkun artırılması gerekiyor. Yanılgı tam burada başlıyor. Torku değiştirebilecek etkenleri yukarıda yazmıştık. Torku artırmak için bir şeylerden fedakarlık yapmamız gerekiyor. O da ya güçtür ya da devir.

Bizim motorlu sistemde ya motorun çekeceği gücü artıracağız ya da kayış kasnak sisteminde değişiklik yaparak devri düşüreceğiz. Her iki durumda da tork artacaktır.

Sakıncaları nelerdir onlara bakalım. Motora uyguladığınız gücü ,motor gerilimini artırarak sağlarsınız. Bu da akımın artması demektir. Çünkü motor sargı direnci sabittir. Mesela yukarıdaki motorun sargı direnci 12 ohm olsun.

I= V/R   ,   I=12/12    , I= 1 Amper

Bizim motorumuz 12 volt için 4600 d/d ve T= 0,0249 Nm tork üretiyor olsun. ( Bu tork hesabını yukarıda yapmıştık )

Şimdi bizim PID vb bir sistem motorun devrini korumak için kontrol yapıyor olsun. Yükten dolayı motor bayılmaya ve devir düşmeye başladı diyelim. PID motora uygulanan gerilimi 13 volta yükseltmiş olsun. Devir 4600 e geri geldi varsayalım ve sistem dengeye girdi. Bakalım neler oluyor;

I=V/R  , I=13/12   , I= 1,08 Amp.

P=V*I  , P=13*1,08   , P=14,08 watt

w=2*pi*f  , w=6,28 * (4600/60)  ,  w= 6,28*76,66  , w=481

P=T*w  , T=P/w  , T=14,08 / 481  , T= 0,0292 Nm  , T=29,2 mNm

Görüldüğü gibi tork arttı. Aynı zamanda motorun harcadığı güçte arttı. Burada bizi bu sistemi kullanmaktan alıkoyan şey motorun üretici tarafından belirlenen sınırları oluyor. Bir çok DC motorda kendini soğutacak bir fan bulunmaz. Bu nedenle tam yükte veya aşırı yükte uzun süre kullanırsanız, açığa çıkan ısı yüzünden motoru yakarsınız. Ne yapmak lazım?...

İhtiyaç duyacağınız Max. gücün en az %15 daha güçlü bir motor kullanacaksınız. Mesela bir fan uygulaması yapıyorsunuz. Size 10 wattlık bir motor gücü lazım. Siz 11-12 watt gibi bir motor kullanın. 10 watt motor alıp gerilimi yükseltip torku artırırım gibi düşünmeyin.

Unutmadan yazayım. Konuyu anlatırken DC motora uygulanan gerilimi artırdığımızda devirde artar demiştik ama üstteki örnekte yapılan hesaplarda devri artmamış kabul ettik. Sebebi şu idi; Bizim motora uygulanan gerilimi artırma nedenimiz, önündeki yükten dolayı motorun devrini yitirmiş olmasıydı. Biz devri tekrar 4600 yapabilmek için gerilimi artırdık ve o noktadaki hesapları yaptık. Tam bu sırada motorun önündeki yük alınacak olsa motor bir anda  hızlanacaktır.




Selam
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

Elzemefe

inventor  hocam açıklamalarınız  için çok teşekkürler..
benim  için çok  iyi  oldu...

inventor

Yazıyı tekrar editledim arkadaşlar. Altta ilaveler var.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

inventor

#102
Alıntı yapılan: 0nur - 27 Eylül 2013, 16:40:41
Şuan yapmış olduğum çalışmada hız kontrolü üzerinden gidiyorum, yani motor çıkış hızını referans değerde tutmaya çalışıyorum. Motora yük binince hız düşüyor ve geribesleme etkisi ile bunu algılayarak hızı tekrar ref. değere çekmeye çalışıyoruz ve yükten kaynaklanan direnci yenmesi için torku arttırıyoruz.

Benim dediğim ise şu ; motorda referans aldığım durum hız değilde tork olursa yani çıkış torkum 0.5nm olsun istiyorsam bunu nasıl yapabilirim diye düşündüm bir an..

Bunun için tork geribildirimini almam lazım fakat buda sisteme adapte edilmesi zor bir işlev

Aslında bir zorluğu yok...  Aşağıda hesap konusuna değinmiştik. Motorun verebildiği torku ( Aktarım organlarının değişmediğini varsayarak ) şöyle hesaplarsın:
Önce açısal hızı bulursun...

w=2*pi*f    burada tek bilinmeyen f.  Bunu da zaten anlık olarak ölçüyorsun. 1 sn deki motor devrini buraya iliştir.( Zaten devir ölçme sistemin hazır). Sonra Motorun çektiği akımı okuman gerekir. Yani ADC yapacaksın.

P=V*I     formülü ile motorun çektiği gücü bulacaksın. ( Bir ADC de oraya lazım olur.)

Açısal hızı ve gücü buldun. sonrası Torku hesaplamaya geldi.

T=P/w   buradan torku anlık olarak görebilirsin.

Fan uygulamalarında devir-tork-akım vb gibi noktalar için PID fazla uygulanmaz. Fan konusunda amaç bir yerden emiş yapmak ya da basınç uygulamaktır. Bunun için vakum ya da basınç ölçümü ile PID yapılır. Fanın eylemsizliği fazladır. Bu nedenle PID katsayıları devir için kullanılacak olursa sıradışı değerler çıkar. Volant gibi düşünün. Bunun yerine bu fan ile ne yapmak istiyorsanız referans noktasını oradan almanız gerekir. Amaç motor devir kontrolü ise ucuna fan takmanızın anlamı yok. Yük olarak fanı düşünmüş iseniz bence yükü değiştirin. Çünkü fan çevre koşullarından çok etkilenen bir parçadır. Ortamdaki hava akımı bile kontrolü zorlaştırır.

Uygulamaya yeni başlandığı için bu konulara dikkat etmek lazım. Biraz tecrübe kazanınca onunda kontrolü yapılır. Youtube ta videolar var. Bir çubuğun ucuna fan takmışlar. Diğer ucuna da bir potansiyometre. Referans olarak potans tan gelen bilgiyi almışlar. Kontrol olarakta fanın devrini ayarlamışlar.
Böyle bir proje başlangıç için iyi olabilir. Ya da başka bir şeyler denenebilir. Ama fan devri biraz sıkıntılı. İsterseniz o konu üzerinde gidebiliriz ama konu uzar diye düşünüyorum. Bahsettiğim gibi bir sistem ayarlayabilirseniz yardımcı olmaya çalışırım.

Selam
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

0nur

Şuanki işlemde PID' i göz ardı edersek,

Motorun encoderından gelen verileri kesme aracılığı ile okuyabiliyorum. Motor hızınıda ölçebiliyorum. Konum kontrolu için yani motor 90' dönsün dursun yada X derece dönsün dursun gibi bir uygulama için;

öncesinde if lerle değişken durumlarını değerlendirmiştim. Yani ;

if x=1 then  ...

if x=2 then ....

şeklinde 1920 değeri motorun 90'deki konumu. Fakat motorda konum kontrolünü tam olarak bu şekilde sağlayamadım. Burada ne tür bir algoritma kullanmam mantıklı olur ?

iflerden ziyade bu uygulamayı nasıl gerçekleştirebiliriz?

eR2

Öncelikle bilgileriniz için çok teşekkür ederim, sayenizde bir pid ısıtıcı yapabildim ama tam anlamıyla pid olmadı gibi çünkü örnekleme süresi almadım..

Motor için de yapmayı düşünüyorum fakat anlamadığım bir nokta var yardımcı olabileceğinizi düşünüyorum hocalarım;

Sıkıntım şu 0-800 aralığında değişen bir duty değerim ve motorumu 0-3000 rpm arası döndürmek istiyorum, motorun yüksüz iken devir hızı 4600d/d..

control= p + i + d denkleminde pwm duty sini control olarak ayarlarsam istenen hıza gelince motor duruyor, sonra tekrar istenen hıza gelip yine duruyor..

Ben de pid değilde if döngüleriyle motoru sabit hızda tutmaya çalıştım, hıza yetişene kadar duty artıyor geçince azalıyor ama beni pek memnun etmedi..

Motoru pid ile nasıl kontrol edebilirim yani duty ayarını nasıl yapacağım? şimdiden teşekkür ederim





Powered by EzPortal