časové hlídání dárlingu (vodárny)
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.
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.
Re: časové hlídání dárlingu (vodárny)
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.
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.
Re: časové hlídání dárlingu (vodárny)
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;
}
}
Re: časové hlídání dárlingu (vodárny)
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.
Re: časové hlídání dárlingu (vodárny)
Ahoj
Mám tam odpor 10k a stejně to občas udělá.
Nevím co s tím.
Mám tam odpor 10k a stejně to občas udělá.
Nevím co s tím.
Re: časové hlídání dárlingu (vodárny)
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ě.
Další možnost je udělat si RC filtr a šum na vodiči vyfiltrovat hardwarově.
Re: časové hlídání dárlingu (vodárny)
...tak se mi zatím nepovedlo dát to dohromady
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
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
- 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)
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/
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: časové hlídání dárlingu (vodárny)
Už několikrát jsem o tomto projektu přemýšlel a furt mi vrtá v hlavě to zadaní.
Není lepši použit něco takoveho?
https://www.aliexpress.com/item/33054432260.html
Takove zalivaní zahrady to asi nezvladnePokud by čerpadlo běželo více jak cca. 2 minuty v jednom kuse relé se vypne
Není lepši použit něco takoveho?
https://www.aliexpress.com/item/33054432260.html
Re: časové hlídání dárlingu (vodárny)
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
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
Re: časové hlídání dárlingu (vodárny)
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í.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 19 hostů