časové hlídání dárlingu (vodárny)

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Pojkynet
Příspěvky: 28
Registrován: 26 kvě 2020, 01:14
Reputation: 0

časové hlídání dárlingu (vodárny)

Příspěvek od Pojkynet » 26 kvě 2020, 01:42

Dobrý den
Jsem nováček zde na fóru i co se týká arduina
A potřeboval bych vaší pomoc.
Snažím se vytvořit jednoduché časové hlídání vodárny.
Plán je následující:Po sepnutí tlakového spínače na vodárně je z jeho spínacího kontaktu přiveden signál na pin arduina sepne se modul relé které spíná stykač motoru a rozsvítí se zelená led,že běží čerpadlo.Pokud se tlakový spínač rozpojí do určitého času (2 minuty),je vše v pořádku led zhasne relé se rozpojí a čeká se na další sepnutí tlakového spínače.
Pokud by čerpadlo běželo více jak cca. 2 minuty v jednom kuse relé se vypne, rozsvítí se červená led a čerpadlo by se bez resetování tlačítkem již nedalo spustit.
Co se týče zapojení je mi vše celkem jasné ale z kódem nemohu hnout.
Už to pomalu vzdávám :o
Modul je arduino nano
relé spíná při logické 0
Za případné nápady moc děkuji

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: časové hlídání dárlingu (vodárny)

Příspěvek od martinius96 » 26 kvě 2020, 04:00

Ahoj, snažil som sa to vytvoriť čo najjednoduchšie, dalo by sa to asi zapísať aj efektívnejšie, ale verím, že na začiatok to bude stačiť.
Systém má 3 režimy:
  • Režim 0 - čaká sa na impulz log 1 --> 5V na vstupe v nekonečnej slučke
  • Režim 1 - každú sekundu sa vykonáva meranie na vstupe, ak sa vykoná 120+ meraní log 1 za sebou, systém skočí do Režimu 2. Ak počas týchto 120 cyklov (120 sekúnd) nameria kedykoľvek log 0 --> skočí do Režimu 0
  • Režim 2 (Default v switch case) - Arduino v tomto režime čaká na hardvérový reset cez tlačidlo RESET na doske, nemožno z tohto režimu vyskočiť, je to akoby while(true), cyklus tam ostane navždy.
Do toho Režimu 1 som doplnil aj tú logiku, ktorú potrebuješ. Predpokladám, že pri prekročení 120 sekúnd chceš aj zhasnúť zelenú LED pri rozsvietení červenej LED, nastavil som to tak. Uprav si digitálne vývody podľa tvojho zapojenia. Čo sa týka merania každú sekundu, dá sa to zmeniť aj pre meranie každú milisekundu... Len sa zmení počet maximálnych impulzov (napríklad *1000), ktoré si schopný odmerať za 120 sekúnd (pozor, potrebuješ potom zmeniť aj dátový typ pre túto premennú [pocet_merani ], nakoľko int je len do 32,767, unsigned int 65535 ). Meranie cez digitalRead() trvá približne 4ns.

Kód: Vybrat vše

const int buttonPin = 2; //kontakt, na ktory sa privedie +5V
unsigned long lastDebounceTime = 0; //premenna pre cas millis()
int rezim = 0; //rezim systemu
int pocet_merani = 0; //pocet merani (cyklov), rataju sa do 2 minut --> 120 sekund
const int zelenaLED = 6; //D pin zelenej LED
const int cervenaLED = 7; //D pin cervenej LED
const int vystup = 8; //D pin pre rele
int reading;
int reading2;
void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(zelenaLED, OUTPUT);
  pinMode(cervenaLED, OUTPUT);
  pinMode(vystup, OUTPUT);
  digitalWrite(vystup, HIGH);
  digitalWrite(zelenaLED, LOW);
  digitalWrite(cervenaLED, LOW);
}

void loop() {
  switch (rezim) {
    case 0:
      reading = digitalRead(buttonPin);
      if (reading == HIGH) {
        lastDebounceTime = millis();
        rezim = 1;
        digitalWrite(zelenaLED, HIGH);
        digitalWrite(vystup, LOW);
      }
      break;
    case 1:
      if (millis() - lastDebounceTime >= 1000) {
        lastDebounceTime = millis();
        reading2 = digitalRead(buttonPin);
        if (reading2 == HIGH) {
          pocet_merani++;
        } else {
          rezim = 0;
          pocet_merani = 0;
          digitalWrite(zelenaLED, LOW);
          digitalWrite(vystup, HIGH);
        }
        if (pocet_merani > 120) {
          rezim = 2;
          digitalWrite(cervenaLED, HIGH);
          digitalWrite(zelenaLED, LOW);
          digitalWrite(vystup, HIGH);
        }
      }
      break;
    default:
      // NUTNY RESTART ARDUINA NATVRDO CEZ RESET
      break;
  }
}

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od ondraN » 26 kvě 2020, 06:54

martinius96 píše:
26 kvě 2020, 04:00
............... Meranie cez digitalRead() trvá približne 4ns.
U arduina s procesorem 328P,168P na 16MHz je to téměř přesně 5us

Pojkynet
Příspěvky: 28
Registrován: 26 kvě 2020, 01:14
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od Pojkynet » 27 kvě 2020, 04:37

Moc díky za pomoc
Já jsem někde u blikání s LED a funkci millis pořád nějak nemohu pochopit.
Jen už jsem dvakrát vytáhl studnu jen proto,že praskla hadice na zahradě a čerpadlo Sigma běželo,dokud se nezadřelo při chodu bez vody,potom teprve vybavil motorový spouštěč.
Tak třeba to ještě někomu pomůže.
Asi bych dokázal vymyslet řešení z nějakou časovkou,ale to by bylo neúměrně drahé a tohle je podle mne super řešení.Po dvou minutách nepřetržitého chodu se čerpadlo vypne a musí ho obsluha resetovat.
Ještě by bylo fajn připojit záplavovou sondu a pokud by ve sklepě třeba praskla trubka a objevila se na zemi voda,tak by se čerpadlo vypnulo okamžitě.Bohužel ale takový kód já nezvládnu :)
A při dnešním nedostatku vody to může být téma přínosné :)


Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: časové hlídání dárlingu (vodárny)

Příspěvek od pavel1tu » 27 kvě 2020, 16:15

Nevím, časové relé přijde na stokoruny,
relátko navíc a hladinový spínač proti vycucnutí studny,
celé v bedně - do 1000Kč když to přeženu.
Za 1h nadrátované a funkční ....
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Pojkynet
Příspěvky: 28
Registrován: 26 kvě 2020, 01:14
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od Pojkynet » 27 kvě 2020, 16:38

To asi ano, ale do studny 15 metrů přes zahradu to znamena zakopat kabel rozkopat zahradu😌

BigSandy
Příspěvky: 219
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od BigSandy » 27 kvě 2020, 16:39

Už jsem to našel :mrgreen:
Toto tam mám.
https://www.cerpadlazavlahy.cz/ochrana- ... hegory=120

A funguje to :D

Pojkynet
Příspěvky: 28
Registrován: 26 kvě 2020, 01:14
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od Pojkynet » 27 kvě 2020, 16:44

hladinov_
BigSandy píše:
27 kvě 2020, 16:39
Už jsem to našel :mrgreen:
Toto tam mám.
https://www.cerpadlazavlahy.cz/ochrana- ... hegory=120

A funguje to :D
To je zajímavè řešení

Pojkynet
Příspěvky: 28
Registrován: 26 kvě 2020, 01:14
Reputation: 0

Re: časové hlídání dárlingu (vodárny)

Příspěvek od Pojkynet » 27 kvě 2020, 16:51

Bohužel ve sklepě 5x3 metry se ten plovaček moc použit nedà, protože nežli sepne budu tam mít 5cm vody😌
ta druhà sonda je super, ale nic nevydrží za rok by byla k. o
Màm dvě nerezové sondy kterè připojím k arduinu a budu snímat těsně u podlahy.
Teď už napsat jen ten kód😄🙃

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů