č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.
Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

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

Příspěvek od kiRRow » 03 srp 2020, 16:26

Co to znamená spadne do chyby? Jaký používáš záplavový senzor? Udělej si v programu výpis do sériové linky, aby jsi mohl kontrolovat kde a s jakými daty v jakých proměných program je a co dělá - doporučuji na to použít nějaký vybavenější terminál, který umí ukládat do textového souboru. Při hledání takové chyby v celkovém výrobku zveřejňuj vždy celý kód.

Pro příklad, řešil jsem případ, kdy stroj pracoval naprosto bez chybně, ale jednou za nějakou dobu začal napočítávat kusy do nekonečna. Po 4hodinách logování jsem konečně přišel na moment, kdy jsem zjistil, že obsluha toho stroje přihazuje kusy mimo počítací část a program vypočetl záporný výsledek. Tím se nesplnila podmínka, že chybíKusů == 0 a program jel do nekonečna, protože -1 se nerovná 0. Řešení : změna podmínky chybíKusů <= 0.

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 » 03 srp 2020, 17:24

Senzor tvoří nerezové sondy vedle sebe nanstalované 1cm nad podlahou.

Kód: Vybrat vše

#include <avr\wdt.h>
const int buttonPin = 2; //kontakt, na který sa privedie +5V
const int instantResetPin = 3; //kontakt, na který 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   = 11; //D pin zelenej LED
const int cervenaLED = 10; //D pin cervenej LED
const int modraLED   = 9; //D pin modrá LED
const int vystup    = 12; //D pin pre rele
const int zapnuto    = 8; //kontrolka napájení

int reading;
int reading2;
int reading3;

void setup() {
  wdt_enable(WDTO_500MS );
  wdt_reset();
      pinMode(buttonPin, INPUT);
      pinMode(instantResetPin, INPUT);
      pinMode(zelenaLED, OUTPUT);
      pinMode(cervenaLED, OUTPUT);
      pinMode(modraLED, OUTPUT);
      pinMode(zapnuto, OUTPUT);
      pinMode(vystup, OUTPUT);
  digitalWrite(vystup, LOW);
  digitalWrite(zelenaLED, LOW);
  digitalWrite(cervenaLED, LOW);
  digitalWrite(modraLED, LOW);
  digitalWrite(zapnuto,HIGH);
}

void loop() {
  wdt_reset();
  reading3 = digitalRead(instantResetPin);
  if (reading3 == HIGH) {
    rezim = 2;
    digitalWrite(modraLED, HIGH);
    digitalWrite(cervenaLED, LOW);
    digitalWrite(zelenaLED, LOW);
    digitalWrite(vystup, LOW);
  }
  switch (rezim) {
    case 0:
      reading = digitalRead(buttonPin);
      if (reading == HIGH) {
        lastDebounceTime = millis();
        rezim = 1;
        digitalWrite(zelenaLED, HIGH);
        digitalWrite(vystup, HIGH);
      }
      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, LOW);
        }
        if (pocet_merani > 60) {
          rezim = 2;
          digitalWrite(cervenaLED, HIGH);
          digitalWrite(zelenaLED, LOW);
          digitalWrite(vystup, LOW);
        }
      }
      break;
    default:
      // NUTNY RESTART ARDUINA NATVRDO CEZ RESET
      break;
  }
  }           

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

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

Příspěvek od kiRRow » 04 srp 2020, 16:16

Vypadá to, že ti něco zašumí na vodiči instantResetPin. Nemáš tam nijak časové ošetření jakou minimální délku by ten impuls měl mít. Mezi pin instantResetPin a gnd dej odpor 4k7 - 10k (co nejblíže k arduinu). Pokud na PIN není nic připojeno (rozpojené tlačítko je nic), tak se chová jako přijímací anténa a start/stop nějakého výkonějšího, nebo indukčního stroje může velmi snadno na tomto pinu vyvolat rušení, které arduino bere jako řídící impuls.

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 » 05 srp 2020, 23:23

Ahoj
Mám tam odpor 10k a stejně to občas udělá.
Nevím co s tím.😧

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

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

Příspěvek od kiRRow » 06 srp 2020, 16:14

Zkus požadovat minimální délku toho impulsu. Musíš si pamatovat stav posledního čtení. Při jeho změně z LOW na HIGH si poznamenáš čas, kdy se to stalo a pak testuješ jestli je HIGH && časKdySeToStalo > minDelkaPulzu, pak to překlopíš do toho chybového režimu. Ideálně si tohle udělej zvlášť, zapoj si čudlík a ledku a naprogramuj, že čudlík musíš držet 1s aby se ledka rožla. Pak to zakomponuješ do toho programu na hlídání.

Další možnost je udělat si RC filtr a šum na vodiči vyfiltrovat hardwarově.

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 » 17 srp 2020, 21:22

...tak se mi zatím nepovedlo dát to dohromady :roll:
Poradil by někdo,jak vyřešit tu minimální délku pulsu,stačí kdyby režim 2 nastal pokud bude HIGH třeba nepřetržitě několik sekund,já to nemohu nějak dát dohromady a ve sklepě mám otevřený rozvaděč už měsíc a nehnul jsem stím,sondy mám zatím vyřazené z provozu a funguje jen spínání dárlingu.
Za každou :) radu předem děkuji

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 » 18 srp 2020, 06:36

Arduino je opravdu HODNĚ náchylné na rušení,
mám ověřeno všude kde je použito 230V kolem Arduina, nebo delší vodiče ke vstupům - třeba alarm.

Nemám odsud přístup kamkoliv na net, tak nenahodím odkazy, ale já to řeším HW,
u mírného zarušení (meteostanice atd.) postačuje filtr R/C - já používám 100n/4,7-10kOHM,
tam kde je větší rušení používám i IO, jeden člen tohoto fora to má myslím i na svých stránkách.

Pohledej "Arduino input filter", nebo něco takového, já se ještě kouknu z domova.
ale v mnoha příspěvcích se to tu omílá pořád dokola.
Nebo si můžeš vyrobit knihovnu pro SW filtrování vstupů, možná nějaká existuje.

PS: Arduino je levné, proto jeho HW stojí trochu zaprd, vyžaduje opravdu perfektní nezarušený zdroj, celé GND kolem něj nesmíš propojit s jeho mínusy, já krabičky když přijdou do razváděče polepuji zevnitř alobalem (teď už měděnou folii), vstupy i výstupy já osobně oděluji optočleny a mám tam HW filtry proti rušení. Filtry jsem okopíroval z PLCček - vychází to dost draho, ale potřebuji u alarmů opravdu spolehlivé vstupy.
Ale já to na stole lámal asi 6 měsíců s osciloskopem a generátorem pro vytváření rušení ;)

https://elvistkf.wordpress.com/2016/04/ ... f-filters/
https://playground.arduino.cc/Code/Filters/

Uff už VPN funguje, já vycházel hodně z tohoto, nevím jak to máte zapojené, jaké napětí atd.
https://forum.mypower.cz/viewtopic.php?f=99&t=1590
a nádherně zpracované od MYLMS, jako vždy
https://www.mylms.cz/osetreni-vstupu-ar ... jinych-io/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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 » 18 srp 2020, 08:16

Už několikrát jsem o tomto projektu přemýšlel a furt mi vrtá v hlavě to zadaní.
Pokud by čerpadlo běželo více jak cca. 2 minuty v jednom kuse relé se vypne
Takove zalivaní zahrady to asi nezvladne ;)

Není lepši použit něco takoveho?
https://www.aliexpress.com/item/33054432260.html

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 » 18 srp 2020, 19:44

Zadání je úplně jednoduché,čerpadlo nesmí běžet více jak dvě minuty v trvalém chodu,jinak spadne do chyby.
Mám tohle čerpadlo a 80l tlakovou nádrž. Čerpadlo i z odběrem vody nikdy neběží více jak 90 sekund nežli se nádrž natlakuje,poté tlakový spínač vypne.Pokud by došla voda ve studni,nebo třeba praskla nasávací trubka,nebo vadná zpětná klapka,čerpadlo poběží pořád na sucho a za dvě minuty se vypne a spadne do chyby-musí přijít obsluha a zjistit závadu a ručně restovat.Pokud bude chyba na výtlaku a pod čerpadlem se objeví voda,jsou instalovány již zmíněné sondy,které čerpadlo uvedou opět do chyby.
https://www.sigmashop.cz/povrchova-cerp ... -2-lm-90-1

sobik
Příspěvky: 3
Registrován: 06 zář 2020, 14:51
Reputation: 0

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

Příspěvek od sobik » 06 zář 2020, 15:50

Ahoj, jen chci upozornit, že snímání polohy stykače vody nízkonapěťovým signálem pro arduino, není dlouhodobě dobré. Kontakty se neoprskávají jako při spínání čerpadla na přímo a začne to zlobit. (osobní zkušenost při řešení přesně zde popisované žádosti ochrany čerpadla). Jediné co je dlouhodobě funkční, je místo mechanického spínače použít tlakový elektronický (nejplépe z proudovým výstupem). Jeho výstup, poté řídí stykač čerpadla a všechny potřebné ochranné časy. Jednoduché, bezproblémové, bez mechanických částí.

Odpovědět

Kdo je online

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