Kulucka ve PID hakkında

Başlatan aRci, 28 Ağustos 2025, 21:38:56

aRci

Merhaba 2  sene oncesinde kulucka makinaları hakkında ısı kontrolü için sensör ve PID kontrol konuları açmış ve bazı çalışmalar yapmıştım. Sonunda imkanlar sayesinde son 8 aydır bir makinam var ve daha ciddi testler yaparak birkaç seferde yumurta yükleyerek çıkımlar aldım. yaptığım deneme devresinden sonra pcb baskı ile projeyi şekillendirdim. tam otomatik makina olacak şekilde ısı nem ve viyol kontrolünü tamamladım.

Projemin işleyişinde sensörden alınan sıcaklık değerine göre set sıcaklığa olan farkı PID ile hesaplayıp bir çıkış değeri alınıyor. ve bu değer triak ile çalıştırılan resistansa uygulanacak dimmer değeri oluyor.
Dimmer için sıfır geçiş devresi ile kesme yakalayıp kesmede ise timer1 e değer yükleyerek saymayı başlatıyorum ardından kesmeyi aktif edip normla programa dönüp kesme oluşunca ise triak tetiğine 50 mikro saniye (puaseus 50) boyunca tetik verip kesiliyor. bu süreç her saniye sıfır geçiş yakalndığınca tekrarlanır.
nem ve viyol çıkışlarını omron SSR ile kontrol ediliyor.

PID için bir kütüphane kullandım forumlardan birinde denk gelmişti onuda aşşağda paylaşacağım belki birinin işine yarar.
Kütüphane eklendikten sonra alttaki değişkenlere değerleri yüklemeli ve ardından sistemde ısı ölçümünü yaptığım her seferde "pid_Error"  ru hesplayıp "Gosub PID" PID çalıştırılmalıdır. son olarakda "pid_Out" değerini programda sistemde kullanmalısınız.

    
    pid_Out_Clamp    = 16100   'PID çıktısı olarak alınancak olan max değer 
    pid_I_Clamp = 12000        'Integral olarak toplamda alınabilecek max değer Sınırlama yapılmak zorunda
    pid_Kp      = 15000'16500 'Oransal çarpan
    pid_Ki      = 120'120    'İntegral Çarpan
    pid_Kd      = 1'35000   'Türev çarpanı
    pid_Ti      = 120'204      'İntegral için alınacak örnek sayısı bir nevi zaman gecikmesi 
    Setpoint    = 3775


   pid_Error = Setpoint - Drce      'Calculate the error
   Gosub PID    'PID hesaplamaya gidilecek bu her sensor okumadan sonra gidilmeli
   DimHedef = pid_Out_Clamp-pid_Out   'pid_out hesaplama ile elde edilen dimmer değeri bunun timer1 için ters lenmesi gerekiyor o sebeple 65535 den çıkartıyoruz.

Kuluçkanın çalışmasını takip edebilmek için şimdi ilaveden bir lora modülü ekledim ve excel datastream ile verileri kaydedip grafiğe dönüştürdüm. bu aslında saatlerce ısı nem takibini kolaylıkla görselleştirmesi ve PID kazanç değerlerinin bulunmasında kolaylık oldu.

datastremda usb den gelen veriler aralarında virgül ve veri sonunda ise "13,10" ekleyi unutmayın
örnek:
hserout [dec SistemZaman,",",dec Drce,",",dec Nem,",",dec pid_I,",",dec pid_out,13,10]


Bunun hakkında birkaç resim paylaşacağım. resimdeki grafikler 500 seferde alınan 10sn de bir gelen veri gruplarının oluşturduğu grafiklerdir yaklaşık 80dakikalık kayıtların görseli diyebiliriz.


bu resimde sistem resetlendikten sonra ısının limiti aşıp düşmesi şeklinde hareketin örneği sonunda hedef sıcaklığa gelip düşük salınımla ısıyı tutmaya çalışıyor.Kp çarpanı daha iyi halde ve sistemin salınımı daha düşük.



Kp değeri yüzünden rezistans fazla ısınıyor ve sistemde ısı resistansda biriktiği için hedef noktaya ulaşırken ısı yükselmesi yeterince azalmadığı için set değerin üstüne çıkıyor. ve bu sürekli salınım yapmakta.



buda yakalaya bildiğim en net grafik diyebilirim. tabi bunu sistemin tepki süresini uzatınca elde etmemden dolayı gece hızla soğuyan havada orneğin çiğ oluştuğunda ısnı da fazla dalgalanmaya sebep veriyordu.

Yapacak olan kişiler için dikkat edilmesi gereken nokta ıs anında oluşup sisteme dağılmadığı için kontrol de PID paramatreleri kabinin özelliklerine göre değişmektedir.O sebeple Ki (Integral) çarpanı ve Zamanlama ayarı na dikkat edilmeli.

Ek birkaç resim daha













aRci

Merhaba PID kütüphane dosyası
Bu eki görüntüleyemezsiniz.

Powered by EzPortal
▲