Skocz do zawartości

Problem częstszego sterowania SSR-ami przy użyciu czujnika temperatury DS18B20


MisiekD

Pomocna odpowiedź

49 minut temu, MisiekD napisał:

Chociażby sterować SSR-ami, co 20ms

Czekaj, bo coś mi umknęło.

Sterowanie SSR-ami polega na włączeniu przekaźnika jeśli temperatura jest za niska, i wyłączeniu jeśli nie jest. W jakim celu co 20 msec próbujesz sterować przekaźnikami jeśli nie wiesz, jaka jest temperatura? A ściślej: wiesz jaka była niedawno (przy czym nie wiesz co oznacza owo "niedawno")?

Link do komentarza
Share on other sites

37 minut temu, ethanak napisał:

Czekaj, bo coś mi umknęło.

Sterowanie SSR-ami polega na włączeniu przekaźnika jeśli temperatura jest za niska, i wyłączeniu jeśli nie jest. W jakim celu co 20 msec próbujesz sterować przekaźnikami jeśli nie wiesz, jaka jest temperatura? A ściślej: wiesz jaka była niedawno (przy czym nie wiesz co oznacza owo "niedawno")?

Nie do końca właśnie 🙂 Piece przepływowe działają najczęściej tak, że mają pewne momenty działania i wyłączenia. Czyli włączają się na np. 50ms, potem 50ms czekają, potem znów włączają się itd. I tym sposobem starają się utrzymać stabilną temperaturę. Jak temperatura jest za niska (czujnik na wyjściu), to zwiększają swój czas "taktowania" (włączenia) grzałek (w moim przypadku to będą SSR-y). I tak czasowo zwiększają taktowanie aż temperatura nie będzie satysfakcjonująca i stabilna. Jak będzie za duża - to taktowanie spada. Temperaturę mam na wyjściu, tak jak w każdym jednym grzejniku. Startujesz od niskich częstotliwości włączenia, a z czasem się zwiększają, co powoduje wzrost temperatury. Dokładnie tak działa mój kod - mam ustawioną temperaturę docelową i mikrokontroler sam taktuje SSR-y by uzyskać temperaturę docelową.

I absolutnie by nie zadziałała Twoja metoda, że włącza się jak jest za niska i wyłącza jak za wysoka, bo po 1 sekundzie jak z 15°C mam już 35°C 🙂 Po 2 sekundach to już jest ponad 55°C. Grzałki koło 20kW. Nie ma innej opcji niż taktowanie, przynajmniej innej lepszej nie znalazłem.

Tak czy siak, ten sposób działa i to całkiem dobrze, wczoraj testowane. A na dniach wgram kod, który pozwoli zejść ze 100ms do nawet 20ms, to już będzie bajka.

Link do komentarza
Share on other sites

A poza tym, cieszę się nawet, że spotkałem się z tym problemem i już go rozwiązałem, bo niedługo szykuję się do dużej zmiany centralnego ogrzewania i już jest pewne, że użyję minimum 12 czujników temperatury, tak więc lekcja z obsługą DS18S20 odrobiona 😀

Link do komentarza
Share on other sites

No to po prostu za mało napisałeś w pierwszym poście i stąd nieporozumienie.

Co prawda ten sposób z ciągłym odczytem temperatury bez czekania na przetwarzanie nie jest specjalnie prawidłowy, ale jeśli działa to ok.

Następnym razem napisz że chodzi o sterowanie proporcjonalne.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

DS jest fajny, ale możliwe, że termistor byłby tutaj lepszy. Albo coś dwurdzeniowego, albo coś co ma sprzętowy interfejs one wire, albo napisać coś, co nie blokuje. Niepasożytniczo zasilany DS może dać znać kiedy ma temperaturę gotową do odbioru - znaleźć bibliotekę co to wykorzystuje, albo zrobić samemu. Oczywiście najniższa rozdzielczość, albo dziwne układu kilku DSów kaskadowo odczytywanych. Częsty odczyt z DSa nie jest wskazany, ze względu na możliwość zawyżania temperatury, choć można by zbadać, przy jakiej temperaturze medium to będzie istotne. PWM przy takiej mocy jest do ogarnięcia. Odkurzacz 1800 W - Zelmer Jupiter 4000, jeden triak w obudowie TO-220.

PS. Czy to jest ogrzewacz przepływowy?

Edytowano przez matsobdev
Link do komentarza
Share on other sites

37 minut temu, matsobdev napisał:

albo napisać coś, co nie blokuje.

Przecież biblioteka odpowiednio użyta nie blokuje... oprócz oczywiście samej transmisji.

Co do termistora też chciałem to zaproponować, ale mnie ubiegłeś. Jeśli chodzi o mikrokontroler - ja bym tam wrzucił RPi Pico. I wtedy faktycznie - jeden rdzeń może sobie czytać z termistora, drugi zajmować się SSR-ami. Zdaje się, że jest nawet jakiś projekt odczytu dallasów przez PIO.

Tanio i skutecznie.

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

6 godzin temu, ethanak napisał:

bez czekania na przetwarzanie nie jest specjalnie prawidłowy,

Zgadza się, poprawiłem to 🙂

if (temperaturaC_DS18B20 != DEVICE_DISCONNECTED_C && millis() - millisTimmer7 > 100UL) {
    temperaturaC_DS18B20 = sensors.getTempCByIndex(0);  
    sensors.requestTemperatures();
    millisTimmer7 = millis();
  }

😉

Link do komentarza
Share on other sites

2 godziny temu, matsobdev napisał:

PS. Czy to jest ogrzewacz przepływowy?

Tak, dokładnie. Jakieś 20 - 22kW. Myślałem nad termistorem albo analogowym czujnikiem temp., ale wolałbym nie bawić się w kalibrowanie, itd. Przy DS18B20 mam od razu temperaturę skalibrowaną. Poza tym, tak częsty odczyt to ekstremalna sytuacja, którą pewnie użyję kilka razy w życiu. Praktycznie każdy inny przypadek to będą temperatury, które będą się zwiększały godzinami, a nie sekundami 😉

Link do komentarza
Share on other sites

26 minut temu, ethanak napisał:

ATTiny13

W sumie to nie wiem, możliwe, ale nie chciało mi się aż tak bawić w programowanie itd. skoro mam ESP8266 po ok. 10zł pod ręką 🙂

Link do komentarza
Share on other sites

3 minuty temu, ethanak napisał:

Jeszcze drobiazg - odczyt będzie działał szybciej jeśli użyjesz adresu a nie indeksu.

O to też bardzo ciekawe. A wiesz może ile ms na tym zaoszczędzę? Na obecną chwilę 

sensors.getTempCByIndex(0);

zabiera 29ms czasu procesora.

Link do komentarza
Share on other sites

Domyślam się - teraz mały attiny kosztuje jakieś dziwne pieniądze 🙂

Co do ESP: dobrym zwyczajem jest wyłączenie na wszelki wypadek wifi na początku setup.

Link do komentarza
Share on other sites

Co d o odczytu adres/indeks: nigdy nie sprawdzałem, ale patrząc na kod biblioteki przy odczycie przez indeks coś tam jeszcze wyprawia. Sprawdź - ja akurat niespecjalnie mam jak (mam ESP ale wszystkie dallasy zajęte).

  • Lubię! 1
Link do komentarza
Share on other sites

15 minut temu, ethanak napisał:

Domyślam się - teraz mały attiny kosztuje jakieś dziwne pieniądze 🙂

Co do ESP: dobrym zwyczajem jest wyłączenie na wszelki wypadek wifi na początku setup.

Serio trzeba go jakoś wyłączać? Pierwsze słyszę. Myślałem, że jeśli nie implementuję nic z WiFi to po prostu nie działa 😄 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.