Řízení ventilace-nelze zkompilovat
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: Řízení ventilace-nelze zkompilovat
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é?
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é?
Re: Řízení ventilace-nelze zkompilovat
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.
Re: Řízení ventilace-nelze zkompilovat
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.
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.
Kód: Vybrat vše
void loop() {
if ((unsigned long)(millis() - readingTime >= timeout)) {
readingTime = millis();
displayUpdate=true;
readingSensor=true;
}
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.
Re: Řízení ventilace-nelze zkompilovat
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.
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.
Re: Řízení ventilace-nelze zkompilovat
Tak po minutě. To relátka tak rychle cvakat nebudou a reakce bude rychlejší.
Re: Řízení ventilace-nelze zkompilovat
Jo.Asi nic jiného nezbude.
Re: Řízení ventilace-nelze zkompilovat
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
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
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Řízení ventilace-nelze zkompilovat
Š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;
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů