Arduino Polska Forum
sterownik do pieca olejowego, kominka z plaszczem wodnym, kolektora slonecznego. - Wersja do druku

+- Arduino Polska Forum (http://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (http://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (http://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: sterownik do pieca olejowego, kominka z plaszczem wodnym, kolektora slonecznego. (/watek-sterownik-do-pieca-olejowego-kominka-z-plaszczem-wodnym-kolektora-slonecznego)



sterownik do pieca olejowego, kominka z plaszczem wodnym, kolektora slonecznego. - eukaliptus - 08-06-2018

witam

jest to moj pierwszy kontakt z arduino (jak i z elektronika) wiec prosze o wyrozumialosc.

forum to skierowane sa do osob ktore tworza projekty oraz szukajacych pomocy. to ja z naciskiem na to drugie :-).

chce zrobic sterownik do kontrolowania ogrzewania olejowego, kominka z plaszczem wodnym, kolektora slonecznego oraz ogrzewania podlogowego i grzejnikow sciennych. dodatkowo chcialbym kontrolowac to poprzez telefon (jakas aplikacja na androida) podlaczony bluetooth aby na bierzaco mozna bylo wlaczyc ogrzewanie strefowe np. tylko ciepla woda bez podlogowki czy tez grzejnikow sciennych. w przyszlosci (dalszej) chcialbym dodac modul gsm do wl/wyl pieca (np. poprzez sms). chcialbym posiadac tez wglad w statystyki dotyczace czasu pracy pomp, nagrzania wody w zbiorniku itp.

zacznijmy od ogolnego schematu ogrzewania.

zdjecie: ogrzewanie schemat

prosilbym o skupienie sie na czesci elektronicznej a nie hydraulicznej.

program powinien obejmowac:

jesli T5 >T2 pompa P2 pracuje
jesli T3>55st.C to P3 pracuje ale O1 jest wylaczone (automatycznie P1 i M1 wylaczone, poniewarz bedzie podlaczone bezsporednio do zasilania O1)
mozliwosc wl/wyl O1 poprzez klikniecie na telefonie (lub poprzez modul GSM w przyszlosci np. sim800L)
dodatkowo punkty 2 i 3 uzaleznione sa dodatkowa opcja co bedzie grzane (5 stref), : a)tylko ciepla woda M3 open, b)tylko podlogowka M2 open, c)tylko grzejniki M4 open, d) tylko ogrzewanie M2 i M3 open, e) wszystko M2 M3 M4 open. wiec wlaczajac O1 lub rozpalajac w kominku T3 musi byc wstepnie ustalony ktorys z w/w parametrow (gdzie to cieplo ma plynac).


dodatkowo opcja jesli T1 >60st.C (a O1 i P3 sa wylaczone) to P4 wlaczona (opcja podgrzania podlogi nadmiarem wody z paneli).

tylko tyle albo az tyle.

calosc (jak wspomnialem wczesniej) musialoby byc obslugiwane poprzez prosty interfejs na telefonie (np. ikonka pieca i przycisk ON/OFF, ikonka grzejnika ON/OFF, ikonka boliera ON/OFF, ustawienia czasowego wlaczenia pieca-timera itd). ewentualna opcja zmiany temperatury startu kominka poprzez klikniecie i przyciski + i _,podwyzszenie temp. wody  w bolierze, dostep do przycisku 'statystyki'. itp

na razie aplikacja mnie nie martwi ale pisze o tym majac na wzgledzie caloksztalt.

elementy ktore posiadam to :

- arduino nano

-logging data module

-relay 8 ports

-bluetooth modul At-09, ble-4.0

-extension board nano v3.0

-czujniki temp. DS18B20 (3 kable) oraz podobny czujnik ale na 2 kable (nie wiedzialem ktore beda lepsze i kupilem oba typy aby sprobowac)



wstepnie podlaczylem, korzystajac z informacji jakie znalazlem w necie. probowalem przeprowadzic symulacje w THINKERCADzie ale w programie tym nie ma wielu komponentow ktore ja uzylem wiec bez sukcesu. dalsze eksperymenty wstrzymalem, obawiajac sie ze cos 'spale'.


jesli chodzi o podobne projekty i programowanie to znalazlem w necie cos takiego:

http://www.reuk.co.uk/wordpress/arduino-solar-water-heating-pump-controller-design-and-code/

https://thesolaruniverse.wordpress.com/2016/11/21/monitoring-temperatures-in-floor-heating-loops-with-an-arduino-with-data-display-on-a-3-5-tft-screen/

http://house4u.com.ua/articles/solar-controller/en/part11.php

http://www.instructables.com/id/2nd-Gen-Arduino-Hot-Water-Solar-Collector-Controll/

https://forum.arduino.cc/index.php?topic=70048.0

oraz odnosnie bluetooth

https://arduino.stackexchange.com/questions/19517/hc-05-bluetooth-module-inq-command-doesnt-work

wklejam te linki aby pokazac ze wiem co to google, tylko nie chce czegos skopiowac i uzyc a potem miec problem (po prostu jeszcze sie ucze).

pierwsze dwa sa chyba najlepsze.


skladajac to wszystko napisalem wstepnie cos takiego:


const int TANKSENSORT1 = A0;
const int TANKSENSORT2 = A1;
const int PANELSENSORT5 = A2;
const int STOVESENSORT3 = A3;
const int FLOORSENSORT4 = A4;

const int RELAYO1 = 3;
const int RELAYM2 = 4;
const int RELAYM3 = 5;
const int RELAYM4 = 6;
const int POMP2 = 7;
const int POMP3 = 8;
const int POMP4 = 9;

const int diffON = 6;
const int diffOFF = 3;

void setup(){
Serial.begin(9600);

pinMode(PANELSENSORT5, INPUT);
pinMode(TANKSENSORT1, INPUT);
pinMode(TANKSENSORT2, INPUT);
pinMode(STOVESENSORT3, INPUT);
pinMode(FLOORSENSORT4, INPUT);

pinMode(RELAYO1, OUTPUT);
digitalWrite(RELAYO1, LOW);
pinMode(RELAYM2, OUTPUT);
digitalWrite(RELAYM2, LOW);
pinMode(RELAYM3, OUTPUT);
digitalWrite(RELAYM3, LOW);
pinMode(RELAYM4, OUTPUT);
digitalWrite(RELAYM4, LOW);
pinMode(POMP2, OUTPUT);
digitalWrite(POMP2, LOW);
pinMode(POMP3, OUTPUT);
digitalWrite(POMP3, LOW);
pinMode(POMP4, OUTPUT);
digitalWrite(POMP4, LOW);


}

void loop(){
float solarPanelTemperature = ((analogRead(PANELSENSORT5) / 1024.0) * 5000)/10;
float hotWaterTankTemperature = ((analogRead(TANKSENSORT2) / 1024.0) * 5000)/10;
if(solarPanelTemperature > (hotWaterTankTemperature + diffON)){
digitalWrite(POMP2, HIGH);
do{
delay(250);
solarPanelTemperature = ((analogRead(PANELSENSORT5) / 1024.0) * 5000)/10;
hotWaterTankTemperature = ((analogRead(TANKSENSORT2) / 1024.0) * 5000)/10;
}while(solarPanelTemperature > (hotWaterTankTemperature + diffOFF));
digitalWrite(POMP2, LOW);

float stoveTemperature = ((analogRead(STOVESENSORT3) / 1024.0) * 5000)/10;
if(stoveTemperature > 55){ digitalWrite(POMP3, HIGH);
do{
delay(250);
stoveTemperature = ((analogRead(STOVESENSORT3) / 1024.0) * 5000)/10;
}while(stoveTemperature < (55));
digitalWrite(POMP3, LOW);
// musi byc dodane autoamtyczne wylaczenie pieca O1 jesli T3>55, a jesli T3<55 piec moze byc wlaczony

float hotwaterTemperature = ((analogRead(TANKSENSORT1) / 1024.0) * 5000)/10;
if(hotwaterTemperature > (60)){ digitalWrite(POMP4, HIGH);
do{
delay(250);
hotwaterTemperature = ((analogRead(TANKSENSORT1) / 1024.0) * 5000)/10;
}while(hotwaterTemperature < (60));
digitalWrite(POMP4, LOW);
// musi byc dodane autmatyczne sprawdzenie czy piec O1 lub kominek P3 nie pracuja.
// jesli ktores znich jest wlaczone (O1 lub P3) w/w funkcja nie moze byc wlaczona

// obsluga modulu bluetooth
// obsluga modulu logging data
// obsluga aplikacji a co za tym idzie wl/wyl pieca olejowego O1 (dodatkowa funkcja ustawienia zegara np. wlacz o 7 rano)
// przed wlaczeniem pieca lub kominka musi byc okreslony status co bedzie grzane (ciepla woda, grzejniki, podlogowka)
// mozliwosc przelaczenia na bierzaco (podczas pracy) pomiedzy M2, M3, M4(ciepla woda, grzejniki, podlogowka)
}
delay(250);
}


no i tu utknalem.

program po wprowadzieniu do THINKERCAD-a nie ruszyl (pod wlaczniki relay podstawilem diody aby pokazywaly mi ewentualne zmiany).

prosilbym o sugestie co do schematu podlaczenia jak i do kodu. (najlepiej z przykladem bo nadmiar informacji w necie prowadzi do chaosu)

wierze ze jest wielu poczatkujacych jak ja, ktorym ta wiedza tez sie moze przydac.

pozdrawiam


RE: sterownik do pieca olejowego, kominka z plaszczem wodnym, kolektora slonecznego. - kaczakat - 09-06-2018

Znajdź jakiś kurs i naucz się pisać jakiekolwiek działające programy. To nie jest do zrobienia używając w pętli delay(), nie używając w loop funkcji i procedur, będziesz się w tym gubił, program nie będzie reagował, będziesz pytał o każdą linijkę, za parę dni się zniechęcisz do programowania.  Nie wiem, na początek podłącz sobie jakiś czujnik temperatury do zbiornika czy solarów i wysyłaj na Thinkspeak przez Wifi/Internet. Pobaw się sterowaniem światła z BT telefonem i modułem HC05 wpiętym do Arduino, lub bezprzewodowo z ESP8266. Jak każdy z takich klocków opanujesz (jest ich kilkadziesiąt na początek, a kilkaset dla pełnego komfortu), bez delay, umiejąc zarządzać czasem procesora to możesz zacząć je łączyć w jeden projekt.
Kod:
if(stoveTemperature > 55){ digitalWrite(POMP3, HIGH);
do{
delay(250);
stoveTemperature = ((analogRead(STOVESENSORT3) / 1024.0) * 5000)/10;
}while(stoveTemperature < (55));
Jak tak to zrobisz to jakiś czujnik zatrzyma w tym miejscu Arduino i będzie czekał, aż podniesie się jakaś temperatura powyżej  progu. W tym czasie nie zadziała alarm włamania, powiadamianie SMS, wyświetlanie na ekranie, komunikacja BT, inna wyłączona/włączona wcześniej pompa pozostanie w takim stanie rozrywając zbiornik CWU lub powodując ucieczkę powietrza z hydrofora, zwierzaki w terrarium się usmażą lub zamarzną? A np. poleciał bezpiecznik i ta grzałka od stoveTemperature nie załączy się nigdy.
Przy instalacjach pobaw się w równoległe pomiary i akwizycję danych, sterowanie zostaw sobie na deser. Tak za parę lat. A jak już zrobisz to sterowanie to przy każdym takim elemencie zrób jakiś mechaniczny wyłącznik awaryjny (są np. bezpieczniki temperaturowe).