Stránka 1 z 1

Arduino - zpožděné vypnutí relé

Napsal: 21 pro 2014, 11:37
od acat
Dobrý den,
potřebuji pomoc, a tak se obracím na Vás, zda bude někdo ochotný a pomůže mi pohnout s problémem.
Signálem z relé, které může nabývat v průběhu času stav HIGH nebo LOW, (relé seplo - rozeplo) potřebuji rozepnout druhé relé, které je doposud seplé, a to tak,že to druhé relé bude rozeplé cca 3 minuty. Pokud mu první relé během toho času nedá další impuls, druhé relé se rozepne. Pokud ovšem během 3 minut příjde nový impuls, druhé relé bude stále ve stavu "rozepnuto" začne od tohoto impulsu znovu počítat ony 3 minuty do sepnutí. Nevím zda jsem to srozumitelně popsal. Poradí mi někdo? Nejlépe už napsaným prográmkem? Děkuji.

Napsal: 21 pro 2014, 13:02
od monterjirka
A to Arduino tam potřebuješ ještě na něco, nebo bude dělat jen tuto funkci?
Pokud tam bude jen na to, tak přepnu druhé relé, také si přečtu "milis" a budu se pořád dokola střídavě dívat, jestli už se mi "milis" zvětšilo a 1000*60*3, tedy o 180 000 a budu se ptát jestli nepřišel vstupní impuls.
Pokud překročím zvýšení hodnoty "milis", přepnu druhé relé.
Pokud přijde dříve vstupní impuls, nastavím novou výchozí hodnotu pro "millis" a jedu znovu od začátku.
Podstatně levnější by to bylo s CMOS 4060, asi by to chtělo 2 za sebou, aby to šlo řídit krystalem.
Když to dopočítá do nějaké hodnoty, pošle to výstupní impuls
Když dříve přijde vstupní impuls, zresetuje se to, a začne to počítat znovu od začátku

Napsal: 21 pro 2014, 13:23
od acat
Arduino bude řídit dům, takže kromě jiných funkci jako hlídání vody ve studni a teploty, bude hlídat i odběry proudů na jednotlivých fázích. Mnou požadovaná funkce je právě pro hlídání proudu na fázi. Pokud se mi zvedne odběr na zásuvce, odpojí se mi třeba přímotop v místnosti, kde to není momentálně důležité. Pokud by ten odběr proudu byl častější, zbytečně by mi to topení spínalo v krátkých intervalech. Třeba el. trouba bude dotápět každé 2 min. Mým řešením bych měl to relé topení odpojené stále až do ukončení pečení. Nad řešením s Millis() jsem přemýšlel, ale nemám zkušenosti s programováním, a tak nevím, jak to udělat, nejlépe přes nějaký podprogram.

Napsal: 21 pro 2014, 13:25
od ross4435897
presne ...


Pak jo ... to uz by pak mozna chtelo nejaky RTOS ... ChiBios, NilRTOS atd ...
Ne ze by to neslo udelat, ale ve vice vlaknech to bude pohodlnejsi a snazsi. Tolik procesu cpat do jednoho vlakna bude jednoduse nesrozumitelne.

Napsal: 21 pro 2014, 13:38
od acat
Doteď mi to jede asi 15 let na elektronice, myslím to hlídání fází, ale chci to nějak levně povýšit, a tak mě napadlo Arduino.

Napsal: 21 pro 2014, 16:26
od monterjirka
Pokud má Arduino (nebo jiné zařízení s procesorem) hlídat více věcí, sledovat a řídit více procesů,... je třeba se rozhodnout co ošetřit v hlavní smyčce a řešit pomocí přerušení, tady by se nabízela možnost využít přerušení při přetečení časovače.

Napsal: 21 pro 2014, 16:38
od acat
Budu s tím hlídat minimálně 10 zas. okruhů. Ty zásuvky budou v přednostním režimu, hlídá se tím překročení proudu na jednotlivých fázích. Zbytek procesů není tak časově důležitý.