Ří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, ...)
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, 21:07

Jestli to ted uz spravně chápu, tak podle koncentrace plynu se relátky zvyšují otáčky motoru jako je v digestoři? Musel bych k tomu sednout a popřemýšlet, ale teď se k tomu hned tak nedostanu. Jsem taky začátečník a z hlavy to nevymyslím.

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, 21:21

Ano,přesně tak.

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, 21:46

Máš uložené hodnoty pro porovnávání pevně v programu, nebo jsou nastavitelné a uložené v eeprom? Kód, který jsem sem dal je jen pro nastavování a porovnávací logika bude jen spínat a rozepínat pokud budou hodnoty z tlakoměru souhlasit s nastavenou hodnotou. Ve Tvém případě budeš potřebovat pro dvě relé čtyři hodnoty s danými rozestupy a ty porovnávat s výstupem čidla.

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, 22:22

Viděl bych porovnávání v hraničních hodnotách kdy jedno relé rozpojí a druhé sepne což by mělo navazovat vyřešit časovou prodlevou třeba delay() i když to není ideální, tak 10ms které se provedou jen někdy se dá použít.
Schématicky.
Vypínací bod ( vše vypnuto)
+ např. 10 jednotek
1. relé sepne
Tady si dosaď velikost kroku mezi body př. 40 jednotek
bod přepnutí 2.relé na 1. delay 10ms aby se relé nepotkaly.
+10 jednotek z 1.relé na 2. Opět delay 10ms

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 čer 2018, 17:17

Zatím pevně nastavené.
Prodlevu při spínání rele mám hardvérovou,takže na program spoléhat nemusím.
Jde jen o jednoduchou hysterezi s pevnýma hodnotama,dosazenýma do programu.

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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 07 čer 2018, 19:16

https://cz.mouser.com/productdetail/ams ... i7bFryU%3D
Tohle je příklad toho řadiče
Jinak ta hystereze je těch 10 jednotek v tý kostře stačí to zapsat do podmínek příkazu if()

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 » 10 čer 2018, 17:19

Takže hysterezi v tomto zadání jsem rozchodil a chodí vzorně.Díky
Nyní jsem rozšířil kaskádu o 2 rele,takže celkem 4 - každá jinou úroven výkonu.
Použil jsem i DHT22 senzory vlhkosti(venku 1,3 uvnitř),u kterých porovnávám rosný bod s venkovním čidlem a podle velikosti rozdílu rosného bodu se spínájí výkonové stupně.
Program už pracuje ale vřadit hysterezy je(nemožné),protože mohou být splněné více podmínek najednou(více senzorů).
Nyní mám hysterezy přez millis()-odečítání ze senzorů ale je to těžkopádné!
Je možno vřadit zpoždění mezi jednotlivými rychlostmi (rele), jen směrem od nejvyššího stupně k nejnižšímu?? Tj.zapnutí 4 nejvyšší rychlosti ihned bez prodlevy ale ze 4 stupně-prodleva 3min na 3 stupeň,prodleva 3 min 2 stupeň........??
Lze to uskutečnit třeba přez proměnnou pro ventilátor?

Takhle ty rychlosti bez potíží pracujou ale bez hystereze:

Kód: Vybrat vše


      if (( (dP - 2) > dP3 || (dP1 - 2) > dP3 || (dP2 - 2) > dP3 ) 
      {
        digitalWrite(R_1_IN, HIGH);   //1 rychlost při rozdílu rosného bodu větší než 2C h2-ložnice h1-koupelka h-kuchyň-(Paměť rosného bodu-  dP:kuchyn,dP1:koup,dP2:lož,dP3:venku)
        digitalWrite(R_2_IN, LOW);
        digitalWrite(R_3_IN, LOW);
        digitalWrite(R_4_IN, LOW);
        digitalWrite(R_1_OUT, HIGH);
        digitalWrite(R_2_OUT, LOW);
        digitalWrite(R_3_OUT, LOW);
        digitalWrite(R_4_OUT, LOW);
        state_Sfan = 1;
        state_Efan = 1;
      }
      if (( (dP - 4) > dP3 || (dP1 - 4) > dP3 || (dP2 - 4) > dP3) 
      {
        digitalWrite(R_1_IN, LOW);   //2 rychlost při rozdílu rosného bodu větší než 4C h2-ložnice h1-koupelka h-kuchyň-(Paměť rosného bodu-dP:kuchyn,dP1:koup,dP2:lož,dP3:venku)
        digitalWrite(R_2_IN, HIGH);
        digitalWrite(R_3_IN, LOW);
        digitalWrite(R_4_IN, LOW);
        digitalWrite(R_1_OUT, LOW);
        digitalWrite(R_2_OUT, HIGH);
        digitalWrite(R_3_OUT, LOW);
        digitalWrite(R_4_OUT, LOW);
        state_Sfan = 2;
        state_Efan = 2;
      }
      if (( (dP - 6) > dP3 || (dP1 - 6) > dP3 || (dP2 - 6) > dP3) 
      {
        digitalWrite(R_1_IN, LOW);   //3 rychlost při rozdílu rosného bodu větší než 6C h2-ložnice h1-koupelka h-kuchyň-(Paměť rosného bodu-dP:kuchyn,dP1:koup,dP2:lož,dP3:venku)
        digitalWrite(R_2_IN, LOW);
        digitalWrite(R_3_IN, HIGH);
        digitalWrite(R_4_IN, LOW);
        digitalWrite(R_1_OUT, LOW);
        digitalWrite(R_2_OUT, LOW);
        digitalWrite(R_3_OUT, HIGH);
        digitalWrite(R_4_OUT, LOW);
        state_Sfan = 3;
        state_Efan = 3;
      }
      if (( (dP - 10)  > dP3 || (dP - 10) > dP3 || (dP - 10) > dP3) 
      {
        digitalWrite(R_1_IN, LOW);     //4 rychlost při rozdílu rosného bodu větší než 10C h2-ložnice h1-koupelka h-kuchyň-(Paměť rosného bodu-   dP:kuchyn,dP1:koup,dP2:lož,dP3:venku)
        digitalWrite(R_2_IN, LOW);
        digitalWrite(R_3_IN, LOW);
        digitalWrite(R_4_IN, HIGH);
        digitalWrite(R_1_OUT, LOW);
        digitalWrite(R_2_OUT, LOW);
        digitalWrite(R_3_OUT, LOW);
        digitalWrite(R_4_OUT, HIGH);
        state_Sfan = 4;
        state_Efan = 4;
      }


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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 10 čer 2018, 18:55

Pracují bez hystereze,protože tam není vytvořena. Hystereze znamená vytvořit dvě hranice pro každou změnu stavu ventilátoru. tzn když ventilátor přidá při 2 jednotkách snížit rychlost může při 1,5 např. takže těch podíněných přechodů to vyžaduje dvakrát tolik. jedna podmínka pro sepnutí a druhá pro vypnutí a to za různých hodnot.

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 » 10 čer 2018, 20:00

To ano,samozdřejmě.
Hystereze tam není,protože podmínky pro porovnání senzorů se mohou slučovat.
Takže mohly by být platné i 3 podmínky najednou.
Šlo by možná pomoci přiřazením vyšší priority,k jednotlivým podmínkám. :roll:

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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 10 čer 2018, 21:21

Jsou to tři místnosti na jeden ventilátor? Pak by možná stálo za pokus udělat průměr snímaných hodnot, protože tohle jde asi řešit těžko. Já třeba budu mít čidla vlhkosti na zahradě a pokud nebudu mít oddělené zavlažovací okruhy k odpovídajícím čidlům vlhkosti nebo jedno čidlo pro tři okruhy, je jasné, že někde můžu mít sucho a jinde přelito. Tohle tedy taky exaktně nevyřešíš, ale jde to podle naměřených hodnot vyřešit uspokojivě. Sleduj tedy nějaký čes která místnost dává jaké hodnoty a zahrnout ty koeficienty do zprůměrování měřených hodnot.

Odpovědět

Kdo je online

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