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.
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ıtlaSilabi orda değişim oranı demişsin orasını tam larak açıklayabilirmisn.bide
YanıtlaSilönceki fark demişsin o ne oluyo tesekkürler
Bu yorum yazar tarafından silindi.
YanıtlaSildt 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İntegral = Integral + Farkı
YanıtlaSilİntegral = Ki * (integral) hocam burdaki (Integral +Farkı) nasıl hesaplanıyo yani Integral ve Farkı degerlerini nerden bulucaz
çok güzel bir yazı thx
YanıtlaSilGüzel yazı olmus
YanıtlaSil