Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:8.4.2018 17:54

Čau lidi,
řeším problém, kdy chci aby se při překročení dané teploty seplo relé, ale až teplota klesne opět na nějakou žádanou hodnotu se opět vyplo. Nevíte jak sestavit podmínku?
Zatím mám toto:

while True:
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(7, GPIO.OUT)#IN2
    ventilator = 22
    if temp_calibrated > ventilator:
        GPIO.output(7,False)
    elif temp_calibrated < 15:
        GPIO.output(7, True)

Ale toto nefunguje jak potřebuji.
Moc děkuji za pomoct

 
Odpovědět
8.4.2018 17:54
Avatar
vlcik128
Člen
Avatar
vlcik128:8.4.2018 18:09

Ahoj. Tomuto jazyku sa nevenujem, ale ak:

if temp_calibrated > ventilator:
      GPIO.output(7,False)

spína relé, a

elif temp_calibrated < 15:
        GPIO.output(7, True)

ho má vypnúť, tak by som namiesto elif if.
elif / else if sa vykonáva iba vtedy, ak podmienka if nie je platná.

 
Nahoru Odpovědět
8.4.2018 18:09
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na vlcik128
dvorak.vit94:8.4.2018 18:17

Myslíš:

if temp_calibrated > ventilator:
      GPIO.output(7,False)
else
        GPIO.output(7, True)

Todle?

 
Nahoru Odpovědět
8.4.2018 18:17
Avatar
vlcik128
Člen
Avatar
vlcik128:8.4.2018 21:07

Myslel som to takto:

if temp_calibrated > ventilator:
    GPIO.output(7,False)
if temp_calibrated < 15:
    GPIO.output(7, True)
Editováno 8.4.2018 21:07
 
Nahoru Odpovědět
8.4.2018 21:07
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na vlcik128
dvorak.vit94:12.4.2018 16:56

Nefunguje, když teplota klesá z 25 třeba dojde do 14,9, vypne se pak když opět začne stoupat teplota chvilku se drží vypnutý ale pak se zapne opět a je třeba 15,5

 
Nahoru Odpovědět
12.4.2018 16:56
Avatar
vlcik128
Člen
Avatar
vlcik128:12.4.2018 19:02

Mohol by si prosím napísať, čo ktorý riadok robí?

 
Nahoru Odpovědět
12.4.2018 19:02
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na vlcik128
dvorak.vit94:12.4.2018 19:57

Hele už dobrý, byl tam problém se zapojením, bylo to na blbém pinu..

 
Nahoru Odpovědět
12.4.2018 19:57
Avatar
Jan Roman
Člen
Avatar
Jan Roman:11.7.2018 9:56

Ahoj,
Momentálně pracuji na něčem co to obsahuje :D sice už je to asi vyřešené ale kdyby měl někdo zájem můžu snad pomoct. Skript který jsem udělal má za úkol toto:
Mám elektro kotel se 3 spirálami +obehovym čerpadlem. Stav bez raspberry je ten, že pokud sepne termostat, zapnou všechny spirály + čerpadlo. Po dosažení teploty se kotel vypne (všechny spirály i čerpadlo). Po připojení raspberry budu vše řídit pomocí relé a bude se to chovat tak, že se bude vyhodnocovat teplota v kotlů a podle toho řídí jednotlivé spirály i čerpadlo nezávislé na sobě. Vše bude závislé jen na teplotě. Popisu chování.
Spirála 1: teplota je větší jak 75 tak se spirála vypne (pokud klesne pod 75 znovu se zapne)
Spirála 2: teplota větší jak 80 spirála se vypne (pokud klesne pod 80 tak se zapne)
Spirála 3: teplota větší jak 90 spirála se vypne (pokud klesne pod 90 tak se zapne)
Čerpadlo: pokud je teplota větší jak 50 tak čerpadlo točí vodu (horní mez není stanovena)

Veškeré data (teplota v kotli, stav jednotlivých spiral a zda je čerpadlo v chodu) odesílám na IOT server který mi jede na druhém raspberry

 
Nahoru Odpovědět
11.7.2018 9:56
Avatar
Petr Oliva
Člen
Avatar
Petr Oliva:11.2.2019 8:55

Ahoj,
myslím, že bude potřeba nastavit určitou hysterezi, aby nedocházelo k přecvakávání ve chíli, kdy teplota kolísá kolem spínané hodnoty. Sám nevím, jak hysterezi napsat, ale bez toho jsou příliš namáhána relé. Pokud by měl někdo kód pro hysterezi napsaný s vyvětlení, rád se poučím.

 
Nahoru Odpovědět
11.2.2019 8:55
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.2.2019 11:14

Proc ta cizi slova? Potrebujes zpozdeni. To resis tak, ze si ulozis cas a teplotu (staci stav, ale pro vymakanejsi system se sleduje zavislost teploty na case a podle toho se reguluji mezni teploty). A sledujes stav, zda ohrivas nebo chladis.
To jeho zadani ale nedava prilis smysl. Pokud chces neco ohrat, kazda spirala hreje stejne, pak
sp1: t>70 vypne
sp2: t<80 zapne
Tak sp2, pokud je stejna jako sp1, tak to dokaze vyhrat take jen na 70. Cili, musi hrat obe soucasne, pokud chce vyssi teplotu, ne?

t_mez = 70
t_minus = -10
t_plus = +10
stav=ohrivani && t<70+10 --> zapnuto
t>=70+10 --> vypnuto, stav=chlazeni
stav=chlazeni && t>70-10 --> vypnuto
t<70-10 --> zapnuto, stav=ohrivani
Editováno 11.2.2019 11:15
 
Nahoru Odpovědět
11.2.2019 11:14
Avatar
Petr Oliva
Člen
Avatar
Petr Oliva:19.11.2021 13:45

Po čase mám opět potřebu řešit tuto funkci. Bylo by to možné napsat takto? Na konzoli mi to funguje.

def hysteresis(actual_value, last_state=False, setpoint=85, hyst_level=4):
    '''
    Funkce hystereze
    Definují se proměnné:
    Aktuální hodnota, poslední stav, žádaná hodnota, úroveň hystereze
    Příklad:
    stav_vystupu = False
    while True:
        stav_vystupu = hysteresis(aktualni_hodnota, stav_vystupu)

    '''
    if (actual_value < (setpoint - hyst_level)): # je-li aktuální hodnota menší vrací se True
        return True
    elif (actual_value > (setpoint + hyst_level)): # je-li aktuální hodnota větší vrací se False
        return False
    else:    # nedošlo-li ke změně, zachovej předchozí stav
        return last_state
 
Nahoru Odpovědět
19.11.2021 13:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.