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

[Rozwiązano] Termostat porównawczy dla kolektora słonecznego - Arduino, pompa obiegowa, czujniki

urwis1961 12 Mar 2023 11:51 897 14
REKLAMA
  • #1 20482421
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    Witam
    Jak w temacie chciałbym zrobić termostat mierzący dwie temperatury w dwóch różnych miejscach, porównujący je i załączający przekaźnik kiedy różnica między pomiarami będzie stanowić X.
    Skąd pomysł?
    Dostępne na rynku ustrojstwa, spełniające te wymogi są albo idiotycznie drogie albo /wbrew opisom sprzedawców mierzą co prawda dwie temperatury ale z ich porównywaniem i następującą po tym akcją jest już niezbyt.

    Miałoby to służyć do kontroli kolektora słonecznego /nie fotowoltaika/ i uruchamiać pompę obiegową wyłącznie(!) kiedy temperatura wody w kolektorze jest wyższa niż w bojlerze.

    Pomysł mam żeby zrobić to w oparciu o Arduino bo:
    1. Wydaje się jak stworzone do takich prostych zadań.
    2. Trochę już na nim dłubałem i całkiem obce mi nie jest /w odróżnieniu od elektroniki "na piechotę"/.

    Trochę elementów już mam, reszta dojedzie we wtorek - pomyślałem o takim zestawie:
    1. Mikrokomputer Mikrobot CH340 R3 ATMEGA328
    2. ART LED 4 CYFRY 0,8"=20mm RED/GREEN Anoda
    3. Czujnik DS18b20

    A dziś już parę pytań do bardziej "ogarniętych" ode mnie :) :
    1. Czy jeśli podłączę 2 czujniki ds18b20 w trybie pasożytniczym wystarczy z tego modelu Arduino wyprowadzeń żeby jeszcze obsłużyć taki 2 kolorowy wyświetlacz i przekaźnik?
    2. Z kursu Arduino udało mi się zrozumieć jak podłączyć czujniki, przypisać ich indywidualne adresy itp. ale nie wiem jak rozwiązać kwestię przypisania odczytu do zmiennych i jak je porównać żeby dać sygnał na przekaźnik zawsze wtedy kiedy wartość z pierwszego będzie większa niż z drugiego.
    3. Jak dodatkowo wysłać na dwie pierwsze cyfry wyświetlacza wartość temperatury pierwszego czujnika /i to na dokładkę "zieloną"/ i jednocześnie na drugie dwie cyfry wartość temperatury drugiego czujnika /"czerwoną"/?

    Nie potrzebne są żadne przyciski do ingerencji w działanie/ustawianie tego "sterownika" - wystarczy raz przypisana programowo różnica temperatur przy której nastąpi reakcja przekaźnika /np.3-5 stopni/.

    Pytanie 3. to już "bajer" - w sumie taki "sterownik" wystarczy jak będzie działał automatycznie, bez jakiegokolwiek podglądu /nawet bez wyświetlacza/. Ale jak już robić... było by fajnie gdyby go miał :)

    Poproszę o sugestie/podpowiedzi w temacie zanim jeszcze elementy wylądują na stole.
    Tylko Bardzo PROSZĘ - bez "...po co się chrzanić... kup gotowe... nie lepiej fotowoltaikę... itp. "pomocne inaczej" :)
  • REKLAMA
  • #2 20482731
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    To o co pytasz to banał wyczerpująco opisany w kursach Arduino np. TU. zmienna = wynikFunkcji(); , jeśli funkcja wynikFunkcji() zwraca jakąś wartość.
    Jest zakaz wklejania linków do Allegro i tym podobnych źródeł znikających po czasie, zresztą już nie działają.
    Długie linie onewire lepiej robić na zasilaniu zwykłym, trzecim przewodem, przecież to nie ma znaczenia dla UNO, i tak do komunikacji masz 1 przewód nieważne czy w trybie normalnego zasilania czy na pasożyta, GND i VCC nie zajmują pinów IO uC, pod te same piny podłączasz zasilanie innych, drobnych urządzeń. Te o większym poborze prądu, albo o poborze prądu może i niewielkim, ale mocno zmiennym w czasie lepiej zasilić spoza Arduino by nie wprowadzać zakłóceń zasilania do UNO. Te płytki nie są zaprojektowane do warunków "przemysłowych", bardziej do prototypowania na biurku.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 20482805
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    kaczakat napisał:
    To o co pytasz to banał...


    Jak dla kogo :(

    Nie doczytałem o zakazie linków - przepraszam.
    Faktycznie padły - ale to pewnie działalność Elektrody bo na innych forach działają.
    W każdym razie już edytuję.
    Dzięki za to co mi podesłałeś - niestety dalej ginę bo tam jest o analogach /które trochę ogarniam/ a u mnie będą czujniki cyfrowe i... tu zgłupiałem.

    Mam z "Akademia Nettigo" coś takiego co pewnie nada się na początek ale to tylko na monitor i nie wiem jak ruszyć dalej.


    Kod: Arduino
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 20482890
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Zrozum, to jest banał, jeśli dla Ciebie nie jest to cofnij się do kursu, zrób więcej przykładów, odtwórz kilkadziesiąt przykładowych projektów, poczekaj z zadawaniem pytań bo na tym etapie to nie ma sensu.
    Pytałeś o zmienne, tam jest przypisanie wartości z odczytu analoga do zmiennej. Ty analogicznie przypisujesz do zmiennej wynik z innej funkcji w bibliotece.
    Zresztą wcale nie musisz wymyślać takiego programu, bo takich jest setki do znalezienia w Google - "arduino differential temperature controller ds18b20", 101 tysięcy trafień, https://www.instructables.com/Arduino-solar-controller-with-ds18b20-temp-sensor/ z obrazkami.
    Pomogłem? Kup mi kawę.
  • #5 20483020
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    Dziękuję bardzo - zadawałem w Google uparcie złe pytania.
    Teraz mi się "przejaśnia" :)
  • Pomocny post
    #6 20483253
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 20483614
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    emarcus napisał:

    ...że zakupione elementy zwiesz "duracznoje ustrojstwa"?"

    Jak się pewnie domyślisz po niku - miałem ruski w szkole przymusowo i... zostały naleciałości w mowie potocznej :(
    emarcus napisał:
    Jeżeli potrafisz odczytać temperature jakiegoś objektu/środowiska i wyświetlić ją na monitorze w 'postaci cyfrowej' ( bo w jakiej innej postaci mógłbyś to zrobić?), to masz swój projekt w 99% zrobiony!

    Dotąd sobie radzę.
    Cytat:
    Jeżeli do tego chcesz wplątać dodatkowo temperaturę bojlera to kombinacje (algorytm) tych zależności temperatur ujmiesz w tych instrukcjach warunkowych.

    A tu już ginę.
    A to właśnie ma być główna funkcja całego "projektu" - tzn porównanie dwóch pomiarów /z dwóch czujników/ i reakcja przekaźnika tylko wtedy kiedy pierwszy odczytał więcej niż drugi.
    Właśnie tego "porównania" nie umiem ugryźć bo nie potrzebny mi górny czy dolny ustalony poziom tylko różnica między nimi ile by odczyt nie wynosił.
    Znaczy cieplej w kolektorze niż w bojlerze = włącz pompę /obojętnie czy jest w nim 10 czy 70 stopni.
    Cieplej w bojlerze niż w kolektorze = wyłącz pompę /żeby nie studziła tego co udało się nazbierać/.

    Co do wyświetlacza pełna zgoda = na później zwłaszcza, że już doczytałem jakie problemy z czterocyfrowym.

    A co do ludzi TU... wiem, już parę rzeczy robiłem pytając :(
    Ale w przeważającej liczbie przypadków tak ~na 10-ciu jeden pomógł faktycznie - często na prywatnych wiadomościach... może publicznie to tu wstyd?! :)
  • Pomocny post
    #8 20485089
    Konto nie istnieje
    Poziom 1  
  • #9 20485794
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Dla bojlera nie jest obojętne czy jest 70 czy 120oC, algorytm działania jest odrobinę więcej skomplikowany. Powinna być też nastawa temperatury tak by nie gotować wody w zasobniku CWU, kolektory mają wytrzymać 200oC, a nawet taka podniesiona powyżej 70oC będzie skutkować szybszym osadzaniem się kamienia na wężownicach zasobnika, zasobnik CWU i pompa nie mogą pracować na takich temperaturach, powinien być też czujnik temperatury na wyjściu wężownicy z zasobnika CWU, roztwór w wężownicy powinien być pod odpowiednim ciśnieniem, znowu by się przydał czujnik. Jak z powodu jakiegoś złośliwego chochlika program się zawiesi powinien zadziałać Watch Dog i zresetować układ, nastawy pewnie byś chciał zachować w EEPROM by po powrocie zasilania nie działał na fabrycznych nastawach, może by się przydało jakieś proste menu by nastawy zmieniać w czasie działania programu i zapisać w EEPROM. Może jakiś brzęczyk by zasygnalizować, że pora roku wymaga zakrycia części kolektorów bo nie ma co robić z ciepłem. Może obsługa kilku biegów pompy, albo sygnał sterujący jeśli jest o płynnie zmienianej wydajności tak by zoptymalizować prędkość przepływu do uzyskiwanej mocy cieplnej.
    Zamiast robić zakupy i wymyślać koło pod nie można użyć gotowego projektu, spisać zestawienie sprzętu potrzebnego do realizacji i zrobić działające urządzenie, ewentualnie po przerobieniu kursu ze zrozumieniem i przyswojeniem wiedzy - do skutku, co na pewno się nie stało gdy pytasz jak przypisać zmienne i porównać dwie ze sobą, można dodać własne funkcjonalności, rozbudować o dodatkowe czujniki i zależności.
    Początkowe miesiące zabawy z programowaniem są tak fascynujące jak rysowanie szlaczków przez dziecko uczące się operować ołówkiem, ale bez tego się prędzej sobie wybije oko niż napisze opowiadanie.
    Pomogłem? Kup mi kawę.
  • #10 20486846
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    emarcus napisał:

    I z tym nie możesz podołać ?!

    Jak już napisałeś to wydaje się oczywiste :)
    Zaćmienie - za dużo kombinuję jakie czujniki, jaki wyświetlacz /a wszystko w głowie bo towar jeszcze nie dotarł/ i w mózgu robi się pianka.
    Cytat:

    Ożywiłoby to troche ten projekt.

    Pewnie - jak tylko zadziała spełniając podstawowy warunek to aż się prosi bo ... będzie cieszyć.
    Dzięki.

    kaczakat napisał:
    ...są tak fascynujące jak rysowanie szlaczków przez dziecko...

    Doskonale ujęte - to właśnie ja i mój poziom :)
    Tyle, że to "dziecko" zamiast się nudzić... cieszy.
    Z przerobieniem kursu masz rację jedynie częściowo bo przeczytałem od dechy do dech parę razy a potem jeszcze na wyrywki - gorzej ze zrozumieniem :(
    U mnie w głowie cały czas pokutuje jeszcze Basic-owe "myślenie" kolejnymi liniami kodu... a to cholernie przeszkadza i trzeba ciągle "wracać" i rozkminiać od początku.
    Ale skoro efekty sprawiają frajdę... to warto.

    A w temacie:
    Myślisz zbyt "nowocześnie" albo ja wyżej nie sprecyzowałem /chyba/.
    Mój kolektor to nie jakieś wypasione urządzenie ciśnieniowe, próżniowe czy inne.
    To zwykły rząd pomalowanych na czarno i zamkniętych w "akwariach" kaloryferów.
    Słońce w nich wody nie zagotuje nigdy.
    Nie potrzebne więc dodatkowe czujniki i zabezpieczenia a jeśli cokolwiek się zawiesi... zwyczajnie nie nagrzeje mi wody albo wystudzi niepotrzebnie /zależy w którą stronę/.
  • #11 20487442
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 230
    Przeczytanie kursu nic nie daje, nie powinno się nawet z przykładów przeklejać kodu i obserwować działanie programów, je trzeba przeklepać rękami, tak by wyrobić sobie pamięć w palcach. Na bazie jednego przykładu trzeba zrobić swoich 10. Jest to żmudne ale przynosi efekty. Programowanie w basic czy C/C++ różni się tylko używanym alfabetem, to nie jest tak, że umiesz rosyjski i nagle musisz się nauczyć francuskiego, to dalej zbiór instrukcji, procedur i funkcji, dalej to są linie kodu tylko zamiast ENTER na końcu wstawiasz ;.
    Pomogłem? Kup mi kawę.
  • #12 20488026
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    kaczakat napisał:
    ...C/C++ różni się tylko używanym alfabetem, to nie jest tak, że umiesz rosyjski i nagle musisz się nauczyć francuskiego...

    I tak i nie :(
    W Basicu przechodziłeś kolejne linie kodu jedna po drugiej - tu dzieje się "na raz".
    Choćby np. GoTo odsyłało cię do konkretnej lini i dalej znów szło po kolei ...
    Szedłem sobie "palce po ekranie" i było dla mnie oczywiste - tu się gubię.
    Ale nie od razu Kraków... opornie bo głowa nie młoda ale wchodzi :)

    Dziś już sprzęt na blacie to i pojąć łatwiej.
    Jeszcze grzebię w "przeklejonym kodzie" ale łatwiej mi zrozumieć co z czego i dlaczego kiedy mogę na bieżąco obserwować reakcje na każdą modyfikację /wracając do czytania znaczenia każdej komendy i sposobów jej stosowania/.
    A i "przeklepywania rękami" przy tym sporo :)

    Jakoś pójdzie bo... musi - a jak się znów "zatnę" to będę pytał nie dając się zniechęcić "opierdalaczami" co nic nie wnoszą ale korzystają z okazji dowartościowania Się :)

    Dodano po 10 [godziny] 13 [minuty]:

    Zrobione - działa

    Wszystkim co Pomogli, poprowadzili "za rączkę", podpowiedzieli...
    Wielkie DZIĘKI !!!

    Nie jest to oczywiście "profesjonalne dzieło" i zapewne można wiele dopracować /sugestie mile widziane/.
    Ale cieszy bo po przejrzeniu dziesiątek podobnych udało się samodzielnie "ulepić" coś, czego każdą linijkę Rozumiem - wiem po co, dla czego i jak.
    A tak właśnie lubię zamiast wlepić gotowca i... "nie oddychać" ze strachu, że się wysypie i znów "czarna d*pa".

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Oczywiście na Pin8 chwilowo jedynie dioda a zamiast na monitor będę kombinował z wyświetlaczem. Ale to później /jak zrozumiem/ :)
  • #13 20490215
    Konto nie istnieje
    Poziom 1  
  • #14 20490710
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    emarcus napisał:

    Zarówno w Basic jak i w Arduino instrukcje są wykonywane ‘linia po linii’, bo jaki to by był sens programu mieszać sekwencje?(...)
    lub zbyt leniwi by studiować karty katalogowe urządzenia i pisać do nich własne często długie i komplikowane /pracochłonne sekwencje programu).(...) które programista zwyczajnie kopiuje z załączonych przykładów bez zastanowienia się nad źródłem ich pochodzenia…
    To tylko mała dygresja dla rozwiania wątpliwośći.


    Programista, operator, użytkownik - każdy z nich bawił się kiedyś kodem jak nie takim to innym "językiem".
    Każdy zagłębia się do jakiegoś poziomu - każdy innego.
    Nie jestem programistą, co wyraźnie zaznaczyłem na początku - dlatego też w swoim myśleniu/zrozumieniu napotykam zupełnie inne "progi".
    Pisząc o nich, zwracając o pomoc nie oczekuję wyłącznie krytyki od "wszechwiedzących" a raczej próby zrozumienia i wskazówek choć zbliżonych do poziomu pytającego.
    Odpowiedzi w stylu "poczytaj trochę" nie są ni jak pomocne dla kogoś, kto choć czyta... niezbyt rozumie.
    Podobnie jak "poszukaj se w guglu"... kiedy nawet nie wie jak tam pytanie sformułować.
    Jak myślisz - czy mechanik np. naprawiający twój samochód wytapia stal we własnoręcznie zbudowanym piecu, kuje ją, toczy, szlifuje, wierci, gwintuje a potem wymienia powstałe "śrubki"?
    Czy jest zwyczajnie "leniwy" i wymienia, składa, naprawia korzystając z gotowych - wprost ze sklepu?

    Nie rozumiesz, nie widzisz analogii prawda?

    Skoro już zaśmiecamy wątek takimi dywagacjami dam ci pewien przykład /do przemyślenia jeśli dasz radę/.
    Może nie z twojej "bajki" ale przez to łatwiej spojrzeć z dystansu bez skupianiu na "słowach kluczach".

    Pracowałem niegdyś przez długie lata jako instruktor nauki jazdy i wykładowca przepisów.
    Moja średnia zdawalności wynosiła 93% /rekordowa 97/.
    Pracując w różnych ośrodkach poznałem całą masę innych w tym zawodzie.
    Wiesz jaka średnia zdawalność wychodziła ogólnie? Między ~35 a 40%.
    /cały czas mowa o zdaniu za pierwszym podejściem/

    Jak myślisz z czego wynika taka różnica /a nie byłem najlepszy/?

    Powiem ci - z tego, że cała masa ludzi jest świetnymi kierowcami ale nauczyciele z nich jak z koziej dupy organki :(
    Podobnie w każdej innej dziedzinie - ludzie są fachowcami więc "uczą"... ale niestety tego akurat nie umieją.

    Dokładnie to samo zjawisko występuje tak TU jak i na wszelkich innych forach tematycznych - cała masa Mądrych ale przekazać/ podzielić się swoją wiedzą... to już max 1 na 10-ciu /optymistycznie/.

    Wyobraź sobie, że pierwszy raz w życiu /albo i nie bo gdzieś tam po łąkach hasałeś/ wsiadasz do samochodu i ... trafiasz na mnie :)

    Przywitam cię słowami "i co się gapisz durniu... co kurwa robisz... a po co tak... a nie lepiej było pozostać przy hulajnodze?!"
    Coś ci tam czasem "kapnę" ze swojej wiedzy jak będziesz bezmyślnie kręcił po placyku godzinami.
    Brzmi znajomo? Tak cię "uczyli"? A może ktoś znajomy o takim "nauczycielu" opowiadał? Dziecko załamane po powrocie ze szkoły z dwóją?

    Otóż NIE - w takim przypadku nie miał bym 93% wyników.

    "Nauczyciel", który NIE umie uczyć... powinien szukać pracy na poczcie!!!

    A teraz wróćmy do Forum.
    Czy one istnieją żeby chwalić się swoją wspaniałością czy może w innych celach?

    Reasumując - chcesz pomóc? Zejdź z "piedestału" i zrób to z sensem.
    Nie umiesz? Na poczcie miejsca są.
    Chcesz się wyżyć? Idź narąbać drzewa.

    Dodano po 27 [minuty]:

    kaczakat napisał:
    ...Na razie to nie wiesz czego nie wiesz...


    Ojej chyba pomyliłem - tam się wypowiedział i trzasnął drzwiami :)
    Ala ta piaskownica już nie twoja - czy też?
    Chłopcy nigdy nie dorastają :(

    Tak czy tak mylisz się - "wiem, że nic nie wiem" :)

    Nie chce mi się klepać wszystkiego raz jeszcze bo w sumie nadajecie na podobnej fali.
    Efekt? Wątek zdominowany przez was dwóch, nikt z wielu obserwujących nie włącza się na wszelki wypadek a POMOC... ledwie kapnięta. Przykre to... i globalne niestety.

    Nic to - życzę ci i podobnym, kiedy w "nie swojej bajce" będzie pomoc potrzebna... abyście trafili np. na mnie :)

    A tu jedynie powtórzę:

    - Chcesz pomóc? Zejdź z "piedestału" i zrób to z sensem.
    - Nie umiesz? Na poczcie miejsca są.
    - Chcesz się wyżyć? Idź narąbać drzewa.
  • #15 20490788
    urwis1961
    Poziom 10  
    Posty: 92
    Ocena: 13
    Już napisałem 3 posty wyżej - chciałem zostawić na ew sugestie ale niestety jedynie "mędrkowanie" więc... do zamknięcia.

Podsumowanie tematu

✨ Użytkownik planuje stworzyć termostat do kolektora słonecznego, który będzie mierzył temperatury w dwóch miejscach i włączał pompę obiegową, gdy temperatura w kolektorze będzie wyższa niż w bojlerze. Wskazano, że dostępne na rynku rozwiązania są zbyt drogie lub nie spełniają wymagań. Użytkownik zamierza wykorzystać platformę Arduino, mając już część komponentów, takich jak Mikrobot CH340 R3 ATMEGA328 oraz czujniki DS18B20. W dyskusji poruszono kwestie programowania, w tym odczyt temperatury, porównywanie wartości oraz włączanie i wyłączanie pompy na podstawie różnicy temperatur. Użytkownik otrzymał wskazówki dotyczące kodowania oraz sugestie dotyczące użycia wyświetlacza OLED do monitorowania temperatur.
Wygenerowane przez model językowy.
REKLAMA