Su sıcaklığının doğru kontrol edilmesi


9

Aşağıdaki kurulum var:

  • Arduino Duemilanove
  • Optik röleye bağlı küçük su ısıtıcısı (PWM tamam)
  • Su geçirmez DS18B20 sıcaklık sensörü
  • Bilinmeyen miktarda su (ancak sıcaklık sensörü ve ısıtıcı daima su altındadır).

Sıcaklık sensörü değerlerine göre su sıcaklığını nasıl doğru bir şekilde kontrol edebilirim? Doğru olarak, sıcaklık sensörünün doğruluğunu kastediyorum (bu durumda ± 0.5 ° C). Her şey Arduino'da çalışmalıdır, bu nedenle ek veri depolama veya işleme gücü yoktur. Hata ayıklama için açıkçası bilgisayar kullanabilirim.

PID çalıştırmayı denedim, ama gerçekten zor görünüyor

  1. Aşırı atıştan kaçının - başlangıçta veya (soğuk) su eklendiğinde hedef sıcaklığın üzerine çıkmak
  2. Soğuk su ekledikten sonra uygun şekilde stabilize edin.

PID'nizi ayarladınız mı yoksa sadece standart değerler mi kullanıyordunuz?
Peter Bloomfield

PID parametrelerini şanssız çeşitli 'PID nasıl ayarlanır' kılavuzları ile ayarlamaya çalıştım. Ben de PIDAutotune denedim , ama ondan daha iyi bir şey alamadım. PID'nin buna uymayacağını söylemiyorum.
Olli

Su ısıtması ile çok fazla tutarsızlığa sahip olacaksınız. Tankınızdaki ısıtıcı sıcaklık probuna göre nerede?
Matt Clark

1
Muhtemelen sıcaklığı karıştırmak için suyu karıştıran bir şey eklemeniz gerekir. Ardından, ısıtma elemanınızın termal özelliklerini, devre dışı bırakıldıktan sonra ne kadar süre soğumasını vb. Dikkate almanız gerekir. Bu sistemde ne kadar suyun olduğuna bağlıdır. Isıtma elemanının sıcaklığını kontrol edebiliyorsanız, bu uzun bir yol olacaktır.
Daniel

ATM'nizin bir parçası değil, ancak kayda değer: Doğruluk, hassasiyet ve tekrarlanabilirliği karıştırmayın. Doğruluk, rapor edilen sıcaklığın gerçek sıcaklığa ne kadar yakın olduğu anlamına gelir. Hassasiyet, cihazın ayırt edebileceği en küçük farktır (DS18b20 için .0625 ° C). Tekrarlanabilirlik, aynı sıcaklıktaki rapor edilen ölçümlerin birbirinden ne kadar farklı olduğudur. Son ikisi birincisinden daha endişe vericidir. +/- 0.5degC hassas sensörle bile, sıcaklığı birkaç 1/16 derece derece içinde tutabilir (veya en azından gerekli bir fark olan farklılıkları ayırt edebilirsiniz) ....
JRobert

Yanıtlar:


2

Verilerinizi karakterize etmek (güven oluşturmak) için sisteminizin yanıt süresini ve ölçümlerinizin tekrarlanabilirliğini bilmeniz gerekir. Isıtıcıyı tekrar açmadan önce numune almanızı ve ortalamayı öneririm.

Imho, su mutlulukla 0.5 ° C içinde kalmayacak. Kaba ve ince modlara izin verebilir misiniz? Büyük farklılıklar için daha yüksek bir PWM kullanın ve sonra hedefe yakınken daha düşük PWM kullanın.

Hedefinize girdikten sonra, sıcaklık kararlılığını iyileştirmeye çalışabileceğiniz birkaç yol vardır. PID gibi önceden oluşturulmuş şeyler birçok kişi için çalışırken, normalde böyle bir işlevi manuel olarak uyguluyorum.


0

BrettAM, dE (hatadaki değişim oranı) kontrol parametresi olarak değişecektir, bu durumda ısıtıcı eleman sinyalinin darbe genişliği modüle edilir, PID tarafından değiştirilir. Sıcaklık hatası değişim oranı kötü bir seçim olduğunu söyleyerek benim ifade. Türev terimi ayrıca sıcaklığı (4.186 kJ / (kg K) @ 20 ° C ila 4.219 kJ / (kg K) @ 100 ° C) olan belirli su ısısındaki küçük varyasyonlarla ilgilenmeye çalışacaktır .

Demek istediğim, evet, türev terimi dE değişim oranını hesaplar. Buradaki hata, istenen sıcaklık ile gerçek sıcaklık arasındaki fark olduğundan, türev daha sonra suyun ısıtılma hızındaki değişiklikleri hesaplar.

Sorun, türev bir terimle istikrarlı bir sistem oluşturmak genellikle zordur. Bir PID sistemi öncelikle orantılı terimi temel almalıdır. Su miktarını değiştirdiğinizde, bence, PID'nin telafi edebileceğinden daha fazla doğrusallık oluşturuyorsunuz. Bu nedenle, PID'lerin bir şekilde tekrarlanabilir olması gerekir ve su seviyesi ciddi şekilde değiştirilirse, sistemi artık tekrarlanabilir değildir.

OP'ye: Benzer tasarımımda, suyu geri soğutmanın bir yöntemi olarak suyu çalıştırmak için küçük bir radyatör / fan kombinasyonu ve bir 12V DC pompa kullanmaya çalışacağım. Bunun daha iyi çalışabileceğini hissediyorum. Başarılı olursa, size bildireceğim.


Arduino SE'ye Hoşgeldiniz! Bu doğrudan soruyu cevaplamıyor (başka bir yoruma daha fazla cevap veriyor gibi görünüyor). Bu bilgilerin soruyu nasıl yanıtladığını netleştirmek için lütfen düzenle düğmesini kullanabilir misiniz? Teşekkürler!
Anonim Penguen

-2

Isıtılan su miktarını sabit tutmanız gerekir. Su miktarını değiştirdiğinizde (bahsettiğiniz gibi soğuk su ekleyerek) su sıcaklığının artma hızı değişecektir. Orantılı-integral-türev kontrolörü (PID) kontrol etmeye çalıştığınız değişkenin türevini (değişim oranı) gözlemleyerek işe yarar. Sıcaklık değişim hızı (makul) sabit değilse PID'niz asla düzgün çalışmaz.

Suyun spesifik ısısına, özellikle Q = c m dT denklemine bakın . Q, kurulumunuzda sabit olduğunu düşündüğüm ısı eklendi. m ısıtılan maddenin kütlesidir (sabit tutulmalıdır!). c, 4.186 Joule / gram * dereceC olan suyun özgül ısısıdır. Q, m ve c dT'den sonra sabitse, su sıcaklığınızın yükselme hızı da sabit olacaktır (gerçekte c sıcaklıkla biraz değişir ancak 0-4 arasında çalışıyorsanız bu göz ardı edilebilir. 100C). PID'nizi sabit bir su miktarı ile ayarlamayı deneyin, daha iyi sonuçlar alabilirsiniz.

Hangi su ısıtıcısını kullanıyorsunuz? Şu anda benzer bir şey yapıyorum ama kimya laboratuvarında sıcak bir plat kullanmaya ve büyük aşırılıklar yaşıyorum. Bir akvaryum ısıtıcısına geçmeyi düşündüm ama ne kullandığınızı bilmek ister misiniz?

-Mat


PID, değişim oranının sabit olduğunu varsaymaz. DE (hatadaki değişim oranı) sabit olsaydı, "D" terimi orada olmazdı. ayrıca su yüksek sıcaklıklarda daha yavaş ısınacaktır, çünkü buhar nomatterine ne kadar su olduğu için daha fazla ısı kaybedilir. PID belirli bir termal kütle için ideal bir şekilde ayarlanabilir, ancak yine de çok çeşitli su seviyeleri ve dış sıcaklık / basınçlar için çalışmalıdır.
BrettAM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.