logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Termostat na arduino - jak zabezpieczyć przed przegrzaniem?

Archon816 15 Lis 2021 02:25 771 12
REKLAMA
  • #1 19709619
    Archon816
    Poziom 10  
    Posty: 25
    Ocena: 9
    Dzień dobry.
    Nie jestem profesjonalistą dlatego moja wiedza jest bardzo wybiórcza. Zrobiłem na arduino prosty termostat sterujący grzałką. Na pierwszy rzut oka wszystko działa ok, ale raz zdarzyło mi się, że zawiesił się na włączonym przekaźniku i dopiero wyłączenie i włączenie zasilania arduino przywróciło normalną pracę. Niezależnie od tego czy był to jakiś błąd sprzętowy czy softu, chciałbym zrobić zabezpieczenie które zagwarantuje wyłączenie grzałek po przekroczeniu 35 stopni. Zacząłem zgłębiać temat i znalazłem układ: „Wyłącznik termiczny NO 5A/250V 35*C F27 X405”. Pytanie czy zastosowanie takiego wyłącznika na zasilaczu grzałek jest dobrym pomysłem, czy można to zrobić lepiej?
  • REKLAMA
  • Pomocny post
    #2 19709665
    MocnyAmper
    Poziom 25  
    Posty: 1385
    Pomógł: 87
    Ocena: 282
    Pokaż może kod, wtedy się zobaczy. Nie powinien się wieszać.
    Jeśli natomiast nie potrzebujesz regulacji temperatury i możesz zastosować przekaźnik termiczny to po co Ci Arduino? Nie wiem jakiej mocy jest ta Twoja grzałka, ale jeśli poniżej 1kW to taki przekaźnik na 5A powinien dać radę.

    PS - ten wyłącznik termiczny jest typu "NO" - normalnie otwarty. Czyli zacznie przewodzić dopiero kiedy temperatura przekroczy 35 stopni (np aby załączyć układ chłodzenia). Szukaj normalnie zamkniętego "NC".
  • REKLAMA
  • #3 19709845
    Archon816
    Poziom 10  
    Posty: 25
    Ocena: 9
    Witam :)
    Temperatura musi być precyzyjnie utrzymana, dlatego potrzebny jest taki termostat :)
    Ten przekaźnik termiczny miałby być tylko zabezpieczeniem po przekroczeniu 35* (standardowo ma być utrzymana 30-32*)
    Dzięki za info na temat NO i NC!

    Kod: Text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #4 19709857
    jarek_lnx
    Poziom 43  
    Posty: 22587
    Pomógł: 4171
    Ocena: 6043
    Dobrze napisany kod nie powinien się wieszać, niemniej jednak zabezpieczenie warto dodać, bo nie można wykluczyć zawieszenia od zakłóceń EMI.
    W każdym fabrycznym urządzeniu z grzałkami jest jakiś zapasowy wyłącznik termiczny czy to jednorazowy (bezpiecznik termiczny) czy wielokrotnego użytku - bimetaliczny.
  • REKLAMA
  • #5 19710001
    MocnyAmper
    Poziom 25  
    Posty: 1385
    Pomógł: 87
    Ocena: 282
    Spróbuj zmienić tą linijkę:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    na:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Albo nawet w ogóle możesz się pozbyć tego warunku:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dwa wcześniejsze sprawdzają czy temperatura jest powyżej lub poniżej ustalonych progów, a skoro nie jest ani jedno ani drugie to siłą rzeczy musi być pomiędzy.
    W Twoim kodzie procesor nie wie co zrobić kiedy temperatura wynosi równo temperaturę któregoś z progów, choć to chyba nie tłumaczy zawieszania się...
  • #6 19710022
    Archon816
    Poziom 10  
    Posty: 25
    Ocena: 9
    Pierwotnie nie było tego warunku:
    Kod: Text
    Zaloguj się, aby zobaczyć kod

    ale wtedy podczas uruchomienia układu jeśli temperatura była w przedziale to układ wogóle nie uruchamiał pomiaru temperatury.
    Dzięki za info, zmienię tak jak najpisałeś dla pewności.
  • #7 19710047
    Konto nie istnieje
    Poziom 1  
  • #8 19710546
    Archon816
    Poziom 10  
    Posty: 25
    Ocena: 9
    Na marginesie: czy włączanie i wyłączanie zasilacza impulsowego co 2 sekundy setki razy wpłynie znacząco na jego żywotność?
  • #10 19710561
    Archon816
    Poziom 10  
    Posty: 25
    Ocena: 9
    Żeby się tego pozbyć musiałbym pomyśleć jak napisać histerezę. Tzn. Przy temperaturze malejącej włączać grzałkę przy 30*, a przy rosnącej wyłączać przy 32*. Pewnie to błahostka ale nie mam głowy w tym momencie

    Edit
    W pierwotnej wersji kodu, bez warunku dla temperatury pomiędzy byłoby ok, gdyby nie to że w przypadku włączenia układu przy temperaturze z przedziału, algorytm nie wiedział co zrobić

    Edit2
    Trzeba by dodać regułę która zadziała tylko przy uruchomieniu układu, np. jeśli temp jest w przedziale 30-32 to włącz grzałkę
  • Pomocny post
    #11 19710591
    MocnyAmper
    Poziom 25  
    Posty: 1385
    Pomógł: 87
    Ocena: 282
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #12 19710637
    Redcap16
    Poziom 15  
    Posty: 192
    Pomógł: 17
    Ocena: 49
    Ja bym się ze swojej strony przyczepił do dwóch rzeczy. Po pierwsze, kiedy program wykrywa uszkodzenie czujnika temperatury, nie zmienia stanu grzałki. Jeżeli więc wystąpią problemy z czujnikiem podczas kiedy grzałka jest włączona, pozostanie włączona aż czujnik zacznie działać. Po drugie nie podoba mi się to, że grzałka jest włączana stanem niskim. Oznacza to, że w przypadku np. zaniku zasilania mikrokontrolera grzałka się "sama" włączy.
  • Pomocny post
    #13 19710647
    jarek_lnx
    Poziom 43  
    Posty: 22587
    Pomógł: 4171
    Ocena: 6043
    Archon816 napisał:
    Na marginesie: czy włączanie i wyłączanie zasilacza impulsowego co 2 sekundy setki razy wpłynie znacząco na jego żywotność?
    Zasilacze które mają ograniczenie prądu ładowania kondensatorów termistorem mogą ulec uszkodzeniu.

Podsumowanie tematu

✨ Użytkownik stworzył prosty termostat na Arduino do sterowania grzałką, jednak napotkał problem z zawieszaniem się systemu. W celu zabezpieczenia przed przegrzaniem, rozważa zastosowanie wyłącznika termicznego NO 5A/250V 35°C. Uczestnicy dyskusji sugerują, aby użyć wyłącznika NC, który zamyka obwód przy przekroczeniu temperatury, oraz wprowadzenie watchdog'a do monitorowania zawieszeń. Podano również przykłady kodu do precyzyjnego utrzymania temperatury oraz omówiono kwestie histerezy i bezpieczeństwa przy uszkodzeniu czujnika. Zwrócono uwagę na potencjalne problemy z włączaniem grzałki w przypadku zaniku zasilania.
Wygenerowane przez model językowy.
REKLAMA