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.

Sterownik pompy kolektora słonecznego

rrata 12 Lip 2009 17:37 18100 23
  • Sterownik pompy kolektora słonecznego

    Witam.

    Brat ze swoim kumplem zrobili sobie kolektory słoneczne. Z racji tego iż trochę się elektroniką interesuję, zrobiłem dla niego sterownik. Jego kumpel też chciał więc zrobiłem drugi (widoczny na zdjęciach). Sterownik jest bez obudowy, ponieważ twierdził, że sam sobie zrobi.


    Całością steruje ATTiny2313 taktowany wewnętrznym zegarem 1MHZ. Na jednej magistrali podłączone są do niego dwa czujniki DS18S20 (jak zamawiałem w TME to mieli tyko takie, wersja mojego brata posiada DS18B20, w związku z tym sterowniki różnią się tym, że ten z DS18B20 pokazuje temp. z rozdzielczością 0,1°C, a ten drugi 0,5°C). Jeden mierzy temperaturę kolektora, a drugi zbiornika i włącza pompę, gdy różnica temperatur osiągnie pewną ustawioną wartość.

    Kiedyś uruchamiałem termometr i wyświetlając wynik na multipleksowanym wyświetlaczu LED nie umiałem poradzić sobie z jego migotaniem podczas komunikacji z DS'em. Dlatego w sterowniku wyświetlam liczby wykorzystując rejestry 74HC164. Dzięki temu problem migotania nie istnieje. Każdy z wyświetlaczy ma osobny tranzystor na anodzie, a ich bazy podłączone są do jednego wyjścia PWM. Używam ich to płynnego przyciemniania i rozjaśniania wyświetlacza, podczas zmieniania ustawień (to tylko dla ładnego efektu).
    Pompa jest uruchamiana przez układ optotriak -> triak. Pompka pobiera bodajże 0,4A (nie pamiętam dokładnie) więc triak wystarcza.

    Program został napisany w C i zajmuje ok. 98% pamięci mikrokontrolera. Zapewne mógłby zostać lepiej napisany, ale zrobiłem jak umiałem.
    Sterownik ma możliwość konfiguracji trzech ustawień:
    - różnicę temperatur powyżej której ma włączyć pompę
    - temperaturę kolektora, poniżej której, bezwzględnie nie włączy pompy
    - różnicę temperatur poniżej której ma wyłączyć pompę (dzięki temu pompa nie będzie się non stop włączała i wyłączała, jeśli temperatury miałyby się wahać)

    Program zapamiętuje także maksymalną temperaturę kolektora i zbiornika (każdą osobno). Zapamiętane wartości można skasować.

    Zarówno ustawienia jak i maksymalne temperatury są zapisywane w EEPROM'ie.

    W rzeczywistości wyświetlacze świecą dużo jaśniej niż widać to na zdjęciach. Czujniki podłączam przy pomocy złącza goldpin (prawy dolny róg płytki).

    Zachęcam do komentowania :D

    Pozdrawiam. Grzegorz.

    Sterownik pompy kolektora słonecznegoSterownik pompy kolektora słonecznegoSterownik pompy kolektora słonecznegoSterownik pompy kolektora słonecznego

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    rrata
    Poziom 19  
    Offline 
    rrata napisał 281 postów o ocenie 1, pomógł 19 razy. Mieszka w mieście Przeworsk. Jest z nami od 2005 roku.
  • #2
    szymon122
    Poziom 38  
    projekt bardzo dobry (niewiem za dużo o kolektorach ale czy ta pompa jest od obiegu płyny tego co jest w kolektorach)
  • #3
    cinek810
    Poziom 11  
    Moim zdaniem bardzo fajny projekt, jeśli chodzi o zaoszczędzenie miejsca na program, hym.. pewnie trochę można było zaoszczędzić gdybyś funkcje pomocnicze nie deklarował jako inline. Generalnie obsługa kilku czujników na jednej szynie nie jest zagadnieniem banalnie łatwym.
    Do czego stosujesz wstawki assemblerowe z instrukcją NOP? Rozumiem, że to wyczekanie, ale w którym momencie jest ono niezbędne?

    Jeśłi chodzi o całość wydaje mi się, że warto zastosować jeszcze jakiś zawór poza wyłączeniem pompki. W zime w nocy ciąg grawitacyjny (bez wykonywania obliczeń) moim zdaniem może być dosyć silny, żeby przeciągać trochę wody przez pompkę i znacznie chłodzić boiler.

    Poza tym... trochę purystycznie deklarujesz te funkcje jako static. Oczywiście nie jest to błąd, ale musiałem się chwile zastanowić, żeby przypomnieć co to znaczy Smile

    Płytka moim zdaniem ładna, główna część pracy to program. Te dodatkowe kości to tranzystory?
  • #4
    Pokey
    Poziom 16  
    Fajny projekt, bo powstał na konkretną potrzebę i spełnia swoje zadanie. Do seryjnej produkcji znajdź fajną obudowę i rozmieść odpowiednio wyświetlacz i diody ;)
    Chciałem podrzucić Ci pomysł na mruganie wyświetlaczy, który jak piszesz miałes. Komunikacja 1wire posiada wysokie restrykcje czasowe. Też kiedyś robiłem urzadzenie, które czytało 2 x DS18B20 i posiadało 6 wyświetlaczy 7-seg.
    Robiłem multipleksowanie na przerwaniu a przy kazdej procedurze 1wire blokowałem na moment wszystkie przerwania. Było to jeszcze na '4051 - dał sobie radę z tym wszystkim ;)

    W razie awarii czujnika i po jego wymianie bedziesz musiał modyfikowac program (widze, ze adresy czujników wpisane są na stałe). Odczyt adresów wiecej niz jednego czujnika na 1wire to sprawa skomplikowana. Ja zrobiłem procedurę "uczenia" sie czujników. Jeśli układ wykryje brak czujnika którego adres miał w pamieci - uruchamia procedure inicjalizacji. Wpinam wtedy pierwszy czujnik, potwierdzam przyciskiem - adres zostaje odczytany. Potem wypinam pierwszy i ta sama historia z drugim.
    Powodzenia przy rozwijaniu projektu :idea: :D
  • #5
    rrata
    Poziom 19  
    Schematu nie dałem, bo go nie ma. Jak znajdę czas to narysuję :wink:

    Jeśli chodzi o instrukcje nop to są tam wstawione ze względu na specyfikacje 1-wire. Najpierw trzeba wystawić stan niski i odczekać czas trochę dłuższy niż 1us (dając dwa razy nop czekam 2us bo działa na zegarze 1MHZ, przy większym zegarze pasuje dać już fukcje opóźniające) i potem można wysłać 1 lub 0, albo odczytać stan.

    Do zimy jeszcze daleko, spokojnie braciszek coś wymyśli :wink:

    Funkcje są jako static, bo mi kompilator wyświetlał komunikat, że nie obsługuje funkcji inline i kompilowały się jako zwykłe zamiast "inline", przez co kod był większy (treść tych funkcji jest optymalizowana do jednej instrukcji asemblera). Równie dobrze mogłem użyć makra.

    Co do podłączenia czujników to faktycznie lepiej byłoby zrobić osobne gniazda na dwa czujniki i rozwiązałoby to problem z adresami i ewentualną wymianą czujnika tymbardziej, że mam jeszcze parę wolnych pinów. Tylko, że jak się kapnąłem to płytkę już miałem wydrukowaną, a że z wydrukowaniem płytki mam problem (nie mam drukarki laserowej, drukował mi kolega mieszkający ponad 10km ode mnie) więc nie chciało mi się drukować drugi raz.

    Pokey twój pomysł na odczytywanie adresów jest dosyć ciekawy i łatwy. Chyba go zastosuję przy najbliższej okazji.
  • #6
    cinek810
    Poziom 11  
    Faktycznie nie zwróciłem uwagi na to, że te funkcje są tak krótkie.

    Jeśli chodzi o multipleksowanie to też stosowałem kiedyś zaproponowany pomysł wyłączania obsługi przerwań w trakcie komunikacji po 1-wire, też na attiny i wewnętrznym rezonatorze - sprawdzało się.

    Pomysł pokey'a na dodawanie nowych czujników całkiem ciekawy. Osobiście podpinałem najpierw pod płytkę z RS-232, wyświetlałem na ekranie i wbijałem na stałe w kod. W przypadku dużej liczby czujników można tak zaoszczędzić miejsce w RAMie. A czujniki są raczej mało awaryjne, u mnie już drugi rok kilkanaście chodzi bez problemów.
  • #7
    Pokey
    Poziom 16  
    cinek810 napisał:
    ...A czujniki są raczej mało awaryjne, u mnie już drugi rok kilkanaście chodzi bez problemów.

    Zgadza sie, są mało awaryjne, ale istnieją czasem dość niesprzyjające warunki. Ja te czujniki stosuje w aucie do pomiaru temperatury na zewnątrz. Czujnik umieszczony w przednim zderzaku. Po roku, pomimo podwójnego termoskurcza dostała się do wyprowadzeń woda z solą... korozja spowodowała uszkodzenie nóżki przy samej obudowie. Nowy czujnik oprócz koszulek termo dodatkowo zabezpieczyłem jeszcze lakierem. Polecam robić to samo :D

    cinek810 napisał:
    W przypadku dużej liczby czujników można tak zaoszczędzić miejsce w RAMie

    Mnie też brakowało RAMu - bo to było na małym 4051, ale miałem przy nim jeszcze kostkę 24C02 więc tam trzymałem też adresy. Przy odczytach temperatury za każdym razem sięgałem do pamięci EEPROM po adres czujników. Pracuje to bardzo sprawnie jak na taki mały procek, który "jednocześnie" realizuje magistrale I2C i 1wire.
  • #8
    rrata
    Poziom 19  
    Zarówno czujnik do kolektora jak i do zbiornika włożony jest do kawałka aluminiowej rurki zaślepionej z jednej strony i zalany silikonem tak więc woda raczej się tam nie dostanie. Takie rozwiązanie nie powoduje znacznego pogorszenia przewodzenia ciepła. Po tym jak słońce wyjdzie zza chmur zaraz na wyświetlaczu widać wzrost temperatury.
  • #9
    MODI
    Poziom 17  
    Z czujek ds18s20 też da się odczytać temperatuę dokładnie tak jak w ds18b20 (części ułakowe są w 6 bajcie)

    A co do konwersji temperatury to widze że jest zrobiona na piechote.

    https://www.elektroda.pl/rtvforum/topic185225.html

    Bardzo fajny sposób. Aż sie zdziwiłem że tak można konwertować także części ułamkowe. Myśle że zajełoby to mniej pamięci niż te stablicowane wartości.

    Pozdrawiam
  • #10
    mick
    Poziom 15  
    cinek810 napisał:

    Jeśłi chodzi o całość wydaje mi się, że warto zastosować jeszcze jakiś zawór poza wyłączeniem pompki. W zime w nocy ciąg grawitacyjny (bez wykonywania obliczeń) moim zdaniem może być dosyć silny, żeby przeciągać trochę wody przez pompkę i znacznie chłodzić boiler.


    Aby temu zapobiec daje się zawór zwrotny przy pompce, i nie chodzi tu o zimę ale co noc bojler będzie się wychładzał!
  • #12
    sq4ffp
    Poziom 15  
    Gratuluję! Następny krok (programowy!) to płynne załączanie pompy. Gdy rośnie Ci delta temperatur to pompa przyspiesza. Pozwala to wycisnąć jeszcze kilka watów z kolektorów.
    Proponuję jeszcze w układzie przewidzieć dwa termometry.
    Sam stosuję taki układ:
    Pomiar różnicy temperatur (zbiornik kolektor) załącza pompę cyrkulacji.
    Pomiar temperatury wody użytkowej (załącza grzanie np. basenu, lub złoża)
    Pomiar temperatury awaryjnej (chłodzenie przymusowe kolektora, załącza zewnętrzny wymiennik ciepła), opcjonalnie o ile złoże, lub basen nie są w stanie odebrać ciepła.
    Układ świetnie się spisuje z kolektorami dwufazowymi, próżnowymi (gdzie przegrzanie powyżej 300 stopni celsjusza może spowodować uszkodzenie rdzeni.
    Układ pracuje na ciśnieniu 4bar (dla czynnika chłodzącego), co pozwala na pracę w temperaturze do 120 stopni celsjusza.
    Pozdrawiam i namawiam do rozwijania projektu!
  • #13
    rrata
    Poziom 19  
    Dzięki wszystkim za cenne uwagi. Co do płynnego rozpędzania pompy to pomysł ciekawy, ale wydaje mi się, że za bardzo nie poprawi to grzania, chociaż mogę się mylić. To jest zrobione w ten sposób, że woda w zbiorniku nie przepływa przez kolektor tylko w zbiorniku jest grzałka, w której przepływa woda z kolektora. Narazie brat ma zrobiony jeden kolektor i grzeje tak 150l wody tylko, że on za bardzo nie wyrabia i zagrzewa wodę do max. 60*C. Zrobił sobie drugi, ale nie wiem jeszcze czy już go założył.
    W chwili obecnej nie mam możliwości poprawić tego sterownika, gdyż jest w użyciu, chyba na zimę wezmę go od brata i dorobię to płynne rozpędzanie pompy, sprawdzę czy to coś da. Trzeba będzie najpierw zoptymalizować kod.

    Pozdrawiam. Grzegorz.
  • #14
    sq4ffp
    Poziom 15  
    Witaj!
    Niech zgadnę kolektor panelowy.
    Spokojnie nagrzejesz wodę do 90 stopni.
    Rozumiem, że układ jest taki:
    Obieg kolektor wężownica dolna w zbiorniku i tam ganiasz glikol.
    No i zbiornik z wodą użytkową.
    Pomiar temperatury robisz na wysokości dolnej wężownicy.

    Jaką masz różnicę temperatur pomiędzy zbiornikiem a kolektorem? Nie przekraczaj 10 stopni (bo rosną straty kolektora). Ja się ratuję przed przegrzaniem dużą deltą (spore straty w układzie!).

    Jaka jest duży jest to kolektor, i czy aby dobrze izolowane jest jego przyłącze. Może potrafisz podać jaki przepływ czynnika masz przez niego.
    Pozdrawiam Cezary.
  • #15
    rrata
    Poziom 19  
    Różnica wynosi 10°C. Hmm mam rozumieć, że im mniejsza różnica temperatur tym lepiej? Jak tak to powiem bratu żeby jeszcze zmiejszył.
    Co do rozmiarów kolektora to nie wiem nie było mnie przy tym jak go robili, ale tak na oko mogę ocenić, że ma 0,5m x 1,5m. W samym kolektorze mieści się 3l wody.
    Z izolacją przyłącza chyba nie jest dobrze, po jej ściśnięciu dało się odczuć lekkie ciepło. Niestety nie potrafię podać jaki jest przepływ. Jak to zmierzyć? Chyba trzeba jakiś wodomierz wstawić. Narazie mało jest czasu (praca).
    Wczoraj założył z kumplem drugi kolektor, ale z grzaniem dziś kiepsko, bo od rana są chmury.

    Pozdrawiam Grzegorz.


    EDIT:

    W pierwszym poście dodałem schemat.
  • #16
    sq4ffp
    Poziom 15  
    Witaj!
    To nie tak. Jest fajna centralka z zaworkami, termometrami i przepływomierzem.
    Ogólnie 1 m^2 to około 1 kW grzałki.
    Różnicę temperatur zmniejszasz do minimum przy kolektorach panelowych, które mają spore straty w postaci oddawania ciepła jako kaloryfer.
    W przypadku kolektorów z rurami (próżniowymi), tam dosyć istotną sprawą jest temperatura najwyższej sprawności w przemianie adiabatycaznej (stała objętość) czynnika chłodniczego. Nie ważne, co jest w środku.
    Ostatnio robiłem próbę rurki z kolektora dość znanej firmy i tam maximum transportu energii wypadło w + 72 stopni celsjusza.
    Co ciekawe przy + 115 stopni sprawność kolektora psada o połowę.
    Więc wnioski.
    Grzejemy wodę obiego ustawiam tak, aby kolektor miał temperaturę optymalną 72 stopnie!
    Gdy mam nadmiar ciepła uciekam do 115 stopni i załączam zewnętrzny wymniennik.
    Podstawowym problemem kolektorów jest to, aby nie promieniowały ciepła i to jest zadanie dla nas leketorników.
    Zaprojektowanie automatyki pozwalającej na uzyskanie maksymalnego zysku!
    Pozdrawiam Cezary!
  • #17
    kmr
    Poziom 16  
    Witam

    Może ktoś mi wytłumaczy co daje zwiększenie prędkości pompy (prócz zwiększenia poboru prądu) przy wyższej temp kolektora (delty) bo we wzorze na wymianę ciepła jakoś tego nie widzę.??
  • #18
    sq4ffp
    Poziom 15  
    Szybszy obieg czynnika w układzie!
    Jednak przepływ ciepła jest ograniczony opornością cieplną, wężownicy i kolektora. Podkręcanie do ponad miarę przepływu nie ma więc sensu.
    Pozdrawiam.
  • #19
    rrata
    Poziom 19  
    :arrow: sq4ffp
    Widzę, że się bardzo dobrze na tym znasz. Ja o kolektorach nie wiem wiele. Lepiej wychodzi mi elektronika (choć nie kształcę się w tym kierunku, to tylko moje hobby).
    Czyli przy kolektorach panelowych trzeba mieć małą różnicę temperatur ze względu na straty. Jest jeszcze inna kwestia. U brata w zbiorniku jest grzałka o dł. 2m (zbiornik 150l), ale to chyba za mało (znajomy ma dłuższą i szybciej zagrzewa) i będzie dawał dłuższą. Może masz jeszcze jakieś pomysły co do sterownika - jakie opcje dodać itp.
    Dzięki za cenne uwagi.
    Pozdrawiam.
  • #20
    kmr
    Poziom 16  
    sq4ffp napisał:
    Szybszy obieg czynnika w układzie!
    Jednak przepływ ciepła jest ograniczony opornością cieplną, wężownicy i kolektora. Podkręcanie do ponad miarę przepływu nie ma więc sensu.
    Pozdrawiam.


    czas wymiany jest w liczniku razem z deltą T. Czy zmniejszanie czasu wymiany a więc skracanie czasu będzie kompensowane wzrostem delta T?? A co ze stratami ciepła na przewodzie powrotnym?? Robiłeś jakieś badania bo to mi nie daje spokoju po prostu. Wszyscy przyspieszają pompki przy wzroście temperatury ale jeszcze mi nikt nie udowodnił swoich racji. Poproszę o to. Ilość strumienia ciepła zależy także od ilości masowego przepływu czynnika ale także od różnicy temperatur na wejściu i wyjściu wężownicy. Masz jakieś dane na ten temat?
  • #21
    sq4ffp
    Poziom 15  
    Przepraszam Panowie!
    Czas zmienić tok rozumowania!
    Pompujemy ciepło!
    Nie temperaturę, nie czynnik!
    Jak przyjmiecie taki tok rozumowania będzie łatwiej!
    Chcąc pompować ciepło potrzebna jest różnica temperatur, im wyższa tym łatwiej, z drugies trony są straty ciepła im różnica temperatór wyższa tym straty większe!
    Kolektor panelowy to takie coś, co ma spore straty w oddawaniu ciepła, wiec należy pilnie kontrolować, kiedy cudo zacznie oddawać, a nie pobierać ze słoneczka.
    Panowie, pompujemy ciepło. Stosujemy zasadzi i pułapki aby je zapędzić do domu. Ciepło nie temperaturę!
    Zatrzymany kolektor słoneczny latem (próżniowy z 200 rurek, około 2kW) gotuje się po pół godzinie pracy słoneczka! od 6:30 do 7:00. Oczywiście gdy jest prawidłowo (zgodnie z prawidłami!) izolowany termicznie!
    Zimą to około godziny!
  • #22
    bachus1
    Specjalista - kolektory słoneczne
    Witam.
    sq4ffp napisał:
    Cytat:
    Zatrzymany kolektor słoneczny latem (próżniowy z 200 rurek, około 2kW) gotuje się po pół godzinie pracy słoneczka!

    Wkradł się błąd: chyba próżniowy z 20 rurek, masz na myśli heat-pipe ale jednak one nie mają wydajności ok. 100W na jedną rurkę. kolektory z bezpośrednim przepływem lub U rurką zagotują się znacznie szybciej, po paru minutach - to tak na marginesie.
    Jak bardzo słusznie zauważyłeś pompujemy ciepło i aby zachować jak najwyższe sprawności instalacji nie zależnie czy to płaski czy próżniowy elektronika powinna " zmieniać obroty pompy " w zależności od różnicy temp. między kolektorem a zbiornikiem.
    pozdrawiam.
    Witold
  • #23
    Pawel_361
    Poziom 17  
    Chcąc zmienić w programie dane czujników muszę edytować te dwie linijki ??

    unsigned char czujnik_zbior[] PROGMEM = {0x2A,0x00,0x00,0x01,0xCE,0x9B,0xC5,0x28};

    unsigned char czujnik_kol[] PROGMEM = {0x7F,0x00,0x00,0x01,0xCE,0x8D,0x73,0x28};
  • #24
    rrata
    Poziom 19  
    :arrow: Pawel_361
    Tak dokładnie to są adresy czujników i trzeba je zmienić na takie jakie mają czujniki które używasz (musisz na jakimś innym układzie sprawdzić sobie adres każdego z nich), ale lepiej byłoby zmodyfikować sam układ, tak aby każdy z czujników był podłączony do innego pinu, wtedy zniknie problem adresowania i w razie awarii wymieniamy czujnik bez konieczności przeprogramowania układu. Oczywiście bez modyfikacji kodu się nie obejdzie.