Bilgisayar
OKUDUĞUNUZ KONU
PID Kontrol Algoritması Nedir ?
7

PID Kontrol Algoritması Nedir ?

Yazar : Murat Duran18 Temmuz 2015

Robotik ve otomasyon sistemleri üzerinde çalışanlar mutlaka PID kontrol ile ilgili uygulamalar görmüşlerdir.Birçok kişi bu uygulamaları göresede çözmekte ve kavramakta zorluk çekerler.Bizde bu yazımızda PID hakkında bahsedeceğiz.Çalışma prensibi vs.

PID aslında bir kontrol geri bildirim mekanizmasıdır.Bir PID denetleyici ölçülü bir süreç içinde değişen ve istenilen ayar noktası ile arasındaki farkı olarak bir “hata” değerini hesaplar.Kontrol giriş ayarı yapılarak bu hata en aza indirilmesi sağlanır.

PID (Proportional,Integral,Derivative) diye tanımlanır.Türkçesi (Oransal,İntegral,Türevsel) denetleyicidir.

PID kontol’de öncelikle hata tanımlaması yapılmalıdır.Hata ise referans değere olan uzaklık olarak tanımlanabilir.

Ref = İstenilen değer

Gelen = Şu an ki konum

Hata = Ref - Gelen

Oransal (Proportional) Terim

Oransal terim sistemden gelen hatayı bir kat sayı ile çarparak hatayı küçültmeyi hedefler.Bozucu etkileride mevcuttur.Örneğin hata istenilen değerlere yaklaştığında çıkışta oslilosyon görülme ihtimali yüksektir.Buda yüksek seçmememiz gerektiği anlaşılır.

P = Kp * Hata 

İntegral (Integral) Terimi

İntegral hatanın alanını bulmak anlamına gelmektedir. Her bir dt çevriminde hata ki katsayısıyla çarpılarak toplanır(Şekil4). İntegralin çok yükselmesini önlemek için sınırlandırmak gereklidir. Sürekli toplandığı için integral çok artarsa tekrar azalmasını beklemek zaman alır. Bu yüzden integrali sınırlamak sistemin çabuk toparlamasını sağlayacaktır.

dt = pid fonksiyonuna her girdiğindeki geçen zaman.

I = I + (Ki * Hata * dt)

Türev (Derivative) Terimi

Türev sistemdeki iki örnek arasındaki zamanı hesaplar.Eğer hatada bir değişim olmadıysa türev sıfır olur.

EHata = Bir önceki hatanın değeri (eski hata)

HD = Hata – EHata

D = (Kd * HD)/dt 

PID Algoritması

Kp , Ki ve Kd katsayılarından oluşur.Bu katsayılar deneme yanılma yöntemiyle bulunur.Yapacağınız sistemde optimum katsayıları bulmak için değerde değişiliklik yapıp sistemi gözlemlemeniz gerekmektedir.Genelde robotlarda bu değerler bir potansiyometre kullanılarak değiştirilir.

Hata = Ref - Gelen
HD = Hata - EHata
P = Kp * Hata
I = I + (Ki * Hata * dt)
D = (Kd * HD)/dt
PID = P + I + D
EHata = Hata
SİZCE NASIL OLMUŞ?
Beğendim
34%
İlginç
4%
Eh İşte
7%
Anlamadım
7%
Kötü
3%
Berbat
46%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
7 YORUMLAR
  • 1 Nisan 2016 at 12:05

    bu anlattığınız bilgileri nasıl kulanabiliriz, arduino için örnek uygulama var mı ?

    • Onur Gülsem
      16 Ocak 2018 at 22:27

      Merhabalar,

      Robot poziston kontrolü yaptığımız düşünelim, örneğin dümdüz ilerlemesini istiyoruz, saygıdeğer yazarın da belirttiği gibi, error okunan değer ile set point arasındaki fark. Bizim set pointimiz 2500 ise erroru aşağıdaki function verir:
      int error = position – 2500;

      Sonrasında bu erroru controllera sokup uygun katsayılarla motor hızını ayarlarız ve o t anındaki erroru bir önceki errora çekip yeni erroru okumayı bekleriz:
      int motorSpeed = Kp*error + Kd * (error-lastError);
      lastError = error;

      Error ve controller tasarımına göre motorspeedlerini belirledikten sonra örneğin robot görünürde çok oscillation yapmasın diye eylem faktörünü motorlara bölüştürüp birinin base hızını artırıp diğerini azaltarak robotun eksenine oturmasını sağlarız:
      int rightMotorSpeed = rightBaseSpeed + motorSpeed/2;
      int leftMotorSpeed = leftBaseSpeed – motorSpeed/2;

  • F yuce
    14 Ağustos 2017 at 16:22

    Katsayı hesaplarını deneme-yanılma değilde , bilimsel olarak nasıl yapabiliriz

    • Onur Gülsem
      16 Ocak 2018 at 22:22

      Sistemi modelleyip, genel bir transfer function çıkartıp sonrasında controllerı tasarlayabilirsiniz; sistem modelleme için Simulink vb. kullanılabilir, genel olarak robotikten bahsedildiği için söylüyorum, motorların vs. ayrı tf leri gerekir sistem tfsi için, onları da system identification vb. yardımıyla bulabilirsiniz.

  • EKBER
    19 Ekim 2017 at 21:28

    SELAMLAR
    BEN EKBER IRANDAN,SIZIN BU EGTIMIZDEN COK FAYDALANDIM COK COK TESEKKUR EDIYORIM.
    SAYGILAR

  • Kontrolcü makine mühendisi
    29 Ekim 2017 at 01:29

    Kontrol ve sistem dinamiği ile. Sistemin ne kadar sürede tolerans aralığına gireceği (durulma zamanı) daimi durumda ne kadar hata içerecegi (daimi hata) ve titreşim karakteristiği gibi kriterler belirlendikten sonra, sistemin transfer fonksiyonu çıkarılır ve pol değerlerine bakılır. Pollerin olması gereken değerleri yukarda söylediğim kriterlere göre hesaplanır. Daha sonra mevcut polleri o değerlere getirmek için gereken kp, kd ve ki değerleri bulunur. Bu süreç kontrol mühendisliğinin en önemli kısımlarından biridir.

  • mehmet dönmez
    22 Aralık 2017 at 14:57

    Hocam sayenizde öğrendik.
    Çok teşekkürler

YORUM YAP