Servo kontrollü vanalar kullanarak sıcak ve soğuk musluk suyunu karıştırmak için bir Arduino Leonardo üzerine temel bir PID algoritması uygulamaya çalışıyorum. Amaç, sıcaklığı mümkün olduğunca bir ayar noktasına yakın tutmaktır. Özellikle önemli olan, kullanıcıyı yanıklardan korumak için çıkış sıcaklığının ayar noktasını aşmasını önlemektir. İkincil olarak önemli olan, sıcaklığı istenen değere olabildiğince çabuk çıkarmaktır.
Sıcaklıktaki küçük değişiklikler için , PID algoritmasının standart bir uygulaması iyi çalışıyor gibi görünüyor. Ancak sıcak suyun vanaya ulaşmasını beklerken oluşabilecek uzun gecikmeleri nasıl hesaplayacağımı bilmiyorum, çünkü bu gecikmeler vana konumlarını değiştirdikten sonra standart gecikmelerden çok daha uzundur.
Açıkçası, sıcak su hattının uzunluğuna ve sıcak suyun son kullanımından bu yana geçen süreye bağlı olarak, sıcak suyun vanaya ulaşması onlarca saniye sürebilir, bu nedenle su sıcaklığı düşük bir sıcaklıkta oldukça sabit kalır ve sıcak su vanası yakında% 100 açılıyor. İntegral bileşeni büyük bir hata değeri biriktirmeye başlar.
Sıcak su nihayetinde vanaya ulaştığında, algılanan sıcaklık çok hızlı bir şekilde maksimum sıcak su sıcaklığına yükselir. Büyük integral hatası nedeniyle, sıcaklık ayar noktasını aştıktan sonra sıcak su vanası,% 100'de tutulur, çünkü integral değerinin beklenmesi normal seviyelere düşürülür. Böylece sonuç birkaç (on) saniye boyunca maksimum sıcaklık suyudur.
Bu olası uzun gecikmeyi nasıl açıklayacağımı bilmiyorum . Böyle bir durumda, maksimum yanıt süresini sınırlamak için integral hata değerine bağlı bir üst (ve alt) sınır ayarlamak akıllıca olur mu? Bu, integral bileşenin amacını yeniyor gibi görünüyor ve aynı zamanda ayar noktasına ulaştıktan sonra da biraz gecikme sürüyor.
Yoksa uzun bir gecikmeden sonra hızlı giriş değişikliklerini ele almanın daha iyi bir yolu var mı?
Herhangi bir tavsiye için teşekkürler!