Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] Leonardo - Termostat i kontrola poziomu wody

28 Gru 2014 00:56 1194 1
  • Poziom 11  
    Wymyśliłem sobie na początek mały układ kontrolujący zbiornik wody od kominka znajdujący się na nieogrzewanym poddaszu. Ma on dwie funkcje:
    1. kontrola temperatury na rurze doprowadzającej i w razie jej niebezpiecznego obniżenia, załączanie przekaźnika włączającego kabel grzejny zabezpieczający przez zamarznięciem
    2. kontrola poziomu wody w zbiorniku i wizualizacja stanów niski/właściwy/wysoki przy użyciu diod co ułatwi dolanie wody bez konieczności zaglądania do zbiornika

    Cały układ testuję obecnie na płytce stykowej z podłączonymi diodami i termometrem DS18B20, a oto mój szkic:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wszystko działa w zasadzie prawidłowo, ale mam kilka wątpliwości jak już będę chciał to zastosować w docelowej konfiguracji.
    1. W pętli jest kilka funkcji, które nie muszą być sprawdzane regularnie. Np. kontrola temperatury może powinna być wykonywana częściej niż poziomu wody. Jeśli wszystko jest w jednej pętli to jak mam zrobić, żeby część kodu wykonywała się częściej niż inna część? Czy miałbym wprowadzić dodatkowe pętle, które na podstawie liczników przeskakiwałyby część kodu?
    2. Czy generalnie składnia warunkowa if dla powyższych czynności jest poprawna z punktu widzenia porządnego tworzenia kodu? To, że działa to wiem, ale może powinno się to inaczej zapisać dla porządku.
    3. Mam wątpliwość co do załączania i wyłączania przekaźnika grzałki. Teraz w przypadku osiągnięcia temperatur granicznych dioda kilkukrotnie wskazuje wahanie się temperatury, która raz jest lekko poniżej, a raz lekko powyżej zadanej wartości co powodowałoby włączanie i wyłączanie przekaźnika w dość krótkich odstępach czasu. Przeglądałem projekty różnych termostatów w poszukiwaniu inspiracji ale nigdzie nie znalazłem jakiegoś rozwiązania na to skakanie temperatury. Czyli jak sądzę potrzebne jest wprowadzenie histerezy. W międzyczasie wymyśliłem coś takiego wstawionego w pętlę.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zatem teraz mój cały nowy szkic wygląda tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    4. Jako czujniki poziomu planuję najprostsze i najtańsze rozwiązanie w postaci 3 prętów z kwasówki (korozja) masa, poziom niski, poziom wysoki. W testach się to sprawdza ale nie wiem jak będzie w dłuższym okresie użytkowania. Obawiam się o elektrolizę. Czy można jakoś ustawić, żeby zasilanie elektrod podłączonych do wejść Arduino było tylko okresowe (na czas odczytu) co minimalizowałoby efekt elektrolizy? Czy w ogóle jest to problem, zakładam, że elektrody z kwasówki przeżyją korozję, ale co w wydzielaniem się np. wodoru?

    Dzięki za wszelkie sugestie.
  • Poziom 11  
    Układ przeniosłem na ATmegę, pracuje kolejną zimę i jest OK. Jako czujnik poziomów zastosowałem podwójny czujnik pływakowy ze stali nierdzewnej. Teraz o ile jest prąd to zima mi nie straszna ;)