Arduino sekvence jen jednou

Odpovědět
packa
Příspěvky: 43
Registrován: 15 zář 2015, 12:32

Arduino sekvence jen jednou

Příspěvek od packa »

Ahoj
potřeboval bych poradit , potřebuji naprogramovat abych když dosáhnu určité hodnoty tak proběhne sekvence : sepnu výstup na vteřinu , pak na 2vteřiny vypnu , a na 3 vteřiny sepnu , pak vypnu a dál už budu jen zobrazovat hodnoty na lcd a čekat až ta samá analog hodnota klesne pod určitou mez a zopakuji podobnou sekvenci jen s jiným výstupem .
Jde mi o to že když mám splněny podmínky pro tu sekvenci tak se mi opakuje stále dokola což nepotřebuji , jak zajisti aby proběhla jen jednou ?
Děkuji
Packa
micer
Příspěvky: 180
Registrován: 12 čer 2014, 19:14

Re: Arduino sekvence jen jednou

Příspěvek od micer »

Nastavit si nějakou proměnnou jako příznak v době první sekvence a kromě podmínky testovat i nenastavení příznaku. Tím se sekvence provede jen jednou a pak už ne. Když hodnota poklesne pod danou mez a spouští se druhá sekvence, shodit opět uvedený příznak (do nenastaveného stavu). To je pro jednu sekvenci.
Jestli jsou tam dvě sekvence (jedna pro překročení meze nahoru, druhá pro překročení meze dolů), tak budou dva příznaky, každý pro jednu sekvenci (pro přehlednost, nemusely by být).
packa
Příspěvky: 43
Registrován: 15 zář 2015, 12:32

Re: Arduino sekvence jen jednou

Příspěvek od packa »

Ahoj a děkuji
můžeš to prosím naznačit kouskem kodu ?
Děkuji
Uživatelský avatar
gilhad
Příspěvky: 264
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Arduino sekvence jen jednou

Příspěvek od gilhad »

Tady mas myslenku, synkakticky to neni zcela spravne (delay dostava pocty milisekund, velka a mala pismena a tak podobne), ale to snadno poladis

Kód: Vybrat vše

int mereni=false;
int hodnota1=321;
int hodnota2=123;
int vstup;

void setup(){ 
  pinMode(1,vstup);
  pinMode(2,vystup)
}

void zobraz(){
  LCD.print(digitalRead(1));
}

void loop(){
  vstup=digitalRead(1);
  if (not mereni){ // mereni je false
    if (vstup>=hodnota1){
      mereni=true;
      digitalWrite(2,High);
      delay(1s);
      digitalWrite(2,Low);
      delay(2s);
      digitalWrite(2,High);
      delay(3s)
      digitalWrite(2,Low);
    } // end 1f (vstup>=hodnota1)
  } else { // mereni je true
    zobraz();
    if (vstup<hodnota2) {
      mereni=false;
     }
  } // end if (not mereni)
} // end loop  

Pokud bys chtel merit i behem toho cviceni vystupy (pripadne delat i jine veci), musel byc zvolit trochu slozitejsi variantu, takhle se ti to vzdycky na zacatku na 6 sekund "zasekne", nemeri a jen cvici se vstupama.

Pokud bys napsal, k cemu to potrebujes, mozna by se nasla lepsi cesta.
packa
Příspěvky: 43
Registrován: 15 zář 2015, 12:32

Re: Arduino sekvence jen jednou

Příspěvek od packa »

Ahoj
jedná se o spínací sekvenci pro nahození UPS která slouží jako měnič u fotovoltaické elektrárny , kde proudovým transformatorem měřím odběr , jakmile překročí nastavenou mez tak se provede startovací sekvence UPS a následně se odpojí sít a přepne na UPS.
Dělám to kvůli tomu že daná ups má dost vysoký klidový odběr a tak ji nechci nechávat trvale sepnutou .
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Arduino sekvence jen jednou

Příspěvek od daton »

Ahoj
pokud tomu dobře rozumím chceš nahradit odběr domu odběrem z UPS a solárních panelů? Pokud ano proudové trafo ti nebude stačit. POkud nemáš elektrárnu přihlášenou u čezu tak jakýkoliv přebytek co se dostane z domu do sitě je trestný, jedná se o nedovolenou dodávku a bere se to stejně jako neoprávněný odběr a jsou z toho vysoké pokuty. Dnešní digitální čtyřkvadrantové elektroměry umí napočítat i malou dodávku zapamatovat si ji a při dálkovém odečtu to čezu naprášit.
Ale napsal jsi málo informaci tak jen takto jako možný problém.
packa
Příspěvky: 43
Registrován: 15 zář 2015, 12:32

Re: Arduino sekvence jen jednou

Příspěvek od packa »

ne , do sítě nechci opravdu nic dodávat , mám asi tři spotřebiče které napájím ze solárů , pokud jsou spotřebiče vypnuty - standby režim tak budou napojeny na síť, pokud nějaký ten spotřebič zapnu - stoupne spotřeba nad nastavenou mez ( měřím právě proudovým trafem )tak se musí nastartovat měnič apak dojde kpřepnutí stykače který odpojí čez a spotřebiče připojí k měniči . Je to z důvodu že pokud by nebyl žádný z těch připojených spotřebičů zapnut tak by zbytečně měnič odebíral proud z baterek .
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Arduino sekvence jen jednou

Příspěvek od daton »

Tento problém už jsem taky řešil a popravdě nevyřešil. Pokud oddělíš jednotlivý spotřebič a přepneš pak to není problém pokud ale přepínáš celý rozvod pak to problém být může. Musí se řešit přepínání ve fázi i když stykač asi bude mít dost dlouhou prodlevu aby se kapacitní náboj pulvlny spotřeboval. Může však být pomalejší a apk je třeba aby zátěž toleroval mírný pokles napětí. Pak je třeba mít kvalitní stykač, pokud je totiž zapojena indukční zátěž rád se vytahuje oblouk a kdyby přeskočil na napájení ups ta to tu ups usmaži přinejlepším. Dále musíš mít UPS co toleruje odpojení zátěže, ne všechny to totiž umí a při odpojení funkční UPS může dojít stejně jako u měniče ke zničení koncových tranzistorů. Dále je třeba aby jsi vyřešil rychlost přepínání. Protože může být mírně zataženo a energie ti postačí tak tak na provoz UPS potm přijde jen kousiček mraku, který zacloni panely víc a UPS už to nestačí a přepne se stykač avšak v zápětí se zase rozjasní a opět se přepne stykač. Myslím že UPS má určitou dobu pro zotaveni po předchozím vypnutí tak že minimálně tam musí být nějaká setrvačnost a predikce (i když to je dost nadnesené) budoucího svitu, já jsem podobnou situaci řešil tak že pokud je svit o 30% vyšší než minimální udržitelná hladina napětí pak se přístroj zapne na solár pokud ne nepřepíná se a to tam mám akumulátor. Zkrátka je vhodné tam zařadit určitou hysterezi a zpožděné zapínání.
packa
Příspěvky: 43
Registrován: 15 zář 2015, 12:32

Re: Arduino sekvence jen jednou

Příspěvek od packa »

ze solárů mabíjim aku takže mě nějaké zaclonění panelů a pod nevadí , regulátor hlídá kdy se může z baterek odebírat v tom není problém , pro sichr aby se mi nemohla potkat síť a měnič tam mám za sebou relé a stykač kdy nejdříve sepne jeden a ten pak pustí proud do cívky druhého stykače, samozřejmě odpojuji oba vodiče ,to je vše vyřešeno a odzkoušeno . Mám hotové i to spouštění UPS , ale jekmile splním podmínky pro sepnutí tak se mi stále dokola opakuje spouštěcí sekvence tak to chci předělat - ale zatím jsem nezjistil že by to něčemu vadilo .
Uživatelský avatar
gilhad
Příspěvky: 264
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Arduino sekvence jen jednou

Příspěvek od gilhad »

Proste si tam dej promennou, jestli je spusteno, spousteni delej jen pokud NENI nastavena, pri spousteni ji nastav a pri vypnuti ji zase shod.

Pokud ti nevadi cekat behem startovani, tak to staci jako v mojem prikladu, pokud potrebujes probihat smyckou porad i mezi tim, tak ji pri zacatku spousteni nastav treba na 1, po dokonceni prvni faze na 2, pak na 3 atd .... pri vypnuti na 0 a vsechno, co zavisi na spousteni (i spousteni samo) od ni odvozuj.
Odpovědět