PID sabitleri

Başlatan mr.engineer, 22 Mayıs 2023, 21:17:15

mr.engineer

Merhaba daha önce uğraşmamıştım bir PID ve pwm kullanılması gereken bir yere denk geldim. PID hesabı ile pwm sinyalinin duty cycle'ini ayarlayacagim.
Sabit bir setpoint'im var. ADC'den okuduğum bir değeri PIDye sokup bu hesabı yapacağım.
İnternette hep motor devreleri için kullanılan örnekleri görüyorum fakat hiçbirinde kp ki kd değerlerini nasıl bulduklarına girmemisler.

Matlab ile yapanlar var galiba. Fazla matematiğe girmeden anlattığım şekilde basit bir PID kodu için bu sabitler nasıl bulunuyor?

Bir de bu sabitlerin hassasiyeti ne kadar önemli ? Mesela settling pointe bir saniye geç oturması veya peak overshoot değerinin fazla olmasinin ne gibi etkileri var?

arci03

Merhaba;
Pwm ile ne kontrol edeceksiniz ve hangi editörü kullanıyorsunuz bende bu aralar AC Dimmer ile PID üzerinde çalışma yapıyorum kutu içerisindeki sıcaklığı lambayla uygulanan dimmer ile sıcaklığı sabitleme yapabildim.
Kendi çalışmamda set değerimden 1 derece düşük ise sıcaklığım max parlaklıkla lambayı çalıştırıyorum ve sıcaklık farkı 1 dereye gelince PID yi başlatıyorum. Çarpan değerleri deneme yanılma ile buldum.

Örneğin
ilk olarak ki ve kd değerlerini minumum değer verdim ve sistemin kp değerine verdiği etkiyi izledim sonuç olarak set değerine ulaşamayan ama çok yaklaşan büyük bir değer oldu.

daha sonra ki değerini kp den çok düşük ama zamana bağlı olarak giderek arttığında max parlaklık verecek olan bir değere ulaşabilecek kadar büyüyen bir sınıra sahip yaptım. ki çarpanı zamana göre tepki hızı eğer çarpanı büyük yaparsanız sistemin geri dönüşü yavaş kalırsa set değeri aşan bir hal alıyor.

kd ise diğer ikisine göre kp den düşük ama ki den büyük bir değer olarak buldum bu da benim çalışma alanımdaki denemelerle tespid ettim.

altta çalışmamdaki sonuçları gösteren resim den bakabilirsiniz.

Sarı yeşil çizgiler dimmer cıktısının grafiği ve sona doğru nasıl sabitlendiği görülüyor.
üsteki duz çizgi ise set ve okunan sıcaklık değerinin birleşerek sıcaklığın sabit kaldığı nı gösteriyor.




SB7

#2
Merhaba, PID parametreleri sistemin matematik modeli/transfer fonksiyonu ile belirlenir. MATLAB ile yapanlar sistemin transfer fonksiyonunu girerek maksimum aşma, oturma sürelerine göre uygun parametreleri seçebiliyorlar.

Çalışılacak sisteme göre deneme yanılma yoluyla da sonuca gidilebilir. Genelde böyle yapılıyor diye biliyorum.

Alıntı yapılan: mr.engineer - 22 Mayıs 2023, 21:17:15Bir de bu sabitlerin hassasiyeti ne kadar önemli ? Mesela settling pointe bir saniye geç oturması veya peak overshoot değerinin fazla olmasinin ne gibi etkileri var?

Oturma süresi ve maksimum aşma süreleri de sizin belirleyeceğiniz parametreler, örneğin bir DC motorun hızını kontrol ettiğinizi düşünelim. Motorun istediğiniz hıza ulaşma süresi sizin sistemin oturma süresi olacak. İstediğiniz devirden ne kadar uç değerlere gideceği de sizin maksimum aşmanız olacaktır.

Sayısal verilerle örneklendirerek açıklamaya çalışayım, 500d/dk ya ayarladığınız hız değerinin 2 saniyede mi 10 saniyede mi ulaşacağı sistemin oturma süresiyle ilgilidir.
Motorun hızının 500d/dk ya ayarlanırken maksimum 1000d/dk ya mı çıkacağı yoksa 600-700d/dk ya mı çıkacağı da maksimum aşmanız ile ilgilidir.

Seçeceğiniz kontrolöre (PI-PD-PID) ve Kp,Ki,Kd parametrelerine göre bu süreler sisteminizde farklılık gösterecektir.

http://elektronikafa.blogspot.com/2016/09/pid-kontrol-algoritmas-ve.html

bu sitedeki Kp,Ki ve Kd parametrelerinin etkisini gösteren tablo ve simülasyon fikir verecektir.


-SB7

SB7

Ekleme:

Parametrelerin yanlış seçilmesi de sistemin osilasyona(kararsızlığa) girmesine sebep olabilir.

Örnek bir çalışma: https://www.youtube.com/watch?v=-l8x3efCpWA
-SB7

mr.engineer

Alıntı yapılan: SB7 - 22 Mayıs 2023, 22:20:39Merhaba, PID parametreleri sistemin matematik modeli/transfer fonksiyonu ile belirlenir. MATLAB ile yapanlar sistemin transfer fonksiyonunu girerek maksimum aşma, oturma sürelerine göre uygun parametreleri seçebiliyorlar.

Çalışılacak sisteme göre deneme yanılma yoluyla da sonuca gidilebilir. Genelde böyle yapılıyor diye biliyorum.

Oturma süresi ve maksimum aşma süreleri de sizin belirleyeceğiniz parametreler, örneğin bir DC motorun hızını kontrol ettiğinizi düşünelim. Motorun istediğiniz hıza ulaşma süresi sizin sistemin oturma süresi olacak. İstediğiniz devirden ne kadar uç değerlere gideceği de sizin maksimum aşmanız olacaktır.

Sayısal verilerle örneklendirerek açıklamaya çalışayım, 500d/dk ya ayarladığınız hız değerinin 2 saniyede mi 10 saniyede mi ulaşacağı sistemin oturma süresiyle ilgilidir.
Motorun hızının 500d/dk ya ayarlanırken maksimum 1000d/dk ya mı çıkacağı yoksa 600-700d/dk ya mı çıkacağı da maksimum aşma süreniz ile ilgilidir.

Seçeceğiniz kontrolöre (PI-PD-PID) ve Kp,Ki,Kd parametrelerine göre bu süreler sisteminizde farklılık gösterecektir.

http://elektronikafa.blogspot.com/2016/09/pid-kontrol-algoritmas-ve.html

bu sitedeki Kp,Ki ve Kd parametrelerinin etkisini gösteren tablo ve simülasyon fikir verecektir.




Maksimum aşma dediğiniz peak overshoot mi oluyor?

Deneme yanılma yoluyla bu parametreler nasıl bulunur orayı anlamadım.
Matlabde dediğiniz gibi transfer fonksiyonu ile yapıyorlar ama orayı anlamadım yani Laplace domain'inde nasıl transfer fonksiyonu oluşturuluyor bilmiyorum.

Verdiğiniz linki inceleyeceğim teşekkürler

Z80

Alıntı yapılan: mr.engineer - 22 Mayıs 2023, 21:17:15Fazla matematiğe girmeden anlattığım şekilde basit bir PID kodu için bu sabitler nasıl bulunuyor?

Şöyle basit ve etkili bir yöntem var:

1. Turn all gains to 0
2. Begin turning up the proportional gain until the system begins to oscillate.
3. Reduce the proportional gain until the oscillations stop, and then drop it by about 20 % more.
4. Increase the derivative term to improve response time and system stability.
5. Next, increase the integral term until the system reaches the point of instability, and then back it off
slightly.

flowchartx

Alıntı yapılan: arci03 - 22 Mayıs 2023, 21:39:58Merhaba;
Pwm ile ne kontrol edeceksiniz ve hangi editörü kullanıyorsunuz bende bu aralar AC Dimmer ile PID üzerinde çalışma yapıyorum kutu içerisindeki sıcaklığı lambayla uygulanan dimmer ile sıcaklığı sabitleme yapabildim.
Kendi çalışmamda set değerimden 1 derece düşük ise sıcaklığım max parlaklıkla lambayı çalıştırıyorum ve sıcaklık farkı 1 dereye gelince PID yi başlatıyorum. Çarpan değerleri deneme yanılma ile buldum.

Örneğin
ilk olarak ki ve kd değerlerini minumum değer verdim ve sistemin kp değerine verdiği etkiyi izledim sonuç olarak set değerine ulaşamayan ama çok yaklaşan büyük bir değer oldu.

daha sonra ki değerini kp den çok düşük ama zamana bağlı olarak giderek arttığında max parlaklık verecek olan bir değere ulaşabilecek kadar büyüyen bir sınıra sahip yaptım. ki çarpanı zamana göre tepki hızı eğer çarpanı büyük yaparsanız sistemin geri dönüşü yavaş kalırsa set değeri aşan bir hal alıyor.

kd ise diğer ikisine göre kp den düşük ama ki den büyük bir değer olarak buldum bu da benim çalışma alanımdaki denemelerle tespid ettim.

altta çalışmamdaki sonuçları gösteren resim den bakabilirsiniz.

Sarı yeşil çizgiler dimmer cıktısının grafiği ve sona doğru nasıl sabitlendiği görülüyor.
üsteki duz çizgi ise set ve okunan sıcaklık değerinin birleşerek sıcaklığın sabit kaldığı nı gösteriyor.





Hocam siz pidyle neyi kontrol ediyosunuz yani on off yapıp sıcaklık oturmuş mu diye bakıyorsunuz.

Firzen

Alıntı yapılan: mr.engineer - 22 Mayıs 2023, 21:17:15Merhaba daha önce uğraşmamıştım bir PID ve pwm kullanılması gereken bir yere denk geldim. PID hesabı ile pwm sinyalinin duty cycle'ini ayarlayacagim.
Sabit bir setpoint'im var. ADC'den okuduğum bir değeri PIDye sokup bu hesabı yapacağım.
İnternette hep motor devreleri için kullanılan örnekleri görüyorum fakat hiçbirinde kp ki kd değerlerini nasıl bulduklarına girmemisler.

Matlab ile yapanlar var galiba. Fazla matematiğe girmeden anlattığım şekilde basit bir PID kodu için bu sabitler nasıl bulunuyor?

Bir de bu sabitlerin hassasiyeti ne kadar önemli ? Mesela settling pointe bir saniye geç oturması veya peak overshoot değerinin fazla olmasinin ne gibi etkileri var?

PID de temel olarak parametre vardır (Eğer Continious time konuşuyorsak). Bunlar sırasıyla Kc, Ti, Td. Kc direk olarak sistemin Gainidir. Ti ise sistemin steady-state error yapmasını engeller. Td ise overshoot yapmamasını. Parametleri ayarlamak istiyorsan eğer bir kaç farklı yöntem var. Bunlardan en basitleri Ziegler-Nichols yada pole-placement gibi yöntemler deneyebilirsin. Ama anladığım kadarıyla daha model çıkarımı yapmadığın için bu parametleri de bulmak zor olacaktır.
University of Idaho                                  Postdoctoral Fellow

arci03

Alıntı yapılan: flowchartx - 23 Mayıs 2023, 09:09:01Hocam siz pidyle neyi kontrol ediyosunuz yani on off yapıp sıcaklık oturmuş mu diye bakıyorsunuz.
220 v 40w akkor lambayı dimleyerek kontrol ediyorum lambanın oluşturduğu sıcaklığı ds18b20 ile ölçüyorum grafikte sıcaklık değeri set değerine geldiğinde lambaya uygulanan voltaj değişimi neredeyse duruyor.ve dim değeri de neredeyse %70 civarında kalıyor. burada ki değer kutunun ısı kaybına göre değişim gösteriyor.

mr.engineer

Alıntı yapılan: flowchartx - 23 Mayıs 2023, 09:09:01Hocam siz pidyle neyi kontrol ediyosunuz yani on off yapıp sıcaklık oturmuş mu diye bakıyorsunuz.

Evet.

@Firzen parametreleri deneyerek girerek buldum galiba ama bu deneme yöntemi biraz kötü geliyor bana:)

Model çıkarımından kastınız transfer fonksiyonu mu? Bu işi basit yolla nasıl yapabilirim? Çok fazla kontrol teorisine girmeye gerek var mı? Matlabde falan bu parametreleri basitçe ayarlıyorlar ama bir transfer fonksiyonu kullanıyorlar. Bunu nasıl çıkaracağımı anlamadım.

Firzen

Alıntı yapılan: mr.engineer - 24 Mayıs 2023, 22:09:34Evet.

@Firzen parametreleri deneyerek girerek buldum galiba ama bu deneme yöntemi biraz kötü geliyor bana:)

Model çıkarımından kastınız transfer fonksiyonu mu? Bu işi basit yolla nasıl yapabilirim? Çok fazla kontrol teorisine girmeye gerek var mı? Matlabde falan bu parametreleri basitçe ayarlıyorlar ama bir transfer fonksiyonu kullanıyorlar. Bunu nasıl çıkaracağımı anlamadım.

System identification.

Tam olarak şöyle yapmanız lazım. Önce cihazına farklı değerleri sırasıyla verip sırasıyla toplayın. Topladığınız Giriş-Çıkış değerlerini matlabta veya pythonda 2 ve3 dereceden bir sistem olarak tanımlanmasını isterseniz o size transfer fonksiyonu çıkartır. Ardından yine Matlab veya Pythonda çıkarılmış model için PID parametlerini bulabilirsiniz.
University of Idaho                                  Postdoctoral Fellow