Reakce na překročení teploty – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Reakce na překročení teploty – Python – Fórum – Programujte.comReakce na překročení teploty – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Vica0
Newbie
8. 4. 2018   #1
-
0
-

Č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

Nahlásit jako SPAM
IP: 80.250.14.–
gna
~ Anonymní uživatel
1891 příspěvků
9. 4. 2018   #2
-
0
-

temp_calibrated se ti někde aktualizuje?

Nahlásit jako SPAM
IP: 213.211.51.–
Vica0
Newbie
10. 4. 2018   #3
-
0
-

#2 gna
Jo ta se aktualizuje podle toho kolik sec. tam dám.

Nahlásit jako SPAM
IP: 80.250.14.–
peter
~ Anonymní uživatel
4016 příspěvků
10. 4. 2018   #4
-
0
-

gna tim myslel, ze v tom py kodu nemas
temp_calibrated = nejakyvstup()

Taky by tam mozna chtelo neco jako speep(), at ta smycka nebezi co 1 ms.
Zkousel jsi treba promenne vypisovat na obrazovku?
Jinak to vypada, ze by to jako mohlo fungovat. ikdyz mi neni uplne jasne, pred setupy delas ve smycce a ne pred ni. Ale to by teoreticky nemuselo vadit, ta elektronika by tu kalibraci mohla stihat i kazdou 1 ms.

Nahlásit jako SPAM
IP: 2001:718:2601:258:c6f:310...–
peter
~ Anonymní uživatel
4016 příspěvků
10. 4. 2018   #5
-
0
-

pred setupy
* proc setupy

Nahlásit jako SPAM
IP: 2001:718:2601:258:c6f:310...–
Ovrscout
~ Anonymní uživatel
113 příspěvků
10. 4. 2018   #6
-
0
-

(neřeším cyklus čtení atp ale jen podmínku, syntaxe je céčková)

pokud chceš zavést hysterezi tak musíš vyhodnocovat nejen teplotu ale i aktuální stav výstupu.

 

int8_t sStavVystupu=-1;//vychozi stav je neznamy - takze podminky se kontroluji dle poradi

if (sStavVystupu!=1)//je rozepnuto, respektive neni sepnuto nebo je stav -1
{
 if (temp_calibrated < 15) {GPIO.output(7, True);sStavVystupu=1;}
}
if (sStavVystupu!=0)//pokud je sepnuto, respektive neni rozepnuto 
nebo je stav -1

{
    if (temp_calibrated > ventilator) {GPIO.output(7,False);sStavVystupu=0;}
}

Dá se napsat i úsporněji a místo proměnné načíst stav výstupu(pokud to knihovna umožňuje).
Také nemusíš použít stav -1, pokud určíš výchozí stav jinak.

Nahlásit jako SPAM
IP: 193.165.79.–
Vica0
Newbie
10. 4. 2018   #7
-
+1
-
Zajímavé
Kit +

#6 Ovrscout
Já to nakonec vyřešil takhle a funguje to:

if temp_calibrated > ventilator_ON:

	GPIO.output(7,False)

if temp_calibrated < ventilator_OFF:

	GPIO.output(7,True)

A pokud se stane neco nečekanýho zareaguje nějak

Nahlásit jako SPAM
IP: 2001:718:603:100a:b857:28...–
Kit+15
Guru
10. 4. 2018   #8
-
0
-

#7 Vica
Nejlépe bude, když místo cyklu budeš ten skript spouštět pouze při změně teploty.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Vica0
Newbie
10. 4. 2018   #9
-
0
-

#8 Kit
A to bych udělal jak? :O :D

Nahlásit jako SPAM
IP: 2001:718:603:100a:6925:42...–
Kit+15
Guru
10. 4. 2018   #10
-
0
-

#9 Vica
Nejjednodušeji v místě, kde aktualizuješ ten údaj s teplotou, tedy synchronně.

Asynchronně se to dá také, přes přerušení a následné zachycení. Každý proces může běžet v samostatném vláknu. Ovšem v takto primitivním příkladu je to asi overkill.

Celkově se mi to jeví jako overkill, protože tohle by se dalo snadno vyřešit PICem nebo malým Arduinem. Získal bys tím i spolehlivost řešení.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10. 4. 2018   #11
-
0
-

#10 Kit
Možná má (zadarmo) nějaký tovární kontrolér programovaný v Pythonu. Arduino by musel koupit a k němu instalovat nějaké nástroje aby to mohl programovat. 

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+15
Guru
10. 4. 2018   #12
-
0
-

#11 hlucheucho
ATtiny85, který toho už umí docela dost, se dá koupit za cca 20 Kč a připojíš ho přímo na USB. Tohle by zvládlo i ATtiny9, které je k mání za 8 Kč.

BTW: Součástí dotazu to nebylo, ale zřejmě se jedná o RPi.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10. 4. 2018   #13
-
0
-

ATTiny 85 nezapojím přímo do USB, musím nějaký ten hardware zbastlit minimálně na univerzální plošný spoj.

Možná má průmyslový kontrolér, starší, demontovaný .. a zkouší to jako hračku rozchodit a nebo tomu dát šanci na nový život.

Možná má malinu a zkouší, co ta hračka umí. Začíná jednoduchými věcmi. Třeba někdy později příjde s něčím objevným. 

Když už jsme u toho něco rozchodit, naučit se, mít hračku: je to asi 15 let, co jsem měl příšerně složitý blikač s LED sestavený z 8032, 74HC573 jako demultiplexer datové/adresové sběrnice, simulátor EEPROM připojený k PC a PCF8574 jako IIC/GPIO a na jednom z výstupů teprve LED. Nějak jsem se tu komunikaci na IIC, jak ji emulovat softwarově, naučit a oživit musel. A tak vzniknul takový kandidát na zápis do knihy rekordů.

Ještě pozn.: v současnosti by mne asi někdo trumfnul. LED by připojil přes USB převodník k PC a povely rozsvítit/zhasnout by posílal z chytrého telefonu.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+15
Guru
10. 4. 2018   #14
-
0
-

#13 hlucheucho
Je fakt, že několik ochranných součástek se hodí, ale funguje to i bez nich.

Připojen obrázek.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10. 4. 2018   #15
-
0
-

#14 Kit
Zenerovy diody 3,6V na USB datový dráty, chybí blokovací kondenzátor na napájení, při pohledu do datasheetu jsem USB rozhraní u ATTiny 85 nenašel... není to nějaká fušeřina?? I kdyby ne, minimálně konektor, procesor a kondenzátor na blokování napájení by nějak "slepit" musel.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+15
Guru
10. 4. 2018   #16
-
0
-

#15 hlucheucho
Viděl jsem to i bez diod a bez odporů, napojeno nahrubo:

Připojen obrázek.

Ovšem to už je nějaké konkrétní zapojení, protože I/O jsou zapojené jinak.

Za dvacku se dá koupit i tato hračka, kterou programuji přímo přes USB a která mi funguje:

Připojen obrázek.

Zapojení je hodně podobné uvedenému schématu, jen tam jsou navíc dvě ledky.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10. 4. 2018   #17
-
+1
-
Zajímavé
Kit +

Rx a Tx na USB? Tady někdo netuší, jak USB funguje. USB je diferenciální pár!!

Koupit .... pořád. Ale třeba má hračku koupenou a chce si s ní jen hrát.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Kit+15
Guru
10. 4. 2018   #18
-
0
-

#17 hlucheucho
Nevýhodou GPIO na RPi je, že nemá analogový vstup. Termistor se tedy nedá připojit přímo jako třeba na ATtiny85 a musí tam být nějaký A/D převodník jako např. v DHT11.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
10. 4. 2018   #19
-
0
-

#17 hlucheucho
#16 Kit

já to nedávno hledal, jak propojit tiny na usb, funguje to s tím, že na tiny je to SW emulovaným a nejspíš by to zvládla i tiny45 jen by pak na vlastní program nezbylo moc místa.

Nahlásit jako SPAM
IP: 185.112.167.–
Kit+15
Guru
10. 4. 2018   #20
-
0
-

#19 MilanL
Ten program (bootloader) je už v ATtiny85 nahrán a zabírá cca 2 KiB. Na aplikaci zbývá 6 KiB.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Vica0
Newbie
12. 4. 2018   #21
-
0
-

Nakonec mi to nefunguje... Nenapadlo vás nějaké programové řeší tohoto while cyklu? 

while True: 
    
    global temp_calibrated

    ventilator_ON = 22
    ventilator_OFF = 18
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD) 
    GPIO.setup(7, GPIO.OUT)#IN2
    
    if temp_calibrated > ventilator_ON:
	GPIO.output(7,False)
    if temp_calibrated < ventilator_OFF:
	GPIO.output(7,True)
Nahlásit jako SPAM
IP: 80.250.14.–
Kit+15
Guru
12. 4. 2018   #22
-
0
-

#21 Vica
Tyto řádky podle mne patří mimo cyklus. Neustálým resetováním některých příznaků můžeš způsobit nefunkčnost.

    global temp_calibrated

    ventilator_ON = 22
    ventilator_OFF = 18
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD) 
    GPIO.setup(7, GPIO.OUT)#IN2

Také by bylo záhodno do toho nekonečného cyklu vložit nějaký sleep().

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:f1e5:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Vica0
Newbie
12. 4. 2018   #23
-
0
-

#22 Kit
Když to vyhodím mimo cyklus tak ventilátor běží pouze chvilku a poté už nereaguje na změnu teploty vubec

Nahlásit jako SPAM
IP: 80.250.14.–
Řešení
Kit+15
Guru
12. 4. 2018   #24
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

#23 Vica
Cyklus s podmínkami tam samozřejmě musí zůstat. Co ten sleep()?

Jinak je to zajímavá stopa. Zřejmě nějaký jiný proces modifikuje GPIO.output(7). Asi sis vybral nevhodný pin.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:f1e5:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Vica0
Newbie
12. 4. 2018   #25
-
0
-

#24 Kit
Nic žádná změna.

Nahlásit jako SPAM
IP: 80.250.14.–
Vica0
Newbie
12. 4. 2018   #26
-
0
-

#24 Kit
Zkusím teda změnit PIN.

Nahlásit jako SPAM
IP: 80.250.14.–
MilanL+1
Grafoman
12. 4. 2018   #27
-
0
-

#26 Vica
no nikde tam nevidím aktualizaci teploty předpokládám, že je tedy dál ve smyčce, osobně bych to očekával před podmínkami.

jinak neznám zapojení, nemáš náhodou ty hodnoty na GPIO.output(7). obráceně?

Nahlásit jako SPAM
IP: 185.112.167.–
Kit+15
Guru
12. 4. 2018   #28
-
0
-

#27 MilanL
Občas je vtipné, když někdo připojí relé přímo na GPIO :)

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:f1e5:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
13. 4. 2018   #29
-
+1
-
Zajímavé
Kit +

#28 Kit
... a ještě ke všemu bez diody. Nebo tu diodu přepóluje

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+15
Guru
13. 4. 2018   #30
-
0
-

#29 hlucheucho
I se správně zapojenou diodou může být relé pro GPIO smrtící.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:406f:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
13. 4. 2018   #31
-
+1
-
Zajímavé
Kit +

#30 Kit
"Výkonové" porty jsem zatím viděl jen u 8-bitových AVR. U Arduina jsem viděl, že na to relé připojují přímo. Asi jsem moc velká citlivka, tohle bych neudělal. Ke všemu ty relátka na DPS co k tomu dávají se na spínání 230V nehodí, nemají na DPS bezpečné vzdálenosti mezi spoji k cívce a spoji ke kontaktům. Jestli si dobře pamatuju, mělo by to být 8 mm co na první pohled není. 

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Kit+15
Guru
13. 4. 2018   #32
-
0
-

#31 hlucheucho
Těch 230V je asi elektrická pevnost. U nás je však vyžadováno 6 kV. Taková relé na DPS se hodí na spínání do 24V. Stejně nechápu, jak někdo mohl kontakt kotvy relé umístit mezi kontakty vinutí. To je na odstřel.

Samozřejmě se u nás dají koupit i plnokrevná relé na 230V. Jen jsou o trochu dražší.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:406f:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
13. 4. 2018   #33
-
+1
-
Zajímavé
Kit +

#32 Kit
Jdou koupit i s paticí na DIN lištu, akorát ta patice je dražší než relé. Jde to nahradit optotriakem a výkonovým triakem nebo použít SSR. Ale vždy se musí při návrhu DPS pamatovat na normy.

Relé s kontaktem mezi vývody cívky bývají nejčastěji označována jako signálová. Z toho vyplývá, že ke spínání výkonových obvodů a bezpečnému oddělení výkonových obvodů nejsou určena. Akorát ke spínání signálů citlivých na rušení mi to taky nejpříjde vhodné.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

Zjisteni teploty v PC — založil kaletak

Zjisteni teploty v PC — založil kaletak

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý