Teknik Bilgiler

PID Kontrol Algoritması Nedir ?

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

Örnek PID Arduino Kodu 

Bu kod ile sensörden alınan verilerle röle kontrolü gerçekleştirilmiş.

#include <PID_v1.h>

#define input_pin 0               // Kullanacağımız pinleri belirliyoruz.
#define role_pin 6

int Setpoint, Input, Output;      // Değişkenleri tanımlıyoruz.

double Kp=1, Ki=5, Kd=1;          // Ayar parametrelerimizi tanımlayıp belirliyoruz.


PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

int WindowSize = 1000;           // Pulse için belirlediğimiz maksimum süre.
unsigned long windowStartTime;

void setup()
{
  Serial.begin(9600);
  windowStartTime = millis();               // Değişkenlerimizi atıyoruz, analog iletişimi başlatıyoruz.
  Setpoint = 90;                            // Suyun gelmesini istediğimiz sıcaklık değeri.

                           
  myPID.SetOutputLimits(0, WindowSize);     // PWM işleminin gerçekleşme süre aralığını belirliyoruz.

  myPID.SetMode(AUTOMATIC);                 // PID kontrolörümüzü açıyoruz.
}

void loop()
{
  Input = analogRead(input_pin);            // PID kontrolörümüze göre rölenin açık duruma geçmesi
  myPID.Compute();                          // veya kapalı duruma geçmesini sağlayan kod.


  if (millis() - windowStartTime > WindowSize)
  { 
    windowStartTime += WindowSize;
  }
  if (Output < millis() - windowStartTime) digitalWrite(role_pin, HIGH);
  else digitalWrite(role_pin, LOW);

}

Bir düşünce “PID Kontrol Algoritması Nedir ?” ;

  1. Ahmet EKMEN dedi ki:

    Merhaba
    Büyür eğitim destek yazılarınızı önemsiyorum ve diğer mühendislik konularını anlatmanızı; gelecek nesillerin yetişmesi anlamında destekliyorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir