Fórum témák

» Több friss téma
Fórum » Akvárium automatika
 
Témaindító: (Felhasználó 518), idő: Dec 20, 2005
Lapozás: OK   3 / 3
(#) kissi válasza homedve hozzászólására (») Máj 19, 2017 /
 
Szia!
Idézet:
„Az első FET mint kapcsoló ha jelet kap az IC-től, akkor nyit, így adva áramot a venti felé, ami a vetni előtt átfolyik még egy FET-en, ami alapból nyitva lenne, csak etetés időben zárna”

Minek ? Ha az egész logikát az Arduino vezérli, akkor az "tudja", hogy mikor etet és addig kapcsolja le a ventilátort(ha megy, ha nem!), majd vissza (ha szükség van még rá!)! Ezért nem kell még egy FET !
Remélem jól értelmeztem a problémádat így hajnalban !
A hozzászólás módosítva: Máj 19, 2017
(#) game4812 válasza homedve hozzászólására (») Máj 19, 2017 /
 
Szia! Én a szűrőt kapcsolom ki etetés közben, lenyomok egy gombot, az elindít egy 4 perces visszaszámlálást, utána újra elindul. Az "&&" kikötés nélkül áramszünet után nem indulna a szűrő rögtön, csak 4 perc múlva.
  1. if((millis() - previousMillispump < kikapcsolasiido) && (kikapcsolasiido < millis())) {digitalWrite (pump, LOW);}
  2. else {digitalWrite (pump, HIGH);}

A gomb pedig ennyit csinál:
  1. previousMillispump=millis();

Ha a gomb általi parancsot, az etető indításával egyszerre ütemezed, (idő alapján a LED-ek miatt biztos tudsz ütemezni, ha esetleg az etetőt nem az arduino vezérli, de az etető motorjáról is elhozhatsz egy szálat, ami high-ra húzza az arduino bemenetét, így az tudja, hogy akció van) akkor elég 1 FET. Persze a fenti kóddal a ventilátor csak ki-be kapcsolni fog, PWM-mel szebb megoldani, összességében halkabb, és talán a halaknak is jobb, mert így 27 fokig viszonylag egyenletes sebességgel felmelegszik a víz, és ott stagnál. ha pedig például 26 foknál már elindulnak, de 27-nél pörögnek a maximumon, akkor van egy grádiense a folyamatnak. Nálam ez így néz ki:
  1. if (indulasivarakozás > (millis())){analogWrite(fan, 20);} //ahogy bekapcsol a rendszer, az elején pontatlan az érték, emiatt ne pörögjön feleslegesen, csak alapjáraton pár másodpercig
  2. else {if (fancntrl==0){ //egy másik menüpontban fix ki/fix be/program között lehet váltani,ezért kell nekem, de itt is jól jön a program felülírásához etetésnél
  3.     if (homerseklet <= (tempFanMin)) analogWrite(fan, 20)//kb. 8%-on pörög mindig, hogy ne legyen az elektronikája vizes, stb
  4.     if((homerseklet >= tempFanMin) && (homerseklet <= tempFanMax))  {sebesseg = map(homerseklet, minhomerseklet, maxhomerseklet, 20, 255); analogWrite(fan, sebesseg);} //min és max definiálva van a kód elején, 26 és 27 fok
  5.     if(homerseklet > maxhomerseklet) digitalWrite (fan, HIGH);}

Ezzel kiegészülve úgy módosulna a fenti kód, hogy:
  1. if((millis() - previousMillisfan < kikapcsolasiido) && (kikapcsolasiido < millis())) {fancntrl=1; digitalWrite (fan, LOW);}
  2. else {fancntrl=0;}


Remélem tudsz belőle hasznosítani ötleteket!
A hozzászólás módosítva: Máj 19, 2017
Következő: »»   3 / 3
Bejelentkezés

Belépés

Hirdetés
Frissek
2017. Aug, 20. Vas
10:00:24
Jelenleg 303 fő olvassa az oldalt
Online tagok:
Lapoda.hu     XDT.hu     HEStore.hu