PID Kontrol ve Geri Bildirim Kontrol

PID KONTROLÜ ve GERİ BİLDİRİM DÜZELTME SİSTEMİ

Öncelikle PID nedir ona bakalım. Sonrasında gerçekten hangi şartlarda bunun kullanılması lazım buna bakacağız.
ACABA GEREKLİMİ? Buna karar vereceğiz. Bunun yanı sıra benzer düşünceyi nasıl oluşturabiliriz.

PID kontrol dediğimizde P,I,D gibi 3 terimli bir kontrol anlıyoruz. Bu kontrolde ORANSAL, İNTEGRAL, TÜREV  birleşimi oluyor.  Tabii ki BU bir GERİ BİLDİRİM düzenleme kontrolüdür. Bu PID kontrol, sürekli kontrol gerektiren bir sistemde geri bildirim ile sistem çıkışını düzenlemeye yarar.

►P (Proportional) Oransal
►I (Integral) İntegral
►D (Derivative) Türevsel

Bunun yapılabilmesi için zamana göre değişen bir değişken gerekir. PID denetçisi sürekli HATA kontrolü yapar ve bu hatayı hesaplayarak, düzeltilecek bilgiyi üretir. Devreye bu bilgiyi iletir ve çıkışın istenen seviyeye gelmesini sağlar.

PID denetçisi bir Set noktası ile ölçülen değer arasındaki farkı gözeterek, istenen SET noktasına uygun hale gelmesini sağlar.

Şunu da aklımızda bulunduralım. İllaki PID hesaplama yapacağız diye düşünmeyin. Bazen PI olarak da hesaplama yetebilir. Türevsel değişkeni 0 olarak kabul edebiliriz.

Bu kadar teorik bilgiden sonra anlaşılır bir örnek vereyim. O zaman daha iyi anlayabilirsiniz.
Bir ortam sıcaklığı kontrol sistemine bu devreyi koyduk. Ortam sıcaklığının tam 30 derece olmasını istediniz. O zaman ortamda bir klima kontrolü ile ortam sıcaklığı kontrol ediliyor olarak düşünelim.

Ortam sıcaklığı, yazın 30 derecenin üzerine çıktı. Otomatik olarak bir klima çalışmaya başlar. Bu klima ortam sıcaklığı 31 derece ise yavaş bir şekilde başlasın. Fakat 35 derece ise daha hızlı bir şekilde ortamı soğutsun istiyoruz.
Programımızı yaparken PID sistemini de devreye aldığımızda, klima 31 derecede yavaş bir şekilde çalışır. Şayet açıldığında, 35 derecelik bir ortam sıcaklığı varsa o zaman hızlı bir şekilde çalışarak ortamı hemen soğutacaktır. Bu hesaplamayı da PID hesaplamasından alır. Ortam sıcaklığı ise 29 dereceye geldiğinde klima durur. Fakat bunu durmak olarak algılamayalım hala PID kontrol devam etmektedir. Bunu yaparken yine de hemen kendini kapatmaz yine hesaplamayla çıkan sonuca göre yavaşlayarak durur. Bu tip bir çalışma ANALOG bir kontrol gerektirir. Analog dediğimiz de
t süresince değişmesini anlatmak istiyoruz. Sadece kapatıp açmak olarak algılamayın. PID analog geri bildirim ve analog düzeltme olarak kullanılır. Yukarıdaki örnek de ise Klimanın açılıp kapanması değil PWM ile değişimin uygulanması belirtilmektedir.

Arduino ile bunu nasıl yaparız derseniz Proteus üzerinde kurduğum devreyi videoda izleyebilirsiniz.
1. Örnek video bunu göstermektedir. PID kütüphanesi ise vereceğim dokümanlar arasında yer alacaktır.  Videoda göreceğiniz devre Proteus üzerinde bir POT ile ortam sıcaklığı değiştirilir ve bu değişikliğe göre bir ISITICI devresi çalışır ya da durur. Ben burada ISITICI  yerine LED koydum fakat Terminal ekranında ISITICI pwm değerini takip edebilirsiniz.
PID devre mantığına göre bakarsanız ki videoda göreceksiniz. Çalışma şekli şu şekildedir. SET değeri 100 olacak şekilde bakarsak 99 a düştüğünde motor hızı 0.5 artarken, 95 değerine düştüğünde 2.5 olarak artmaya başlar. Hesaplamada ne kadar uzak ise o kadar hızlı çalışması ve çabuk bir şekilde o değere ulaşması hedeflenir. Fakat hedefe yaklaşıldığında ise hızlı bir şekilde hedefe yaklaşıldığında SET değerini geçebileceği için adım sayısı azaltılarak yavaşlama ivmesi yaratılır. Bu şekilde SET değerini geçmemesi sağlanır. Yoksa her defasında SET değerini geçerek ortam ısıtma ya da soğutmayı ayrıca devreye almak zorunda kalır. Bunun yerine yaklaştığında yavaşlama yaparak SET değerinin aşılmamasını sağlar. BU yapılmaz ise dengesizlik olacağından SET noktasının çevresinde bir karmaşa yaşanabilir.

Hangi şartlarda kullanılmalı. Süreklilik arz eden bir kontroldür. Mesela arabayı hızlandırmak için Gaza basıp sonra hemen frene basıyorsanız burada süreklilik yoktur. Burada kullanamayız.
Endüstri de FIRIN kontrolleri süreklilik arz eder. Tüm fırın bölgelerinde sıcaklıklar SET edilir ve o sıcaklıklarda sabit kalması istenir. Bunun için PWM ile kontrol edilebilen bir ISITICI sistemi kullanırsak ısıtıcıları PWM  ve PID ile kontrol ederek o bölgelerin ortam sıcaklıklarının sabit kalmasını sağlayabiliriz.

Acaba gereklimi sorusuna da yanıtı kendiniz vereceksiniz. PID kullanacağım diye kendinizi sınırlandırmamanız gerekir. İşinizi yaparken GERİ BİLDİRİM işlemeniz gerekiyorsa bunu farklı yollarla da yapabilirsiniz.

Kısacası, PID sistemi, ÇIKIŞ bilgisini alarak, GİRİŞ bilgisini hesapladığımız değerlerle değiştirerek, çıkışın doğruluğunu sağlamak diye düşünürsek.
İllaki integral, türev gibi hesaplamalara ihtiyacınız olmayabilir.
Kendi GERİ BİLDİRİM mekanizmamızı ortaya koyacak şekilde programlayabiliriz.

Buna ilişkin örnek ise 2. Videoda veriliyor. Bu örnekte yine PROTEUS üzerinde 2 motor var.
1. Motor hızı POT ayarıyla ayarlanıyor.
2. Motor ise bu motorun hızına göre kendini ayarlıyor.
Bunu yaparken gerçek ortamda motorun devrini bilmemiz gerekiyor. Gerçek ortamda olsa, bir optik devir sayacı ile bu devir sayısına göre diğer motorun devri ayarlanacak.
Fakat Proteus da devir öğrenme yeri olmadığı için 1. Motorun PWM sinyalini PULSE IN komutuyla ölçerek hangi devirde olduğunu öğrenerek, 2. Motoru ayarladım.
2. Motoru ayarlarken sabit bir artış olmadığı için her 10 pwm için olan süreleri bularak bu süreleri ARRAY içinde tanımladım. PULSE IN komutuyla bulunan pwm süresi, array içerisindeki PWM süreleri ile kontrol edilir. Hangi aralıktaysa o pwm bulunur ve sonrasında ara değer de bulunarak 2. Motora gönderilir.

Gördüğünüz gibi, bir şekilde GERİ bildirim alarak bir şeyler çözülebiliyor.
Fakat HASSAS durumlarda PID kullanmak de daha iyi olacaktır. Çünkü çok daha ince hesaplar kullanılıyor çok daha doğru sonuçlar oluşacaktır.

Önemli olan Projelerinizde GERİ BİLDİRİM YÖNETİMİ dir.

Zaman içerisinde bunun önemini vurgulayan yazılar yazmıştım.
En basitinden bir RÖLE DEVRESİ YAPTINIZ. Çok iyi bir şekilde RÖLE ile bir devreyi açtınız kapattınız.
Fakat RÖLE kontakları bir süre sonra YAPIŞIK kaldı. Siz istediğiniz kadar RÖLEYİ program yoluyla kapatın röle açık kalacaktır. Bu şekilde rölenin kontrol ettiği devre işlemini bitirmediği için kendi başına çalışmaya devam edecektir.
Basit RÖLE devreleri yapsanız bile sonuçlarını geri bildirim olarak almalısınız.
Bu kimi zaman bir su açma vanası olabilir. Bu açma vanasının açık kalması su basmasına sebep olabilir ya da su sarfiyatına sebep olabilir. O zaman bir nem sensörü ile bu geri bildirimi alıp işlemeniz gerekir. Ya da RÖLE içerisindeki bir kontağı rölenin doğru durumda olduğunu kontrol etmek için kullanabilirsiniz.

Bunların hepsi DİJİTAL GERİ BİLDİRİMDİR. Bunlarda devreyi aç kapat yapmanız yeter. Fakat Analog geri bildirim yapmanız gerekiyorsa, sürekli kontrol gerektirdiğinden PID kontrole ihtiyacınız daha da çok olacaktır.

PID kontrolü kullandığınızda DİJİTAL kontrol gibi kullanabilirsiniz ama bu hiç de PID mantığına uymaz.
PID mantığı, sürekli kontrol ettiği bilginin değişkenliğine göre bir analog etkileyici olarak düşünülmeli. 

Mesela bir depoyu suyla dolduracaksınız. Önce çok tazyikli bir şekilde doldurursunuz daha sonra taşma noktasına gelmek üzereyken suyu biraz daha kısmanız gerekecektir. Son kısma geldiğinizde de su tamamen kapanacaktır.
En hızlıdan en yavaşa bir anda geçemezsiniz. Mutlaka bir süreç olmalı. Arabanın frenine bastığınızda hemen durmadığı gibi düşünün. Bunun için bir ivme gereklidir.

PID bunu sağlayacaktır.  Bir çıkış ivmesi bir de iniş ivmesi vardır. PID bunu uygulamaktadır.

PID yi anlatırken bir çok yerde gördüğüm gibi derinlemesine anlatmak istemedim.
Ne olduğunu bilelim. Bununla ilgili bir Arduino Kütüphanesi olduğunu bilelim ve daha çok nerelerde kullanabiliriz ve nasıl kullanabiliriz. Diye düşünerek anlatmaya çalıştım.
PID öyle bir kontroldür ki, bir sisteme entegre edildiğinde o sisteme özgü olur. Temel prensip aynı görünse de her sisteme aynı şekilde uymaz. Bu kontrolün çalışması için belirlemeniz gereken 3 parametre vardır. Bu parametreler hazırladığınız projeye göre değişecektir. Bu parametrelerin ayarı da hiç de kolay değildir. İstediğiniz görev ve istediğiniz değişken değerleri sadece o devreye özel olacaktır. Bunu da videoda görebilirsiniz.
Nedir bu 3 parametre: Kp, Ki ve Kd parametreleri, Oransal(p), İntegral(i), Türev(d) ile belirtilir. Bunlar birer sabit sayıdır. Bunları ayarlayarak PID nin doğruluğunu sağlarız. Daha önce belirttiğim gibi her devrede aynı olamaz. Bunun yanı sıra benzer devre olsa bile, boyutlar ya da ağırlık gibi şartlar hatta yüzeysel değişkenlere göre bile değerler farklılaşabilir.
Kp, geçici tepki yükselme süresini ve yerleşme süresini iyileştirmek için kullanılır. Ki, kararlı durum yanıtını iyileştirmek için çalışıyor. Kd gelecekte oluşacak hataları tahmin ederek geçici yanıtı iyileştirmek için kullanılır. Bu değerlerin sebep olduğu değişiklikler 3. Videoda gayet açık bir şekilde görünmektedir.    Bu sabitlerin projede nasıl bir tepki verdiğini 3. Videoda ve 4. videoda  görebilirsiniz.

Aşağıdaki sayfa ile de Kp, Ki, Kd değerlerini kontrol edebilirsiniz ayrıca PID Arduino kütüphanelerine ulaşabilirsiniz.

http://grauonline.de/alexwww/ardumower/pid/pid.html

Kısaca bir örnek ile PID konusunu kapatalım.

Yukarıda bir örnek verdik. Bir sıcaklık ölçer, bir klima ile ortam sıcaklığının durumuna göre çalışsın.

Bunun programını şöyle yapalım desem PID gibi olur mu?

Mesela ortam sıcaklığı SET edilsin. Sonrasında bir röle ile klima açılarak ve kapatılarak ortam sıcaklığında sabit kalması sağlansın. Bu sıcaklık 2 derece aşağı düştüğünde devreye girsin 2 derece üste çıktığında dursun.
Bence PID benzeri olmaz. Bu normal İF cümlesiyle yapacağınız basit bir program.
PID ise nasıl çalışmalı. Ortam sıcaklığı SET edilir. Parametreler hesaplanır ve programa girilir. Klima kumandasındaki gibi hızlı yavaş fan değerleri gibi mesela 20 dereceye set edildiyse ve ortam sıcaklığı 15 derece ise bunu 20 dereceye çıkarmak için maksimum seviyede çalışmaya başlar sonrasında SET değerine yaklaşıldıkça yavaş seçeneğine geçer ve SET değerine ulaştığında durdurur. Sonrasında sıcaklık düşmeye başladığında yavaş bir şekilde çalışıp durarak sistemi dengede tutar.
Bu her ne kadar PID için kaba bir örnek olsa da PID nin çalışma şekli için size fikir verecektir.

Bundan dolayı PID analog geri bildirim sistemlerde kullanılır. Analog dediğimizde ise aşağıdaki sinyallere bakabilirsiniz.
Aşağıdaki resme bakın. Analog sinyal zamana göre süreklilik arz edecek şekilde değişir. Dijital sinyal ise Ya HIGH ya da LOW olarak devam eder. Aradaki değerler olmayacağı için PID de pek kullanılmaz. Dijital sistemlere AÇ-KAPAT sistemler örnek verilebilir. Yukarıda röleli örnek böyle bir devredir.

Aşağıdaki grafik ise PID grafiğidir. Kp, Ki,Kd değerlerinin uygun olması durumunda Çıkış istenen bölgede sabit kalacaktır. Yeşil olan Çıkışı temsil eder. Kırmızı ise geri bildirimi gösterir.

Dijital olarak kontrol etmemiz durumda, Arada ne fark var derseniz,
2 derece aşağıya düştüğünde tam kapasite, klimayı çalıştırıyorsunuz. Hem tasarruf yapamıyorsunuz. Hem de konfordan vazgeçmiş oluyorsunuz.  PID olsaydı çok daha hassas ayarlar, hatta gerektiği kadar hızlı ya da yavaş çalışma yapacağından tasarruf söz konusu olacak. Tam kapasite çalışmadığı için ortamda konforu sağlayacaktır.
Dediğim gibi bu sizin proje seçeneklerinize bağlı. Ben olsam çok hassas kontrol gerektirmiyorsa kendi GERİ BİLDİRİM uygulamamı yaparım. Şayet daha hassas olmasını istiyorsam o zaman PID  için uğraşırım.

Bir soru ile bu konuyu daha iyi pekiştireceğinizi düşünüyorum. 
Bir enkoderli motor olsa ve bu motorun encoder bilgisini kullanıp PID kontrol yapılabilir mi?
Burada PID nin süreklilik arz ettiğini ve dijital sinyallerde bunu algılayamayacağımızı hatırlatarak, bu sorunun yanıtını düşünmenizi ve nasıl yapılabileceğini yorum kısmına bırakmanızı rica edeceğim.

Bir süre sonra yorumların altına bir video bırakacağım. Cevap burada olacak.

Tüm dosyalara buradan ulaşabilirsiniz. 

NOT: Başta da dediğim gibi PID hesaplamasına girmeden pratik olarak ne olduğunu ve nasıl çalıştığını anlatmaya çalıştım. PID dediğinizde internette o kadar çok anlatım var ki, Türkçe ve yabancı dilde. Bunların hangisini okusanız derinlemesine dalıp anlatıyorlar. Ne olduğunu anlamayı bırakın nasıl kullanabileceğinizi bile anlayamıyorsunuz. Ben de burada önce konuyu algılamanızı istedim. Zaten gerekli kütüphanelerle bu konuyu denedikçe çözebileceksiniz. Kendi projelerinizde kullanabileceğiniz alternatif bir örnek de vermek istedim. PID olmazsa olmaz demeniz için Çok hassas ayar gerektiren proje olması gerek. Mesela dengede kalma projeleri ya da drone projeleri.

 

Video 1: Arduino PID kütüphanesi Proteus örneği.

Video 2: Proteus üzerinde PID benzeri bir geri bildirim kontrolü.

Video 3: PID nedir deney seti üzerinde anlatma ve Kp, Ki, Kd parametrelerinin projede değişmesi ne ifade eder.
Bazen bir bilgiyi anlatmak yerine, doğru bir şekilde anlatan birine kulak vermek de daha iyi olabilir. 
Yazdıklarımı deney üzerinde gösteren bu kişi anlamanıza benden daha fazla yardım edebilir. 

Video 4: Kp, Ki, Kd parametrelerinin projede değişmesi ne ifade eder.
Bazen bir bilgiyi anlatmak yerine, doğru bir şekilde anlatan birine kulak vermek de daha iyi olabilir. 
Yazdıklarımı deney üzerinde gösteren bu kişi anlamanıza benden daha fazla yardım edebilir. 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.