Řízení ventilace-nelze zkompilovat

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od gilhad » 06 kvě 2018, 23:01

Tady pisou, ze DTH22 potrebuje az 2s na inicializaci a nacteni dat - to ale neznamena, ze musis cekat v delay(2000) a nic nedelat. Klidne mezitim muzes delat cokoli jineho a data si nacist az budou pripravena.
http://phgame.cz/PHGame_serialy/serialy ... zor-dht-22

Tady je datasheet, kde pisou, ze komunikace sama trva 5ms
http://www.adafruit.com/datasheets/DHT22.pdf

takze klidne muzes nahodit vsechna DTH naraz, pak si zobrazit menu, precist si DS18B20 cidla, zareagovat na menu a az utecou 2 sec, tak nacist hodnoty z kazdeho DTH22, zase mu rict at meri znova, zobrazit hodnoty, reagovat na vstup od uzivatele, ... po delsi dobe si zase precist ty nestastny DTH22 atd atd ...

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 07 kvě 2018, 07:09

Ano.
Delay nepoužívám nikde,jen previousMillis,kdy se program nezastavuje.Ale přes to,program dojede až k DHT a čeká na všechna čidla a při tom se nedá pohybovat v menu.Výsledek je že reakce na joystik trvá přez 1 s

Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od gilhad » 07 kvě 2018, 10:58

Pak je otazka, jak to DHT ovladas, jestli ta knihovna, kterou jsi pouzil, umoznuje poslat inicializaci zvlast a zvlast cist vysledek, nebo jestli to spoji do jedine operace, behem niz trapne ceka na vysledek a blokuje rozumne pouzivani
(jako to treba dela analogRead() ze zakladnich funkci - taky posle inicializaci cteni hodnoty z pinu a trapne ceka na vysledek, zatimco by arduino klidne mohlo pracovat, nez se ta analogova hodnota nacte a pak ji jen rychle precist)

Pripadne zda ta knihovna neumoznuje oboji pristup nejak (nebo pokud sis to psal sam, tak jak to cteni delas).

Pokud ta knihovna umoznuje jen blokujici cteni (hanba, fuj), tak mas tri zakladni moznosti:
- pouzit lepsi knihovnu
- opravit tu stavajici
- napsat si to cele sam

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 22 kvě 2018, 18:59

Ahoj
Zase dotaz na Dht22 senzor.
Mám k jednomu čidlu stíněný kabel asi 16m,u senzoru 4k7 na signální vodič a ještě blokující kond.100n.
I tak se mi občas stane že vypadne jeden cyklus spojení a na displeji se zobrazí (nan).
To by vůbec nevadilo,ovšem při tom krátkém výpadku,se zastaví i ventilátory!
Lze čidlu domluvit aby při takovém výpadku použilo předešlá data bez zastavení ventilátoru??
Díky

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 22 kvě 2018, 20:21

Tak jsi odpovím.
Našel jsem v DHT knihovně pomoc "isnan",která přes proměnnou lze zpětně vyvolat.
Tak to nějak zkusím zapsat.
:oops:

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 03 čer 2018, 15:49

Ahoj
Mám ještě prosbu o (nakopnutí).
Jak by šla zavézt hystereze,u proměnného vstupu CO2 a přepínání výkonu pomocí 4x relé? :?

Kód: Vybrat vše

        else if(CO2 > CO2_min && CO2 < CO2_max )
      {
        digitalWrite(R_1_IN, HIGH);
        digitalWrite(R_2_IN, LOW);
        digitalWrite(R_1_OUT, HIGH);
        digitalWrite(R_2_OUT, LOW);
        state_Sfan = 1;
        state_Efan = 1;
      }
       
            
      else if ( CO2 > CO2_max )
      {
        digitalWrite(R_1_IN, LOW);
        digitalWrite(R_2_IN, HIGH);
        digitalWrite(R_1_OUT, LOW);
        digitalWrite(R_2_OUT, HIGH);
        state_Sfan = 2;
        state_Efan = 2;


rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 03 čer 2018, 22:07

Myslíš určitou minimální hysterezi,která nebude vždy na stejných hodnotách? Tedy rozdíl mezi min a max třeba 10 jednotek, ale s možností posouvat ji škálou?

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 05 čer 2018, 20:13

Ahoj
Ano,přesně tak,
Malá hystereze 10 PPm CO2,aby nedocházelo k neustálemu cvakání rele a zatěžování ventilátoru,
U jednoho rele to není problém,ale u 2 a více rele které se zapínají a vypínají v návaznosti si nevím rady.
Zatím testuju s pevnýma hodnotama dosazenýma místo CO2-Min a CO2-max.Jen mě nenapadá jak hysterezy vřadit mezi 2 rele.
Díky

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 06 čer 2018, 01:23

Něco podobného jsem řešil.

Kód: Vybrat vše

//--------------------------------------------------------------
void pressSetup() {
  byte HiPress=EEPROM.read(11); //promenne pro nastaveni tlaku
  byte LoPress=EEPROM.read(10);
  switch(Set) {
    case 1:
    HiPress=(EEPROM.read(11)+krok); //Inkrementace od puvodni hodnoty
    if(HiPress > 50) { //nastaveni horni meze
      HiPress=50;
      krok--;
    }
    else if(HiPress < LoPress+10) { // vymezeni minimalni hystereze 1 bar
      HiPress=(LoPress+10);
      krok++;
    }
    if (EnterFlag == true) {      //po stisku enter
      EEPROM.update(11, HiPress); // uloz hodnotu
      Set++;                      //prejdi na dalsi polozku
    }
    break;
    case 2:
    LoPress=(EEPROM.read(10)+krok); //inkrementace puvodni hodnoty
    if(LoPress < 20) { //nastaveni spodni meze
      LoPress=20;
      krok++;
    }
    else if(LoPress > HiPress-10) { // minimalni hystereze 1 bar
      LoPress=(HiPress-10);
      krok--;
    }
    if (EnterFlag == true) { //po stisku enter
      EEPROM.update(10, LoPress); //uloz hodnotu
      Set++; //prejdi na default
    }
    break;
    default: // vynulovani pro dalsi cyklus nastaveni
    krok=0;
    Set=1;
    mod=0; // a navrat do hlavniho programu
Je to snad srozumitelně okomentované. V mém případě jde o nastavování hodnot podle kterých má spínat čerpadlo. Při tom je potřeba,aby nastavované hodnoty zůstaly v povolených mezích 2-5bar,aby rozdíl mezi horní a dolní hodnotou byl min 1bar(hystereze),ale zároveň ta hystereze nebyla v pevně stanoveném místě. Když tedy s horní hodnotou ustoupím nahoru,spodní se k ní zase může přiblížit až na 1bar,pokud pak chci s horní dolů musím nejdřív snížit spodní na rodíl větší než 1bar. Chtělo by to ještě kdybys popsal jestli jde o ukládání přednastavených hodnot,nebo přímo práci s měřenými hodnotami. Co se měří je jedno,ale potřeboval bych vědět co porovnáváš a co za jakých okolností spínáš a vypínáš.Víc přibliž co to má dělat.

Lubomir
Příspěvky: 23
Registrován: 24 bře 2018, 14:57
Reputation: 0

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od Lubomir » 06 čer 2018, 20:24

Ahoj
To je pěkně a jednoduše napsané,smekám.
Zkoušel jsem různé (mrtvé) body,které cvakání spíše zvětšilo,ale takto nee.
Samozdřejmě je nejdůležitější aby se neseply obě relé najednou-to se ventilátoru fakt nelíbí.
Spínám dvě rychlosti dvou ventilátoru(každá rychkost jedním relé),pro rekuperační jednotku.Umí 4 rychlosti ale zatím zkouším jen 2 abych se v tom neztratil.
Je to zatím na základě čidla CO2.Větší hodnota CO2 -vyšší rychlost.
Později přidám ovládání i na základě čidla vlhkosti DHT22.
Problém je že tu hysterezi musím dostat (mezi) relé + dolní a horní meze.
Díky!

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů