Ří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, ...)
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 » 11 čer 2018, 17:49

Přesně tak,3x čitlo a dva ventilátory jedoucí spolu.
Rekuperační jednotka pro dům ma 2 ventilátory ale spínání je společné.
Jen při odmražování jeden ventilátor stojí a druhý jede.
To je ale jednoduchá logika v programu.
Proto mě ještě napadla varianta spoždění při snižování rychlostních stupnů.
Ale jak to napsat?
Dají se takto řídit proměnné?

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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 11 čer 2018, 17:50

Ještě mne napadlo, že vzhledem k tomu, že to bude asi nějaká vzduchotechnika, která pokud ji manuálně zapneš, tak běží na minimální rychlost? Jestli ano možná by bylo dobré dát po jednom čidle CO2 a to DHT do odtahu ať to měří tam, kde je smíchaný vzduch ze všech mistností. Pak se to nebude hádat. Zvýší se (CO2 || asi vlhkost) = vyšší rychlost ventilátoru.

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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 11 čer 2018, 17:55

Jinak pokud jde o časové rozestupy. Je jednodušší nastavit aby čidla měřila jednou třeba za 2 minuty a pak ke změně rychlosti nedojde do dalšího měření, tedy např. 2minuty.

Kód: Vybrat vše

void loop() {
  if ((unsigned long)(millis() - readingTime >= timeout)) {
    readingTime = millis();
    displayUpdate=true;
    readingSensor=true;
}
Takhle. timeout je konstantní proměnná (ty 2minuty v milieekundách) a readingTime je proměnná,která ukládá počátek dalšího intervalu.
readingSensor povolí měření, nebo můžeš rovnou zapsat měřicí cyklus, případně ho zavolat jako funkci.
Naposledy upravil(a) rejze69 dne 11 čer 2018, 18:09, celkem upraveno 1 x.

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 » 11 čer 2018, 18:09

Zatím to takto mám,že snímače odečítají co 5 min.
Jenomže je to těžkopádné - (začne se vařit v kuchyni bašta,pára stoupá a ventilátor ještě 5 min čeká! potvora)
Takže vyšší rychlost - hned a nižší rychlost za - 5 min.ideál!
Jinak ventilace neustále běžet nemusí,ale šlo by to taky takto zpáchat.

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

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od rejze69 » 11 čer 2018, 18:13

Tak po minutě. To relátka tak rychle cvakat nebudou a reakce bude rychlejší.

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 » 11 čer 2018, 18:26

Jo.Asi nic jiného nezbude.

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 » 02 pro 2018, 09:35

Ahoj
Zase jdu pro radu.
Vše je funkční,jen mám někdy potíž s vypadkem dat z teplotních senzoru ds18b20 zhruba 3x deně.
To by nevadilo,ale když jsou venku mínusové hodnoty a teplota na čidle skokově klesne při výpadku,spustí se odtávání výměníku,
což je dost plýtvání teplem.
Jak do kodu vsadit časový limit,tedy:když teplota klesne pod 0C PO DOBU 30s zapnu odtávání.?
nyní je: if (tenp_out < 0...) odtavani = 1

jankop
Příspěvky: 1030
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Řízení ventilace-nelze zkompilovat

Příspěvek od jankop » 02 pro 2018, 12:46

Šlo by to třeba nějak takhle:

Kód: Vybrat vše

#define TimeLimit1 30000 //doba po kterou musi byt teplota pod nulou v milisekundach
float tenp_out;
long int counter;
bool FlagTemp = false;
bool odtavani = false;

void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
  if ((tenp_out < 0) && (FlagTemp == false)) {
    FlagTemp = true;
    counter = millis();
  }
  if (tenp_out >= 0) {
    FlagTemp = false;
   odtavani=false;
  }
  if (((millis() - counter) > TimeLimit1) && (FlagTemp == true)) {
    odtavani=true;
  }
}

Odpovědět

Kdo je online

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