Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je pát lis 16, 2018 7:48 pm


Ukladani prebytku "Drama"

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Další

Ukladani prebytku "Drama"

Příspěvekod rimi » pon čer 11, 2012 10:31 am

Rizeni boileru podle Dramy, doplneno o LCD a mereni teploty, zobrazuji se Wh odeslane do boileru.

Display (cim vice radku tim lepe), ja pouzivam 4 radky 20 znaku, maji je treba tu:
http://aukro.cz/lcd-ctyrradkove-20x4-lc ... 98912.html
nebo tu:
http://aukro.cz/display-lcd-displej-200 ... 73803.html

zapojeno podle prikladu:
http://arduino.cc/en/Tutorial/LiquidCrystal
v prikladu neni podsviceni LED, to jsou posledni 2 piny

a pak se jeste musi pres lcd.begin rict, jak velky je displej, v mem pripade
lcd.begin(20,4);
(s pripojenim LCD me navedl prodejce, fungujenaprosto bez potizi)

teplotni cidla trebas tahle (jde to i bez nich):
http://www.ges.cz/cz/cidlo-teploty-ds18 ... 00306.html

Dale se musi stahnout a rozbalit knihovny OneWire a DallasTemperature, stahoval jsem nejake neaktualni a hazelo to chyby, nakonec jsem pouzil spravne a ok.

Zatim neni uchozen modbus ("nekdo" musi natahnout kabel), tak pouzivam delic se zenerkou (priblizne hodnoty pro 24V), aby se z napeti 18 - 32 stalo 0-5V, no ten AD prevodnik arduina neni moc stabilni, skace to i o 0,2V:

plus
|
zenerka na 18V
|
odpor 4k7
|
odsud drat k arduinu
|
odpor 2k7
|
spolecna zem



Tu je aktualni kod:
Kód: Vybrat vše
//knihovny a inicializace pro teplomery
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

//display
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int analogPin           = 3;  // pin na kterem merime napeti na baterii
float targetVoltage     = 29; // hodnota ciloveho napeti
int targetPinUp         = 50;//pin zmena ciloveho napeti nahoru
int targetPinDown       = 52;//pin zmena ciloveho napeti dolu
float targetVoltageStep = 0.1;//skok pro zmenu ciloveho napeti
float minVoltage        = 28; // minimalni hodnota napeti, pri ktere se vypina PWM
float analogVoltage     = 0;  // hodnota na pinu analogPin
int pwmPin              = 13; // pin na kterem vyrabime PWM signal

float analogOffset      = 18.67;//zacatek rozsahu - posunute zenerkou
float analogRange       = 14.1;//mereny rozsah (m)

float diffMax           = 0.07; // maximalni odchylka od ciloveho napeti
byte pwmDuty            = 0; // kolik % PWM cyklu bude rele zapnuto
byte pwmStepUp          = 2; // minimalni zmena skoku PWM nahoru
byte pwmStepDown        = 4; // minimalni zmena skoku PWM dolu
int pwmMax              = 100; // maximalni povoleny vykon v %
int pwmFreq             = 50; // frekvence PWM - maximalne 100Hz!
int pwmCycle            = 1; // cas v sekundach mezi zmenou PWM duty
int sumTime             = 0; // celkova delka PWM cyklu v ms
int pwmLength           = 0; // delka jednoho cyklu v milisekundach
int tempDelay           = 10;//kolik cyklu se nevycita teplota (zdrzuje)
int loadPower           = 1200; // vykon zateze W pro vypocet akumulovane energie ve Wh
float loadTime;//prubezne nacitani casu ON v milisekundach pro zobrazeni Wh
int j;//pomocna promena pro pocitani cyklu
int k; //pro teplotu, neumim zaokrouhleni jinak

// funkce se provede po startu
void setup() {
  lcd.begin(20, 4);
  sensors.begin();

  // nastaveni digitalniho pinu jako vystup
  pinMode(pwmPin, OUTPUT);
  pinMode(targetPinUp, INPUT);
  pinMode(targetPinDown, INPUT);
  // par odberu pro odstraneni hlouposti;
  analogRead(analogPin);
  analogRead(analogPin);
  delay(500);
  analogRead(analogPin);
  delay(500);
  analogRead(analogPin);
}

void loop() {
  //zmena ciloveho napeti tlacitky
  if (digitalRead(targetPinUp) == HIGH){       
    targetVoltage +=targetVoltageStep; 
  }
  else if(digitalRead(targetPinDown) == HIGH){
    targetVoltage -=targetVoltageStep; 
  }

  // nacteme aktualni napeti (poradi clenu dela bordel, asi pocita na malo desetinych mist?)
  analogVoltage= (analogRead(analogPin) * analogRange)/1024+analogOffset;
  // pokud je rozdil napeti skutecneho a ciloveho
  // ve stanovene mezi, zvysime vykon, jinak snizujeme
  if (targetVoltage - analogVoltage < diffMax)
  {
    if (pwmDuty+pwmStepUp > pwmMax)
    {
      pwmDuty=pwmMax;
    }
    else
    {
      pwmDuty=pwmDuty+pwmStepUp;
    }
  }
  else
  {
    if (pwmDuty-pwmStepDown < 0)
    {
      pwmDuty=0;
    }
    else
    {
      pwmDuty=pwmDuty-pwmStepDown;
    }
  }
  // skokove stazeni vykonu, pokud dojde k poklesu napeti 
  if ( analogVoltage < minVoltage)
  {
    pwmDuty=0;

  }

  lcd.setCursor(0, 0);
  lcd.print("Bat");
  if(analogVoltage > analogOffset + 0.1){
    lcd.print(analogVoltage, 1);     
  }
  else{
    lcd.print("--.-"); 
  } 
  lcd.print("V ");

  lcd.setCursor(10, 0);
  lcd.print("On:");
  lcd.print(targetVoltage, 1);   
  lcd.print("V ");

  lcd.setCursor(0, 1);
  lcd.print("Load ");
  lcd.print(pwmDuty); 
  lcd.print("% ");

  //cteni teploty jednou za deset cyklu (zdrzuje)
  j++;
  if(j==tempDelay){
    j=0;
    sensors.requestTemperatures();
    lcd.setCursor(0, 2);
    lcd.print("T1:");
    //lcd.setCursor(3, 2);
    lcd.print(sensors.getTempCByIndex(0),1);
    lcd.print((char)223);

    lcd.setCursor(10, 2);
    lcd.print("T2:");
    //lcd.setCursor(13, 2);
    lcd.print(sensors.getTempCByIndex(1),1); 
    lcd.print((char)223); 

    lcd.setCursor(10, 1);
    lcd.print("Wh:");
    //bez pouziti promene typu int a pretypovani primo ve vysledku obcas lezly zaporne hodnoty ??
    k = ( loadTime / 1000 * loadPower / 3600);
    lcd.print(k);
    //loadTime=0;
  }
  // Vlastni PWM cyklus
  sumTime = 0;
  pwmLength = 1000 / pwmFreq;


  while ( sumTime < pwmCycle * 1000)
  {
    if(pwmDuty == 100){
      digitalWrite(pwmPin, HIGH);
      sumTime=pwmCycle * 1000;
      loadTime +=pwmCycle * 1000;
      delay(pwmCycle * 1000);
    }
    else if (pwmDuty > 0)
    {
      sumTime=sumTime+pwmLength+pwmLength*(100-pwmDuty)/pwmDuty;
      digitalWrite(pwmPin, HIGH);
      loadTime +=pwmLength;
      delay(pwmLength);
      digitalWrite(pwmPin, LOW);
      delay(pwmLength*(100-pwmDuty)/pwmDuty);
    }
    else
    {
      digitalWrite(pwmPin, LOW);
      sumTime=pwmCycle * 1000;
      delay(pwmCycle * 1000);
    } 

  }
}
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » ned čer 17, 2012 5:04 pm

Dovolim si odpovedet sem, at nekonim Dramuv Kokonin:

luge píše:Ahoj.
Ako to beží? :?: Som na tom asi tak ako PalelR.Uvítal by som možnosť hotového arduina,že to len zapojím na vstupy a výstupy a nech to fachčí.Vedel by to poslať niekto už naprogramované?Čoskoro pripojím ďalšie panely a prebytky chcem do bojlera.


Cau.
Beha vyborne, za posledni 3 dny cca 6kW, coz u drazicke 120 udelalo asi 50 stupnu (jeste jsem nezapojil cidlo), takze vcera jsem slavnostne odstavil plynovy prutokac, kteremu je boiler predrazeny (preci jen v zamracene dny neni nic navic).
Na rozdil od Dramy to nemuzu poustet rucne, v dobe "Absorption" ci "Float" byvam v praci, takze jsem cilove napeti nastavil na 29, a v MS TS posunul cilove napeti baterek na 29,5, takze se nikdy ani Absorption nespousti (pouzivam NiCD).

A co se tyce arduina, nemas se ceho bat, kdyztak se podivej sem, Filip to tam ma hezky popsane:
http://hw.mypower.cz/loggers:simple:0-1
instalaci SW se venuji bodyu 1-4

Aplikace otevre neco jako poznamkovy blok...kod tam vlozis stylem ctrl-c ctrl-v, je to jednoduche, pokud by fakt neco neslo, bydlim "kousek" od Slovenska nebo to muzem spachat za pomoci posty.

Pokud vyjdou na tohle vyhrazene penize, kup rovnou verzi mega:
http://shop.mypower.cz/arduino-mega-256 ... tforma-140
Zvladas neco zapajet? Pokud ano, kup i display, preci jen je krasa pozorovat, co se deje (na kolik procent to bezi, kolik uz nateklo do boileru), jinak totiz musis mit pripojene arduino pres USB ke kompu.
Je toho spousta co doplnovat, trebas ted placam logovani dat na kartu a pokud zvladnes program tam nahrat sam, da se cokoli v budoucnu dodelat presne na miru "na dalku".
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod luge » ned čer 17, 2012 10:53 pm

rimi píše:Dovolim si odpovedet sem, at nekonim Dramuv Kokonin:

luge píše:Ahoj.
Ako to beží? :?: Som na tom asi tak ako PalelR.Uvítal by som možnosť hotového arduina,že to len zapojím na vstupy a výstupy a nech to fachčí.Vedel by to poslať niekto už naprogramované?Čoskoro pripojím ďalšie panely a prebytky chcem do bojlera.


Cau.
Beha vyborne, za posledni 3 dny cca 6kW, coz u drazicke 120 udelalo asi 50 stupnu (jeste jsem nezapojil cidlo), takze vcera jsem slavnostne odstavil plynovy prutokac, kteremu je boiler predrazeny (preci jen v zamracene dny neni nic navic).
Na rozdil od Dramy to nemuzu poustet rucne, v dobe "Absorption" ci "Float" byvam v praci, takze jsem cilove napeti nastavil na 29, a v MS TS posunul cilove napeti baterek na 29,5, takze se nikdy ani Absorption nespousti (pouzivam NiCD).

Presne tak isto pred plynakom mam bojler aj ja.
Dobre tomu rozumiem,arduino stráži spínacie a rozpínacie napetie baterie?Keď dosiahne 29 tak ssr relé pripojí bojler?Pri akom napetí bojler odpojí?Ak ano tak ma napadá aj iné riešenie. ;)
luge
 
Příspěvky: 523
Registrován: ned lis 13, 2011 5:52 pm
Bydliště: SK
Reputation: 1

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » pon čer 18, 2012 7:39 am

Napeti se daji jakkoli nastavit primo v zahlavi souboru:
float targetVoltage = 29; // hodnota ciloveho napeti
float diffMax = 0.07; // maximalni odchylka od ciloveho napeti

No to slovo pripoji neni uplne presne, pripoji trebas jen jedno procento zateze, mrkni sem:
http://cs.wikipedia.org/wiki/Pulzn%C4%9 ... 1_modulace
Jak to vypadalov so a ne (vykon panelu 1,6, zatez 1,2 kW), meritko jsou procenta pripnuti boileru, vzorkovani co tri minuty:
Obrázek
ty zuby je vysavac, rychlovarna a tak. Pokud to pripojis nejakym vypinacem rovnou, zbytek musi dodat baterky...
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod luge » pon čer 18, 2012 8:48 pm

rimi píše:Napeti se daji jakkoli nastavit primo v zahlavi souboru:
float targetVoltage = 29; // hodnota ciloveho napeti
float diffMax = 0.07; // maximalni odchylka od ciloveho napeti

No to slovo pripoji neni uplne presne, pripoji trebas jen jedno procento zateze, mrkni sem:
http://cs.wikipedia.org/wiki/Pulzn%C4%9 ... 1_modulace
Jak to vypadalov so a ne (vykon panelu 1,6, zatez 1,2 kW), meritko jsou procenta pripnuti boileru, vzorkovani co tri minuty:
Obrázek
ty zuby je vysavac, rychlovarna a tak. Pokud to pripojis nejakym vypinacem rovnou, zbytek musi dodat baterky...

Teraz mi je to jasné.Nejak som si neuvedomil že je využívaná PWM.Čo sa týka NF elkroniky nemám závažný problém,ale programovanie v PC a podobne to jednoducho neviem.
luge
 
Příspěvky: 523
Registrován: ned lis 13, 2011 5:52 pm
Bydliště: SK
Reputation: 1

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » pon čer 18, 2012 9:03 pm

Kup to arduino, at se pohnem...
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod luge » pon čer 18, 2012 9:47 pm

rimi píše:Kup to arduino, at se pohnem...

:yes: Tak ale teraz mi je to ozaj jasné.Navštívim obchod s PC komponentami.Čiže Arduino Mega 2560 plus displej.
luge
 
Příspěvky: 523
Registrován: ned lis 13, 2011 5:52 pm
Bydliště: SK
Reputation: 1

Re: Ukladani prebytku "Drama"

Příspěvekod prochazka85 » pát čer 22, 2012 10:05 am

tak arduino mam objednane, v podstate po prostudovani vsech vlaken je mi tak nejak jasne zapojeni toho arduina a displeye, atd, co jsem zatim nepochopil uplne presne jake je zapojeni SSR rele, jasny z jedne strany do nej jde signal PWM z arduina ale jak vypada schema na silove strane.
Neslo by prosim nejake jednoduche schematko?
Dekuji
prochazka85
 
Příspěvky: 221
Registrován: ned kvě 20, 2012 8:20 pm
Reputation: 4

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » pát čer 22, 2012 12:28 pm

prochazka85 píše:tak arduino mam objednane, v podstate po prostudovani vsech vlaken je mi tak nejak jasne zapojeni toho arduina a displeye, atd, co jsem zatim nepochopil uplne presne jake je zapojeni SSR rele, jasny z jedne strany do nej jde signal PWM z arduina ale jak vypada schema na silove strane.
Neslo by prosim nejake jednoduche schematko?
Dekuji

slo ;)
Obrázek
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod prochazka85 » pát čer 22, 2012 3:06 pm

na zaklade dostupnych informaci k tomu tematu jsem se pokusil sestrojit kompletni schema zapojeni ukladani prebytku ala "drama".

pokud to je spravne pokusim se to sestrojit a dukladne to zdokumentuji
aby vznikul nejaky uceleny projekt k ukladani prebytku ktery zvladne realizovat
i solarnik zacatecnik :)
Naposledy upravil prochazka85 dne sob čer 23, 2012 7:13 am, celkově upraveno 2
prochazka85
 
Příspěvky: 221
Registrován: ned kvě 20, 2012 8:20 pm
Reputation: 4

Re: Ukladani prebytku "Drama"

Příspěvekod luge » pát čer 22, 2012 8:54 pm

prochazka85 píše:na zaklade dostupnych informaci k tomu tematu jsem se pokusil sestrojit kompletni schema zapojeni ukladani prebytku ala "drama"

pokud to je spravne pokusim se to sestrojit a dukladne to zdokumentuji
aby vznikul nejaky uceleny projekt k ukladani prebytku ktery zvladne realizovat
i solarnik zacatecnik :)

Super :yes: .Už sa teším.To teplotné čidlo je pre akumulátory?
luge
 
Příspěvky: 523
Registrován: ned lis 13, 2011 5:52 pm
Bydliště: SK
Reputation: 1

Re: Ukladani prebytku "Drama"

Příspěvekod prochazka85 » pát čer 22, 2012 9:13 pm

to by melo byt na teplotu vody v bojleru
prochazka85
 
Příspěvky: 221
Registrován: ned kvě 20, 2012 8:20 pm
Reputation: 4

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » pát čer 22, 2012 9:40 pm

ten delic je myslen nejak takto:
Obrázek
zem je stale spolecna. Pokud by nekomu zalezelo na teplotni stabilite napeti, bylo by lepsi poskladat 3 zenerky po 5-6 voltech.

Jo, primarne na teplotu vody. Ty cidla se stosuji na sebe (paralelne), urcite 10 jich lze zapojit, do systemu se pak hlasi cisly, jde udelat, aby na poslednim radku zobrazoval stridave vsechny "zaevidovane" nebo vlastne cokoli cloveka napadne, tusim, ze Drama tak ma resene to mereni v podkrovi , obyvaku a .....

To rozmisteni vyvodu bych nebral jako dogma, muze se to dost posunout trebas diky ethernet shieldu, ja to trebas aktualne zapojil takto:
//presun kvuli eth. shildu
// 2 > 6
//4 > 7
a prislusna zmena v programu se provede touto zmenou:
LiquidCrystal lcd(12, 11, 5, 7, 3, 6);
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod prochazka85 » sob čer 23, 2012 7:12 am

dekuji za pripominky, zde je aktualizovane schema
Výkres1.png
prochazka85
 
Příspěvky: 221
Registrován: ned kvě 20, 2012 8:20 pm
Reputation: 4

Re: Ukladani prebytku "Drama"

Příspěvekod jara » ned říj 28, 2012 5:43 pm

Tak jak to bezi? Asi to budu delat taky, az dokoncim instalaci FVE. Dalo by se to pouzit na prvoz elektrickeho primotopu, akorat misto bojleru bude promotop? Takze by se v postate zapnul, jen kdyz by byly probytky.
Panely 2,5 Kw ,regulator PCM 8048,baterie 720 Ah, system 24v, menic 5000W
jara
 
Příspěvky: 166
Registrován: úte zář 11, 2012 10:59 pm
Reputation: 0

Re: Ukladani prebytku "Drama"

Příspěvekod luge » pon říj 29, 2012 9:12 pm

jara píše:Tak jak to bezi? Asi to budu delat taky, az dokoncim instalaci FVE. Dalo by se to pouzit na prvoz elektrickeho primotopu, akorat misto bojleru bude promotop? Takze by se v postate zapnul, jen kdyz by byly probytky.

Ahoj.
Primotop môžeš zapojiť ale taký bez ventilátora.

Dnes som zapojil túto aplikáciu.Komponenty som objednával z hobbykingu.
Ďakujem dramovi a ostatným za info v tejto téme a tiež jaríkovi za upravu a rozchodenie arduina. :yes:
Zatial som to testoval na žiarovke,Je to celkom pekný stroboskop.Uvidíme zajtra u nás sa má oblačnosť roztrhať.

P1030477.JPG
P1030487.JPG
luge
 
Příspěvky: 523
Registrován: ned lis 13, 2011 5:52 pm
Bydliště: SK
Reputation: 1

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » pon říj 29, 2012 11:22 pm

Perfektni, gratulace.
Jsem zvedavy, kolik za den natlacis kW, mi se nejvic zadarilo 2, prumer v hezke dny 1.5, coz pro 3 lidi uplne nestaci, uz dumame nad fototermikou, snad kdyby se povedlo:
http://www.hnutiduha.cz/aktualne/senato ... energetiku
bylo by to prima
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Re: Ukladani prebytku "Drama"

Příspěvekod rob.brno » úte říj 30, 2012 9:43 am

rimi píše:http://www.hnutiduha.cz/aktualne/senatori-schvalili-pokracovani-zelene-usporam-ktere-pomuze-promenit-ceskou-energetiku
bylo by to prima


Já jsem před časem(měsíc) četl o navrhovaných podmínkách ZU II. Byl jsem zklamaný, pokud se návrh nezměnil, tak stát chce "dotovat" levnými půjčkami úsporná opatření, tedy nic pro ty co mají hotovost.
Spíše mi to přišlo jako, že se stát chce zařadit do zástupu bank a na ovčanovi taky nějaký ten úrok vyždímat.
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 9

Re: Ukladani prebytku "Drama"

Příspěvekod 007ToMMaS » stř úno 20, 2013 7:18 pm

Tak dnes som to ako tak pozapájal na skúšobnej doske a fakčí to super :) Len neviem prečo nezobrazuje mi teplotu na displeji :( Teplotné čidlo treba pripojiť na PIN1 ak dobre čítam nie? ďakujem
007ToMMaS
 
Příspěvky: 848
Registrován: sob zář 15, 2012 7:53 pm
Reputation: 10

Re: Ukladani prebytku "Drama"

Příspěvekod rimi » stř úno 20, 2013 8:02 pm

007ToMMaS píše:Tak dnes som to ako tak pozapájal na skúšobnej doske a fakčí to super :) Len neviem prečo nezobrazuje mi teplotu na displeji :( Teplotné čidlo treba pripojiť na PIN1 ak dobre čítam nie? ďakujem


na ktery pin se rika tu:
#define ONE_WIRE_BUS 7

takze 7
rimi
 
Příspěvky: 299
Registrován: čtv říj 13, 2011 9:45 am
Bydliště: Příbor
Reputation: 6

Další

Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

cron
Reputation System ©'