kazan içindeki suyun sıcaklık kontrolü

Başlatan mckmk03, 28 Ekim 2006, 10:36:36

mckmk03

@picusta ,teşekkürler .
Kontrol dersini henüz almadım. bu yüzden hocanın sistemin difransiyel denklemleri , transfer fonksiyonu yada PID parametrelerinin bulunmasını  benden isteyeceğini sanmıyorum.
        10 ms rölelerin açıp - kapama süresi için bencede çok kısa.Bunu deneme aşamasında daha iyi bulabiliriz. Farklı fikirleri olan arkadaşlarında yardımlarını bekliyorum.

OG

Alıntı yapılan: "Logan"@OG, açıkçası beni fazla ilgilendirmez ama 3 adet 12 KW dediğine göre galiba 380 V ile besleyeceksin.Eğer 220 ile besleyeceksen kullanacağın sigorta ve sayacın oldukça kuvvetli olması gerekli.Benzer bir projeyi bende yapmıştım.Benim kullandığım rezistanslar ise 14 KW yani toplamda 42 KW idi.Fakat ben 380 ile besliyordum.Rezistansları kontrol ederken siemens'in 3x15 KW kontaktörlerinden kullandım.Gayet sağlıklı çalıştı. Devrenin sıcaklık kontrolünü ise @Klein'in yazdığı programa benzer bir program ile hallettim.2 adet JK termokupl kullanarak ısıyı sabit tutmaya çalıştım.Kontaktörler sesli çalıştıkları için yerine 80 A 600 V triyak kullanmayı düşündüm fakat endüktif yüklerde triyak kullanımının sağlıklı olmadığına dair bir bilgi aldım.Hemem hemen bütün büyük firmalarında bu sebepten dolayı triyak kullanmaktan kaçındıklarını da görünce bende vazgeçtim.Yine de en kısa zamanda kullanmayı düşünüyorum.Kolay gelsin.
Benim için doyurucu cevap olmuş.

Isıtıcılar hakkında yalnızca güç bilgilerini verdiler, nedir, nasıl bağlantısı vardır gördükten sonra öğreneceğim.

JK termokupl hakkında bilgim yok, bunlarla herhangi bir çalışmam olmadı. Linear karakteristiğe sahip bir malzeme ile çalışmak işi kolaylaştıracak sanırım. Ayrıca sistem hassasiyeti +-2 derece bile olabilir. Tavsiyeniz olabilirmi?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Logan

@OG, sözünü ettiğin rezistanlar oldukça kuvvetli.Seçeceğin sensor tipi, uygulama alanına göre farklılık gösterebilir.Bizim kullandığımız rezistanlar yaklaşık 0,3 m3'lük bir hazneyi, 400 C'ye kadar ısıtıyordu.Bu sebepten dolayı JK termokupl kullandık.Onun yerine krom-nikel termokupl'da kullanabilirdik.Fakat maliyeti arttırdığı için tercih etmedik.Eğer ısı fazla değilse, yani 0 ile 150 derece arasında ise PT100 de işini görür.Yüksek ısıya dayalı bir proje ise JK kullanmanı tavsiye ederim.Belki inanmayacaksınız ama bir aralar dişçilerin kullandığı porselen fırınlarını tamir ediyordum.Bu fırınlar yaklaşık 1000 ile 1200 derece arası çalışıyorlar ve adamlar bizim ölçü aletlerinde kullandığımız ucu toplu iğne başı kadar olan sensörlerden kullanmışlar ve de gayet sağlıklı çalışıyor. Ölçüm işine gelince, JK termokupllar artan ısıyla doğru orantılı olarak voltaj üretirler.Bu voltajı basit bir opamp devresi ile yükselterek picin ADC girişleri aracılığıyla stabil olarak okuyabilirsin.Bu işin zor ve uğraştırıcı kısmı.Sana yapabileceğim en iyi tavsiye MAX6675 entegresidir. Sensörü direk olarak giriyorsun ve hiçbir kalibrasyon işlemi yapmadan sadece eprom okur gibi ısı bilgisini okuyorsun.Devre şeması ise çok basit. "+","-" besleme ve bir adet 100 nF kondansatörden oluşuyor.Bu entegreyi vazgeçilmez kılan ise ısıyı 10-10,25-10,5-10,75 ve 11 C olmak üzere 0,25 derece hassasiyetle okumasıdır.Kolay gelsin.
İmza.

mckmk03

@klein   , sabırsızlıkla cevabını bekliyorum.Yardımlarınızın için hepinize
teşekkür ederim.

Ziya

picusta'nın dedikleri müfredatınızda yoksa yukarıda anlatılanlar yeterli olması lazım.



Q = m Cp (Tset - T)

P = dQ/dt ==>  1Q2 = P (t2-t1) ya da t1 sıfır ise = P t

Isı kaybını hesaplayabilirsin (set ettiğin sıcaklığa ulaştıktan bir süre sonra ısı kaybı nedeniyle oluşan sıcaklığı bularak hesaplayabilirsin). Bu miktar ısıyı o kadar sürede sisteme eklemen gerekir. Ripple oluşacak mecburen.

Tank içerisindeki su devirdaim yapmıyor ise ısı kısmen iletim ile ısıtıcıdan suya aktarılacak demektir.  Bu durumda ısıtırken okuduğun sıcaklık ile ısıtıcıyı kapattıktan sonra okuduğun sıcaklık arasında fark oluşur (ortalama sıcaklıktan bahsediyorum, ısı dağılım gradiyenti değiştiği için). Bu durumda ısıtırken ve soğumaya bıraktığında farklı sıcaklık sensörlerini okutmalısın.

Tank içerisinde soba borusu gibi kısa bir boru yerleştir. Dışı yalıtkan olursa daha iyi olur. Isıtıcıyı bu borunun alt kısmına yerleştir. Borunun alt kısmı tankın 5-6 cm kadar üstünde olmalı ve su rahatlıkla boruya girebilmeli, üst kısmı da su seviyesinin altında olmalı. Isıtıcı çalıştığında ısınan su yoğunluğu azaltığı için yukarı (borunun içerisine) yönelir (chimney effect, baca etkisi). Yükselen suyun yerine tank içerisindeki daha soğuk su gelir ve o da ısınarak yükselir. Böylece doğal taşınımı sağlamış olursun. Sıvı doğal taşınım ile hareket ettiğinden ısı tank içerisinde çok daha hızlı dağılır. Sıcaklık gradiyenti de o kadar azalır. Yanlış bilmiyorsam termosifonlar da bu şekilde çalışıyor.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

mckmk03

donanım eksiklikleriyle ödev bittikten sonra uğraşıcam ama şu an için yazılım olarak fikirlerinize , tecrübelerinize çok ihtiyacım var. bu iş için daha farkılı nasıl bi çalışma şekli olabilir acaba.

mckmk03

void pidcalculate(void){ 
   pidcall=0; 
   Pset=4;// float 
   Iset=350;// float 
   Dset=1;// float 
   setval=90.0;// float 


sabit=(1000.0/Pset); 

error=(setval-temperature)/10.0; 
GAIN=sabit*error+50; // compute proportional portion and correct -50,0,50 GAIN to 0,50,100 
if(GAIN>=100)goto windup; //output saturation test 
if(GAIN<=0)goto windup;  

       if(Iset!=0){ 
               sum=sum+(error+olderror)/2;     //compute integral of error 
               GAIN=GAIN+((sabit*0.4)/Iset)*sum; //compute and add integral portion 
                    }          
         else sum=0; 
                    

windup:GAIN=GAIN+((sabit*Dset)/0.4)*(error-olderror); //compute and add differential portion 

if(GAIN>100) GAIN=100;   //control output saturation                      
if(GAIN<0) GAIN=0; 

olderror=eror; 
outval=GAIN; break; 

} 

/***************** 10 milisaniyede bir çağırılacak ****************/ 
            outcnt++; 
            if(outcnt == 100) outcnt=0; 
               if(outcnt > outval )heater=0; 
               if(outcnt < outval )heater=1; 
/********************************************************/


Alıntı Yap@Klein , kodlar için teşekkür ederim. Başkasının yazdığı kodları anlamak biraz zor ve vakit alır. Kodları satır satır inceledim. ben anladığım kadarını anlatayım , yanlış anladığım noktalar olabilir.
sistemin hatasını ve hata değişimlerini hesaplıyoruz. kazancın 0 ile 100 sınırları arasında değişimi için bir takım matematiksel hesaplamalarla GAIN 'i manupule ediyoruz. Daha sonra elde ettiğimiz GAIN değişkenini kontrol ederek örneğin GAIN = 20 ise 1 saniyenin %20 si kadar ON % 80 OFF olacak şekilde yada GAIN=70 ise saniyenin %70 i kadar ON ,%20 si kadar OFF şeklinde çıkışımı kontrol ediyorum.
Bu kontrol çıkışımın her saniye içerisinde sürekli 1-0-1-0 olarak değişmesine sebep olacağından kontaktörün ömrünün azalmasına neden olmazmı acaba.Bütçemin kısıtlılığından ucuz malzemeler kullanmaya dikkat ediyorum.


arkadaşlar bu konuda çıkmazdayım. acaba kodları iyi anlamışmıyım tekrar sizde bakabilirmisiniz acaba. teşekkür ederim

mckmk03

arkadaşlar fikirlerinize ihtiyacım var.lütfen yardımlarınızı bekliyorum

Klein

evet kodu doğru anlamışsın. kontaktör muhakkak ki nispeten çabuk yıpranır. solidstate role kullanabilir ya da faz dilimleme yapabilirsiniz.

ramadan_07

arkadaşlar burada pwm mi pıd mi diye takılan arkadaşlar oldu.oransal kontrol olbılmesı ıcın güç kontrolünün yapılabılmesı gerekır burada on/off işleminden çok akım kontrolu yapılarak bır pıd kullanım gerçekleştirilebilir diye düşünüyorum.

Klein

#25
Daha önce gelen mesajların tamamını okumamışım. şimdi farkettim. 
Suyun karıştırılmasının gerekli değil denmiş. Kesin doğruluk için suyun karıştırılması önemli.  Ancak çoğunlukla bu tür bir sisteme karıştırıcı eklemek kolay değil.  Eğer 0.01 derece gibi bir sonuç bekleniyorsa , kesinlikle şart. Ama daha düşük doğruluk gerekiyor ise karıştırmadan yapılabilir. Ancak bu durumda ısıtıcının yeri ve sensörün yeri çok önem kazanıyor.  Hatta bazı durumlarda ısıtıcının şekli dahi önem kazanıyor.  Yaptığım bir cihazda sıcaklığı tutturmakta çok zorlandım. bunun üzerine zaman zaman "hart scientific'e (fluke)" danışmanlık yapan birinden bu konuda yardım aldım. Bana kendi kalibrasyon cihazlarını gösterdi.  Yaklaşık yarım metreküp birsı içerisinden, x,y ve z düzlemlerinde yaklaşık her iki santimde bir ölçüm alınmış. O ölçüm sonuçlarını bir grafik üzerinde gösterdi. Tabi hiçbir noktadaki sıcaklık birbiri ie aynı değil. Ancak sıvı kaynamaya başladığında sıcaklık değerleri birbirine daha fazla yaklaşıyor. diğer durumlarda nispeten daha ayrık.

@picusta.
10 mS için küçük demişsiniz. doğrudur. Birçok sistem için küçük kalabilir. Ama bu biraz kontrol edilen sistemin dinamiği ile ilgili bir durum.  Eğer sisteminizin tepkileri hızlı ise , 10mS  bile yavaş kalabiliyor. Bu değer biraz deneysel bir yolla bulundu. İlk bakışta sıvı dolu bir kapta sıcaklık tepkilerinin çok hızlı olmayacağı düşünülür Ama öyle değil. iş 0.1 derece civarlarına indiğinde, eğer tankınızın izolasyonu yoksa, oldukça hızlı tepkiler verebiliyor.  100mS kullandığımda PID çıkışımdaki %1 lik değişimler bile sıcaklığımın 0.2-0,3 derece civarında değişmesine sebep oldu. Bu yüzden daha hızlandırmak zorunda kaldım. Aslında buradaki sorun biraz da rezistas gücü ile kap büyüklüğünün orantısız olmasından da kaynaklanıyor. Eğer rezistansınız kabınıza göre çok büyük ise  ısınma zamanı için 100mS çok uzun olabilir.

-----İlave----
Biraz meslek lisesinde yeterince iyi matematik eğitimi verilmemesinden , biraz da o yıllarda matematiğin önemini yeterince kavrayamamış olmaktan dolayı matematiğim oldukça zayıf. Belki kodda biraz iyileştirme yapılarak ya da kodu tamamen değiştirerek daha uzun süreler kullanıp , daha iyi sonuçlar almak mümkün olabilir.
Bu PID kodundaki en önemli sorun sistemin karakteristiğinin değişmesi durumunda , yani kazandaki su seviyesinin belirgin şekilde düşmesi sonucunda PID parametrelerinin yeniden ayarlanmasını gerektirmesi.
Hazır konusu açılmışken , bu soruna çözüm getirecek bir algoritma kousunda anlatılacakları dinlemekten mutlu olurum.

z

Ornekleme zamaninin dusuk tutulmasi kararliligi arttiran bir etken. Ancak turev almayi zorlastiracagindan dusuk ornekleme sureli sistemlerde turev icin ayrica bir dongu kurmak gerekir.

Yuksek guclu rezistanslarin enerjisini  dimmer mantigi ile kiymak harmonikler nedeniyle enerji ureticilerinin ve dagiticilarinin isine gelmez.

Bu gibi durumlarda integral kontrol teknigi uygulanabilir.

Ornegin 100 tam alternans 2 sn surer. 2 sn lik sure buyuk tanklar icin sorun degildir. Bu durumda kontrol dongusunun ms ler bazinda dusuk olmasi da anlamsizdir.

Isiticiya 1 tam cycle enerji verir ardindan 99 tam cycle beklerseniz 1/100 oraninda voltaj vermis olursunuz.

Bu islemi % 0..100 araliginda yapabilirsiniz. Ustelik sifir gecislerinde tetikleme yaptiginiz icin sebekeyi harmonige bogmazsiniz.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

picusta

PID aslen analog (devamli) sistemleri kontrol etmek için. O yüzden mikrodenetleyicilerde PID algoritmasi çalistirmak için sistemin dinamiginin en az 20 kati hizli örnkleme aliniyor ki, sistem PID kontrolörüne devamli gözüksün.

Kontrolörü baska türlü tasarlarsan (ayrik sistem olarak, Z domeninde RST veya uzay-durum) daha yavas örnekleme alarak istedigin sonuca ulasabilirsin.
Sistemin ataletini belirleyen mCp  katsayisi ve isi kayp katsayisi.

Motor akim kontrolüne analoji kurarsak, eger motorun endüktansi büyükse L/R 'de büyük olur. Isiticinin gücü ise L/R'nin ucuna uygulanan U gerilimine denk gelir.
R ise isi kayip katsayisi. çok iyi izole edilmis bir sistemde, T1'den T2'ye geçis için verilecek Enerji (isi) Q hesaplanabilir (hacmi biliyorsak) ve sadece o kadar enerji verilir, eger T2 sicakligi geçilirse sicakligi indirmek için pek bir seçenek yok .

Sistemin parametre degisimine karsi birçok yöntem kullanabilirsin:
- multimodal : her çalisma noktasi için ayri parametreler.
- PID stabilite marjini arttirmak (kazanç faz payi vs..).
- Robust kontrol uygulamak.  Hinf

z

Alıntı yapılan: picusta - 19 Ekim 2010, 13:33:42
Kontrolörü baska türlü tasarlarsan (ayrik sistem olarak, Z domeninde RST veya uzay-durum) daha yavas örnekleme alarak istedigin sonuca ulasabilirsin.

@Picusta,

Kontrolorumuzun asli gorevi cikisin referans girisimizi izleyecek sekilde davranis gostermesi. Bunun icin de hizli ve kararli olmasi istenir. Fakat gozardi edilmemesi gereken bir sey de kontrolorun, sistemin maruz kaldigi bozucu etkenelere karsi  hala kontrol referansimizi izleyebilir olmasi istenir.

Ornekleme zamanini dusuk tutarak diger kontrol tiplerinde istedigin sonuca ulasabilirsin dedin.

Bu kontrolorlerin yuksek ornekleme zamaninda bozuculara olan tepkisi nasil?




Bana e^st de diyebilirsiniz.   www.cncdesigner.com

picusta

Alıntı yapılan: bunalmis - 19 Ekim 2010, 14:32:12
Bu kontrolorlerin yuksek ornekleme zamaninda bozuculara olan tepkisi nasil?
yüksek frekanstaki bozuculara tepkisi tabii ki Shannon teoremi ile sinirli.
Anlatmak istedigim su :
PID kontrolörü tasarlarken aslinda  analog sistem üzerinde modelleme yapiyoruz, daha sonra analog bir kontrolör hesapliyoruz (P, I ve D parametreleri). En sonunda kontrolörü analogdan ayrik sisteme geçiriyoruz iste o zaman bazi yaklasiklamalar yapiyoruz, ve mecburen örnekleme süresini artiriyoruz (analog kontrolöre benzemek için).

Halbuki sistemi bastan ayrik kabul edersek (Z dönüsümü) ve dogrudan ayrik bir kontrolör tasarlarsak (N dereceden polinomyal fraksyon) daha düsük örnekleme ihtiyaci dogacaktir.