Dokładna kontrola temperatury wody


9

Mam następującą konfigurację:

  • Arduino Duemilanove
  • Mały podgrzewacz wody podłączony do przekaźnika optycznego (PWM jest w porządku)
  • Wodoodporny czujnik temperatury DS18B20
  • Nieznana ilość wody (ale czujnik temperatury i podgrzewacz są zawsze pod wodą).

Jak mogę dokładnie kontrolować temperaturę wody na podstawie odczytów czujnika temperatury? Mówiąc dokładnie, mam na myśli dokładność czujnika temperatury (w tym przypadku ± 0,5 ° C). Wszystko powinno działać na Arduino, więc nie jest dostępna dodatkowa moc przechowywania lub przetwarzania danych. Do debugowania mogę oczywiście użyć komputera.

Próbowałem uruchomić PID, ale wydaje się to bardzo trudne

  1. Unikaj przeregulowania - przekroczenie temperatury docelowej na początku lub po dodaniu (zimnej) wody
  2. Odpowiednio ustabilizuj po dodaniu zimnej wody.

Czy dostroiłeś PID, czy po prostu korzystałeś ze standardowych wartości?
Peter Bloomfield

Próbowałem dostroić parametry PID za pomocą różnych przewodników „jak dostroić PID”, ale bez powodzenia. Próbowałem też PIDAutotune , ale nie mogłem wyciągnąć z tego nic lepszego. Nie twierdzę, że PID nie pasuje do tego.
Olli

W przypadku podgrzewania wody będziesz mieć wiele niespójności. Gdzie znajduje się grzejnik w zbiorniku w stosunku do czujnika temperatury?
Matt Clark

1
Prawdopodobnie będziesz musiał dodać coś, co miesza wodę, aby ujednolicić temperaturę przez cały czas. Następnie należy wziąć pod uwagę właściwości termiczne elementu grzejnego, czas schładzania po wyłączeniu itp. Zależy to również od ilości wody w systemie. Jeśli potrafisz kontrolować temperaturę elementu grzejnego, będzie to długa droga.
Daniel

Nie stanowi części problemu z bankomatem, ale warto zauważyć: nie należy mylić dokładności, precyzji i powtarzalności. Dokładność oznacza, jak blisko raportowana temperatura jest do rzeczywistej temperatury. Precyzja to najmniejsza różnica, jaką urządzenie może rozpoznać (0,0625 degC dla DS18b20). Powtarzalność to o ile raportowane pomiary tej samej temperatury różnią się od siebie. Dwa ostatnie są bardziej niepokojące niż pierwsze. Nawet z dokładnym czujnikiem +/- 0,5dC możesz nadal utrzymywać temperaturę w granicach (lub przynajmniej rozróżniać różnice, co jest warunkiem koniecznym) kilku
1/16

Odpowiedzi:


2

Musisz znać czas reakcji swojego systemu i powtarzalność pomiarów, aby scharakteryzować swoje dane (ustalić pewność). Sugeruję pobranie próbek i uśrednienie ich przed ponownym włączeniem grzejnika.

Imho, woda nie będzie szczęśliwie utrzymywać się w granicach 0,5 ° C. Czy możesz pozwolić na tryby zgrubny i dokładny? Użyj wyższej PWM, aby uzyskać duże różnice, a następnie niższej PWM, gdy jesteś blisko celu.

Po znalezieniu się w miejscu docelowym istnieje kilka sposobów na poprawę stabilności temperatury. Podczas gdy gotowe elementy, takie jak PID, działają dla wielu, zwykle implementuję takie funkcje ręcznie.


0

BrettAM, dE (szybkość zmian błędu) zmieni się, gdy parametr kontrolny, w tym przypadku szerokość impulsu sygnału elementu grzejnego jest modulowana, zmieniany przez PID. Moje sformułowanie mówiąc, że tempo zmian błędu temperatury było złym wyborem. Termin pochodny będzie również działał w celu uwzględnienia niewielkich zmian ciepła właściwego wody o temperaturze (4,186 kJ / (kg K) @ 20 ° C do 4,219 kJ / (kg K) @ 100 ° C).

Chodzi mi o to, że tak, termin pochodny oblicza szybkość zmian dE. Ponieważ tutaj błąd jest różnicą między temperaturą pożądaną a temperaturą rzeczywistą, pochodna oblicza następnie zmiany w szybkości podgrzewania wody.

Problem polega na tym, że często trudno jest stworzyć stabilny system z terminem pochodnym. System PID powinien opierać się głównie na składniku proporcjonalnym. Moim zdaniem, gdy zmieniasz ilość wody, tworzysz więcej nieliniowości, niż PID może zrekompensować. Z tego powodu PID musi być nieco powtarzalny, a jeśli poziom wody jest poważnie zróżnicowany, jego układ nie jest już powtarzalny.

DO OP: W mojej podobnej konstrukcji zamierzam użyć małej kombinacji chłodnicy / wentylatora i pompy 12V DC, aby przepuścić wodę jako metodę jej ponownego schłodzenia. Myślę, że to może działać lepiej. Jeśli się powiedzie, dam ci znać.


Witamy w Arduino SE! To nie odpowiada bezpośrednio na pytanie (wydaje się, że jest to więcej odpowiedzi na inny komentarz). Czy możesz użyć przycisku edycji, aby wyjaśnić, w jaki sposób te informacje odpowiadają na pytanie? Dzięki!
Anonimowy pingwin

-2

Musisz utrzymywać stałą ilość podgrzewanej wody. Szybkość wzrostu temperatury wody zmieni się, gdy zmienisz jej ilość (dodając zimną wodę, jak wspomniałeś). Kontroler proporcjonalno-całkujący (PID) działa, obserwując pochodną (szybkość zmian) zmiennej, którą próbujesz kontrolować. Twój PID nigdy nie będzie działał poprawnie, jeśli szybkość zmiany temperatury nie będzie (rozsądnie) stała.

Spójrz na ciepło właściwe wody, głównie równanie Q = c m dT. Q to dodane ciepło, które, jak zakładam, jest stałe w twoim ustawieniu. m jest masą ogrzewanej substancji (musi być stała!). c jest ciepłem właściwym wody, które wynosi 4.186 Dżuli / gram * stopni C. Jeśli Q, m i c są stałe, to dT, szybkość, przy której wzrośnie temperatura wody, będzie również stała (w rzeczywistości c zmienia się nieznacznie w zależności od temperatury, ale powiedziałbym, że można to zignorować, jeśli pracujesz od 0- 100 ° C). Spróbuj dostroić swój PID przy stałej ilości wody, aby uzyskać lepsze wyniki.

Jakiego podgrzewacza wody używasz? Obecnie robię coś podobnego, ale próbuję użyć gorącej płyty z laboratorium chemicznego i doświadczam ogromnych przekroczeń. Zastanawiałem się nad przejściem na grzejnik akwariowy, ale chciałbyś wiedzieć, czego używasz?

-Matt


PID nie zakłada, że ​​szybkość zmian jest stała. Gdyby dE (szybkość zmian błędu) była stała, nie byłoby tam terminu „D”. poza tym woda będzie się nagrzewać wolniej w wysokich temperaturach, ponieważ więcej ciepła jest tracone na parowanie niż ilość wody. PID może być idealnie dostrojony do konkretnej masy termicznej, ale nadal powinien działać dla szerokiego zakresu poziomów wody i temperatur zewnętrznych / ciśnień.
BrettAM,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.