Skocz do zawarto┼Ťci

Sterownik do kontrolowania pieca olejowego, kominka z plaszczem wodnym, kolektora slonecznego POMOCY


eukaliptuss

Pomocna odpowied┼║

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.

https://www.forbot.pl/forum/upload_img/obrazki/IMG_5b1af7054f75c7417.png

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)

https://www.forbot.pl/forum/upload_img/obrazki/IMG_5b1af7bb729d75461.jpg

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

Link do komentarza
Share on other sites

C├│┼╝, poleg┼ée┼Ť, ale przynajmniej pr├│bowa┼ée┼Ť. Chwa┼éa.

Moim zdaniem nie otrzymasz ┼╝adnej warto┼Ťciowej pomocy opr├│cz jednej: marsz do szko┼éy. Wygl─ůdasz jak dziecko kt├│re pr├│buje zmajstrowa─ç na podw├│rku samoch├│d. Widzi ich pe┼éno na mie┼Ťcie wi─Öc maj─ůc blaszany pojemnik, kilka karton├│w po sokach, skrzynk─Ö na pomidory i 4 stare zimowe opony zabiera si─Ö do roboty. Na pocz─ůtku sz┼éo nie┼║le, uda┼éo si─Ö zbudowa─ç nawet jak─ů┼Ť bry┼é─Ö nadwozia ale gdy przysz┼éo do silnika (albo k├│┼é albo cho─çby pr├│by wej┼Ťcia do ┼Ťrodka) - utkn─Ö┼éo. Takich rzeczy nie robi si─Ö w ten spos├│b. Du┼╝y i wielofunkcyjny program, to nie jest proste po┼é─ůczenie kilku ma┼éych, przykro mi. Nie masz nawet aparatu poj─Öciowego by zrozumie─ç jak tego typu oprogramowanie si─Ö projektuje i uruchamia. Napisa┼ée┼Ť trzy blokuj─ůce si─Ö p─Ötelki wype┼énione delay'ami a chcesz by urz─ůdzenie jednocze┼Ťnie obs┼éugiwa┼éo Twoje komendy, po┼é─ůczenie radiowe i bie┼╝─ůce procesy przebiegaj─ůce w uk┼éadach sterowanych? To ju┼╝ jest ┼║le i nie da si─Ö tego popycha─ç przez dopisywanie kolejnych trywialnych pomys┼é├│w. Je┼Ťli nie znajdziesz gotowca (a chyba nie chcesz tego zrobi─ç w ten spos├│b), kt├│ry nota bene by┼éby tak skomplikowany, ┼╝e obecnie nie mia┼éby┼Ť szans go zrozumie─ç, to przed Tob─ů wiele miesi─Öcy nauki. Zacznij od prostych kurs├│w ┼╝eby zrozumie─ç jak dzia┼éaj─ů algorytmy regulacji i najwa┼╝niejsze: jak spowodowa─ç by Twoje Arduino robi┼éo wiele rzeczy na raz. Da┼ée┼Ť si─Ö nabra─ç na proste projekciki, cho─çby te kt├│re wskaza┼ée┼Ť, gdzie jedna prosta p─Ötelka za┼éatwia ca┼éo┼Ť─ç: pomiary, decyzje i ew. wy┼Ťwietlanie. Je┼╝eli swoje oczekiwania ograniczysz do czego┼Ť takiego, jest to w zasi─Ögu. Je┼Ťli do projektu chcesz w┼é─ůczy─ç modu┼éy radiowe, GSM czy BT, wykonywanie komend, zdalne zmiany stanu z jednoczesn─ů kontrol─ů proces├│w, b─Ödzie trudno bez dog┼é─Öbnego zrozumienia jak to w og├│le da si─Ö zrobi─ç jednocze┼Ťnie. I nie, kolejne dopisywane czy kopiowane z innych program├│w p─Ötelki nie zadzia┼éaj─ů. Nikt Ci nie jest w stanie pom├│c jednym zdaniem czy nawet kilkoma postami, bo Tw├│j problem nie sprowadza si─Ö do znalezienia jakiego┼Ť b┼é─Ödu w kodzie tylko do nauczenia Ci─Ö pisania zaawansowanych program├│w. Nie mo┼╝esz tego oczekiwa─ç od Forum, to Ty musisz zakasa─ç r─Ökawy i wzi─ů─ç si─Ö do roboty. A zacznij od rzeczy prostych: od problem├│w mrugania dwoma (a potem dziesi─Öcioma) diodami niezale┼╝nie, od napisania prostego sterowania dwoma osobnymi wyj┼Ťciami na podstawie dw├│ch mierzonych temperatur i dw├│ch r├│┼╝nych algorytm├│w, od wnikni─Öcia jak dzia┼éaj─ů modu┼éy radiowe i jak z nich korzysta─ç, napisz co┼Ť w┼éasnego co korzysta z bibliotek do takich modu┼é├│w, od wsp├│┼épracy z pami─Öci─ů EERPROM w kt├│rej trzymasz nastawy takiego sterownika, itd itp.. C├│┼╝, powodzenia. Mo┼╝emy tu odpowiada─ç na szczeg├│┼éowe pytania, ale nikt nie b─Ödzie robi┼é szk├│┼éki programowania.

Link do komentarza
Share on other sites

witam marku

mimo wszystko dzieki za sugestie.

bede probowal az do skutku a ze na razie nie zalezy mi na kontroli poprzez bluetooth i gsm (najpierw chcialbym aby system dzialal po wgraniu 'glownego' programu) moze bedzie prosciej.

jeszcze raz dzieki

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

no wiec troche juz mam.

na chwile obecna zrobilem kod w THINKERCAD-dzie i podczas symulacji dziala.

www.tinkercad.com/things/4rGpoGkX7am

sam kod rozbudowalem o obluge bluetooth (wlaczenie strefowe + on/off piec olejowy)

utknalem na module data logging (RTC) nano shield 8105.

chcialbym aby zegar mogl dac mi opcje ustawiania czasowego(dzien w tyg.+ czas trwania) wla/wyl pieca a poprzez karte sd miec dostep do statystyk poprzez bluetooth (ile czasu pracowaly pompy, temp. na panelu i kominku).

aplikacja na adroida jest do zrobienia poprzez appinventor.

www.ai2.appinventor.mit.edu

kod wyglada tak (prosze o wyrozumialosc, dzialam w arduino dopiero od kilku dni)

int value1 = 0;

int temp1 = 0;

int value2 = 0;

int temp2 = 0;

int value3 = 0;

int temp3 = 0;

int value4 = 0;

int temp4 = 0;

int button = 0;

int heatingrads = 0;

int heatingunderfoor = 0;

int heatingtank = 0;

int previous = 0;

int oilburner = 0;

int light = 0;

int Received = 0;

int light_state = 0;

int heatingtank_state = 0;

int oilburner_state = 0;

////////////////// 6 degrees for diffON and 3 degrees for diffOFF, these give hysteresis which prevents the pump switching on and off repeatedly/////////////////////////

const int diffON = 6;

const int diffOFF = 3;

void setup()
{ 
 Serial.begin(9600);
 pinMode(A0, INPUT);
 pinMode(A1, INPUT);
 pinMode(A2, INPUT);
 pinMode(A3, INPUT);
 pinMode(5, INPUT);
 pinMode(10, INPUT);
 pinMode(11, INPUT);
 pinMode(12, INPUT);
 pinMode(13, INPUT);
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 digitalWrite(10, HIGH);
 pinMode(heatingunderfoor,OUTPUT);
 pinMode(heatingtank,OUTPUT);
 pinMode(light,OUTPUT);
 pinMode(oilburner,OUTPUT);
}

void loop()
{
 value1 = analogRead(A0);
 temp1 = (value1 * 0.48828);
 value2 = analogRead(A1);
 temp2 = (value2 * 0.48828);
 value3 = analogRead(A2);
 temp3 = (value3 * 0.48828);
 value4 = analogRead(A3);
 temp4 = (value4 * 0.48828);
 oilburner = digitalRead(5);
 heatingrads = digitalRead(10);
 heatingunderfoor = digitalRead(11);
 heatingtank = digitalRead(12);
 button = digitalRead(13);
 light = digitalRead(6);


////////////////////bluetooth control (control by letters & numbers - 1,a,2,8,9 ////////////////////  
  if(Serial.available()>0)
{ 
   Received = Serial.read();

}
////////////////LIGHT - touch and go/////////////////////
if (light_state == 0 && Received == '1')
 {
   digitalWrite(light,HIGH);
   light_state=1;
   Received=0;  
 }
if (light_state ==1 && Received == '1')
 {
   digitalWrite(light,LOW);
   light_state=0;
   Received=0;
 }

////////////////heatingtank/////////////////////
if (heatingtank_state == 0 && Received == 'a')
 {
   digitalWrite(heatingtank,HIGH);
   heatingtank_state=1;
   Received=0;  
 }
if (heatingtank_state ==1 && Received == 'a')
 {
   digitalWrite(heatingtank,LOW);
   heatingtank_state=0;
   Received=0;
 }

////////////////oilburner////////////////////
if (oilburner_state == 0 && Received == '2')
 {
   digitalWrite(oilburner,HIGH);
   oilburner_state=1;
   Received=0;  
 }
if (oilburner_state ==1 && Received == '2')
 {
   digitalWrite(oilburner,LOW);
   oilburner_state=0;
   Received=0;
 }

////////////////heatingunderfoor/////////////////////
if (Received =='8'){
  digitalWrite(heatingunderfoor,HIGH);   
 }  
if (Received == '9'){
digitalWrite(heatingunderfoor,LOW);
}

///////////////////////set-up of temperatures//////////////////////

 if (temp3 > (temp1 + diffON)) {
   digitalWrite(2, HIGH);
 } 
 if  (temp3 < (temp1 + diffOFF)) {
   digitalWrite(2, LOW);
 } 
 if (temp2 > 110 && temp4 < 82) {
   digitalWrite(3, HIGH);
 } else {
   digitalWrite(3, LOW);
 }
 if (temp4 > 105) {
   digitalWrite(4, HIGH);
 } else {
   digitalWrite(4, LOW);
 }

 ///////////////////////////push button option////////////////////

 if (button == HIGH) {
   if (previous == 0) {
     digitalWrite(10, HIGH);
     digitalWrite(11, LOW);
     digitalWrite(12, LOW);
     previous = 1;
     delay(100); // Wait for 100 millisecond(s)
   } else {
     if (previous == 1) {
       digitalWrite(10, LOW);
       digitalWrite(11, HIGH);
       digitalWrite(12, LOW);
       previous = 2;
       delay(100); // Wait for 100 millisecond(s)
     } else {
       if (previous == 2) {
         digitalWrite(10, LOW);
         digitalWrite(11, LOW);
         digitalWrite(12, HIGH);
         previous = 3;
         delay(100); // Wait for 100 millisecond(s)
       } else {
         digitalWrite(10, HIGH);
         digitalWrite(11, HIGH);
         digitalWrite(12, HIGH);
         previous = 0;
         delay(100); // Wait for 100 millisecond(s)
       }
     }
   }
 }
}

wielkie dzieki za wszelka pomoc

pzdr

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.