Stránka 1 z 2

Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 20 bře 2020, 09:23
od romandj1
Zdravím,
potřebuji poradit. Vlastním modelové kolejiště, a dle toho návodu http://www.vejrov.cz/2017/09/arduino-7- ... -zvuk.html jsem si postavil staniční hlášení. Vše funguje skvěle, ale bohužel mám jeden problém a už vůbec nevím jak dál => Arduino se mi samovolně spouští.
Jedná se o analogové kolejiště, kde vše je ovládáno přes relé.
Relé jsou napájena samostatným 12V zdrojem.
Výhybky jsou nápajeny také samostatným zdrojem (střídavý proud).
Arduino je napájeno samostatným 5V (500 mA) zdrojem.
Problém je pokud například sepnu nějakou výhybku, tak se mi spustí Ardunino a začne hrát. Nebo sepnu nějaké relé a opět se mi spustí Ardunino. Releé sepnu třeba 2x, 3x a nic po 4 sepnutí se pustí Ardunino a začne hrát.
Nemáte někdo představu jak toto vyřešit? Jak se to může navzájem ovlivňovat, když to není nikde spojené?
Předem moc díky

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 20 bře 2020, 09:58
od kiRRow
Někde se ti na vstupech arduina nabírá nějaké rušení. Relátka, motory a další věci pracující s magnetickým polem indukují do vodičů v jejich okolí rušení. Ten MCU probíhá tím loopem strašně rychle a i krátký "ruch" ti veme jako 2-3 stisky tlačítka. Dá se to řešit HW - správně stíněné vodiče, faradayova klec pro elektroniku, RC filtry a schmitovy klopné obvody na vstupech ... Dá se to řešit SW - viz debounceButton example -

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 20 bře 2020, 10:16
od kiRRow
Jako první bych zkusil obrácení logiky :
Všechny odpory z mínusu na plus. Všechny tlačítka z plusu na mínus. A v programu všechny if (buttonState == HIGH) přepsat na LOW.

Snadněji se z LOG0 rušením udělá LOG1 než naopak - to zase umí špatně filtrované zdroje

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 20 bře 2020, 10:46
od ondraN
Měl jsem na kolejišti podobný problém a vyřešilo ho spojení pinu arduina RESET s napájením 5V přes rezistor 220ohm.

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 20 bře 2020, 17:14
od jankop
Asi bych snížil hodnotu rezistorů na cca 3k3.

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 23 bře 2020, 18:08
od romandj1
Děkuji všem za rady. Zatím vyzkoušeno:
- spojení pinu arduina RESET s napájením 5V přes rezistor 220ohm => bez úspěchu.
- výměna kabelů od tlačítek k Arduinu za stíněné kabely => bez úspěchu.

Stíněné kabely Arduina jsou vedeny společně s ostatními kabely relátek, výhybek, apod. Myslíte, že by se to mohlo stále ovlivňovat?
Délka kabelu od Arduina k tlačítkům je cca 1,5m.

Další pokus bude obrácení logiky... Dám vědět, zda zabralo.

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 24 bře 2020, 08:42
od pavel1tu
Musíš ošetřit vstupy na Arduinu,
jak se zde píše - menší odpory, nebo prostě nějakým filtrem (RC atd.).
Ale pomohou ty odpory i obrácení logiky a je to nejjednodušší.

PS: stínění od kabelů dát na minus, nebo kostru - ale jen na jedné straně !!!

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 24 bře 2020, 10:58
od romandj1
Obrácení logiky vyzkoušeno, ale zatím bez úspěchu... vyzkouším menší odpory. Samozřejmě že 3k3 zrovna nemám, ale mám tu 2k2, myslíte, že bude stačit?
Vše je nápájeno laboratorním zdrojem, takže napětí by mělo být čisté... Ale nějaký filtr vyzkouším také.
Stínění kabelů mám na jedné straně spojené s mínus na zdroji.

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 24 bře 2020, 14:25
od passion
Nechaj obrátenú logiku (tlačítka nie na plus, ale na mínus a rezistory len odpoj od mínus prípadne ich pripoj na plus, ak to bude ešte blbnúť) a skús vo void setup nastaviť vstupy 4 až 13 ako s internými pullup rezistormi.
pinMode(4, INPUT_PULLUP); atď...

Re: Samovolné spouštění klon Arduino Nano V3.0 R3, CH340G

Napsal: 24 bře 2020, 14:36
od kiRRow
Na přesnou analýzu tohohle problému je nejlepší přítel osciloskop. Ten ti doslova ukáže co se ti na těch pinech děje. Pokud není HW výbava, tak se to dá i vyřešit pomocí programu, kdy budeš reagovat pouze na impulzy o nějaké minimální délce.

Tahat v jednom svazku kabelu napájení na spínání relátek a zároveň signály pro řízení mikroprocesoru není moc dobré. Stínění pak postrádá jakýkoliv smysl.