PID kontrol nedir?



PID kontrol nedir?
"PID" Oransal İntegral Türev için kullanılan bir kısaltmadır. Adından da anlaşılacağı gibi, bu terimler hataya  uygulanan üç temel matematiksel fonksiyonu açıklamaktır.  PID kontrolörün ana görevi  ne olursa olsun hatayı  en aza indirmektir. Bir  girdiyi  alır, amaçlanan davranış sapmasını hesaplar ve amaçlanan davranışı sapmanın minimize ve daha yüksek doğruluk elde edilir ki buna göre çıkışını ayarlar.

Neden PID uygulanmalı?

PID uygulamadığımızda çizgi izleyen düşük hızlarda dışarı çıkmadan gidebiliyor. Biz robot hızını arttırmaya başladığımızda ,çok yalpalama  ve genellikle pist dışına çıkma oluyor. Dolayısıyla yüksek hızlarda  çizgiyi  takip etmeyi  sağlayabilmek için PID kontrolü gereklidir.
Temel olarak  sadece üç sensörleri ile başlayabilirsiniz

1.Merkezi sensör çizgiyi  algılarsa robot ileriye 
2.Sol sensör çizgiyi algılarsa robotu sola döndür
3.Sağ  sensör çizgiyi algılarsa robotu sağa döndür

Bu algoritma ile robot çizgiyi hızlı  takip edecek ve  biz  hızı arttırabileceğiz. 

Biz sensörlerin sayısını artırarak çizgiyi takip etme  verimliliğini artırabiliriz.

İşte olası kombinasyonlar                konumunu temsil

00100                                              Hattının merkez üzerinde

00001                                              Çizginin  solunda 

10000                                             Çizginin sağında

Beyaz çizginin kalınlığına ve sensörler  arası mesafeye göre  00110 ve 00011 gibi diğer olası kombinasyonları olacaktır. Çizgi üzerinde ortalanmış ve  çizgiden çıktığında ne kadar hızlı bir şekilde  merkeze  gelmek istiyorsak   bunu "PID" kontrol”  verilerini kullanarak elde edebiliriz.  Sensörlerden gelen bilgi ile robotun hareketi  yüksek hızlarda çok daha düzgün, daha hızlı ve verimli olacaktır.

PID denetiminin iyileştirilmesi :

PID kontrol için referans değerimizi belirleriz. . Daha sonra sensörleri okur ve referans değerimiz ile karşılaştırırız. Bu hata değeri hesaplanabilir, yani, (hata = referans  noktası - gerçek okuma). Bu, hata değeri daha sonra referans  noktasına yakın gerçek okuma yapmak için motor hızlarını  ne kadar  değiştirmek gerektiğini  hesaplamak için kullanılır.


PID nasıl uygulanır?

Terminoloji:

Bir PIDi  anlamak için gerekecek temel terminoloji şunlardır:
• Hata - Hata bir referans değerinde sapmadır. Örneğin, beş sensörden  orta sensör okuması gerekirken en sol sensör okuyorsa hata 2 dir.
• Orantılı (P) - orantılı terimi şu andaki hata ile doğru orantılıdır.
• Entegre (I) - tamamlayıcı terimi süresi (t) boyunca yapılan toplam hatadır.
• Türev (D) - Türev terimi hata değişim oranı 
• Sabit (faktör) - Her zaman (P, I, D) kodu kadar müdahale  gerekecektir. Bu nedenle, bunlar ilgili sabitler ile çarparak koda  dahil edilir.  
P-Faktörü (Kp) - Oransal etkisini artırmak veya azaltmak için kullanılan bir sabit değer
I-Faktörü (Ki) - İntegral etkisini artırmak veya azaltmak için kullanılan bir sabit değer
 D-Faktörü (Kd) - Türev etkisini artırmak veya azaltmak için kullanılan bir sabit değer

Hata ölçümü: Set konumundan hata ölçmek amacıyla ağırlıklı değerler yöntemini  kullanabilirsiniz . Biz robot konumu algılamak  için 5 sensör  kullandığımızı varsayalım. Elde edilen girdinin  olası kombinasyonlara bağlı olarak ağırlıklı olabilir. Atanan ağırlık değerleri, pozisyon içinde hata her ikisi de tam olarak tanımlanmış ve göreceli olarak, aşağıdaki gibi olacaktır.

İkilik değer
Ağırlıklı değer
00001
4
00011
3
00010
2
00110
1
00100
0
01100
-1
01000
-2
11000
-3
10000
-4
00000
-5 veya 5 (önceki değere göre)
ölçülen pozisyon için olası değerler aralığı  -5 ile 5'tir. Biz çizgi üzerinde  bir robotun konumu ölçmek ve Oransal, İntegral ve Türev değerlerini belirlemek için bu değeri kullanırız.

PID formül:

Peki çıkışı ne kadar  değiştireceğimizi  hesaplamak için hata değeri ile ne yapacağız? Biz sadece robotun hareketi ayarlamak için çıkışa hata değeri eklemeniz gerekir. Ve bu iş  oransal kontrol (PID P) olarak bilinir. Genellikle (Kp) sabiti  hata değeri bulmak  için gereklidir

Orantılı:

Fark = (Hedef Konumu) - (Ölçülen Pozisyon)
Orantılı = Kp * (Fark)

Bu yaklaşım ile, hata bulunur. Dolayısıyla çıkış değişikliği yapılır ama salınımlı olduğu görülür.. Bunu kontrol etmek için, türev ifadesini de kullanmak  geliyor.

Türev:

Türev bize hata değişim hızı sağlar. Bu hızlı bir şekilde bize hatanın düzeltilmesini sağlar.
Değişim Oranı = ((Fark) - (Önceki Farkı)) / zaman aralığı
Türev = Kd * (Değişim Oranı)

Mikrodenetleyicinin timer leri zaman aralığı  elde etmek için kullanılır.
Integral:

İntegral  kararlı durum performansını artırır, yani bu set değerinden ne kadar uzakta olduğunu. Önceki tüm hataları bir araya ekleyerek bu hataları orada biriken olup olmadığını izlemek mümkündür. Pozisyon eğer sağa doğru ise , hata toplamından daha büyük olacaktır, böylece hata her zaman pozitif olacak.  Bu, kontrol  aşağıdaki formül ile doğruluğunu artırmak için  kullanılabilir.

İntegral:

İntegral = Integral + Farkı
İntegral = Ki * (integral)

"PID" kontrol-Özetleme
Dönem                          İfade                                          Etki
orantılı                           Kp x hatası                               Bu şimdiki zamanı hatası dayalı hata büyük bir kısmını azaltır.
integral                           hata dt                                    Bir sistem içinde nihai hata azaltır. Zamanla küçük bir hata 
                                                                                       Kümülatif bize  daha fazla hata azaltmaya yardımcı olur.
türev                             Kd x derror / dt                        Zaman çıkış değişiklikleri hızla Kp ve Ki terimleri dengeler.
Bu nedenle, Denetim değeri robotun hareketini  ayarlamak için kullanılır

Robotun hareketi= (Oransal) + (Integral) + (Türev)
Ayarlama: 

PID uygulaması sabit değerleri robot üzerinde çalışılarak bulunur. Robot denemeleri ile   fiziksel çevrenin önemli ölçüde değişebilir argümanları  olan zemin sürtünmesi, motor endüktansı, ağırlık  merkezi, vb olaylara göre sabitler bulunur.Bu nedenle, sabitler sadece deneme yanılma ile elde edilir. Onların en uygun değeri robot için ayarlanır.

Ayarlamada dikkat edilecek  bazı temel kurallar vardır.

• Kp, Ki ve Kd eşit  0 ve önce  Kp ile  çalışmaya  başlayın. 1 değerine Kp ayarlamayı deneyin ve robotu gözlemleyin. .Hedefimiz çok yalpalasa bile çizgiyi  takip etmesidir..Robot  çizgiyi kaybederse, Kp değerini azaltın.Robot salınım yapmıyor ve yavaşlıyor ise , Kp değerini artırın.
•Eğer robot çizgiyi takip edebiliyorsa  Kd ye 1 değeri verin . Eğer salınma  az miktarda gelene  kadar bu değeri artırmayı deneyin.
• Eğer robot çizgiyi  kararlı bir şekilde takip ediyorsa , Ki 1,0-0,5 arasında bir değer atayın.Ki değeri çok yüksek ise, robot çok hızlı sağa sola salınım yapacaktır. . Çok düşük ise, herhangi bir hissedilir bir fark görmeyeceksiniz. İntegral kümülatif olduğundan, Ki değeri önemli bir etkisi vardır. Sayı az az arttırılmalıdır.
•Robot iyi doğruluk ile çizgi takip ettikten sonra, hızını artırabilir ve hala çizgi takip edip etmediğini  görebilirsin.. Hız PID kontrolörü etkiler ve hız değişiklikleri gibi tekrar ayar  gerektirir.


Örnek Kod: Burada PID denetim uygulayan bir basit bir döngü:

basla:
Hata = (hedef_ pozisyon) - (kuramsal_ pozisyon)
İntegral = İntegral + (hata * dt)
Türev = ((hata) - (onceki_ hata)) / dt
çıkış = (Kp * hata) + (Ki * İntegral ) + (Kd * türevi)
onceki_ hata = hata
bekle (dt)
Goto basla

Son olarak, PID sadece bir kere ayarlanarak  basit bir uygulama ile etkili sonucu  garanti etmez, bunu  koşullara göre sürekli düzenleme gerektirir. Ayarladığınız ortamda olağanüstü sonuçlar verir ama şartlar değişince sonuçlarda değişir. .PID uygulama, aynı zamanda, bir ayarlama  süresi  gerektirir, bu nedenle etkili sonuçlar robotun çalışma başlangıcından itibaren belirli bir süre sonra görülebilir. Ayrıca her zaman PID her üç ifade uygulamak için gerekli değildir oldukça doğru bir çıkış elde edilir. Sadece PI ile iyi sonuçlar verir. Biz türev kısmı atlayabiliriz.

7 yorum:

  1. hocam bu dt deiğiniz değeri anlayamadım ben şu an robotda pd algoritması kullanıyorum dt yi anlayamadığım için yapamadım

    YanıtlaSil
  2. abi orda değişim oranı demişsin orasını tam larak açıklayabilirmisn.bide
    önceki fark demişsin o ne oluyo tesekkürler

    YanıtlaSil
  3. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  4. dt hata kontrolünü ne kadar sürede bir yaptığının bilgisidir. Yani zaman değişimini ifade eder. Koda dikkat edersen bir bekleme süresi girilmiş dt olarak ve kod kendini bu kadar süre sonra tekrar ediyor. Örneklendirsek 2 saniyede bir hata oranını hesaplıyorsan buradaki dt 2 olur.

    YanıtlaSil
  5. İntegral = Integral + Farkı
    İntegral = Ki * (integral) hocam burdaki (Integral +Farkı) nasıl hesaplanıyo yani Integral ve Farkı degerlerini nerden bulucaz

    YanıtlaSil
  6. çok güzel bir yazı thx

    YanıtlaSil