Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Arduino - bug ve funkci nebo v designu, řízení světel

Ahoj všem.

Mám potíž s jedním svým naprogramovaným řešením. V jednoduchosti, jedná se o řízení svítidel v místnostech, kdy jako vypínače slouží "touch sensory" a arduino rozsvěcí světla v místnosti (když člověk zmáčkne krátce, rozsvítí se prvních pár žárovek, když drží déle, postupně cyklují přednastavené kombinace, když při svícení krátce stiskne, zhasnou, když dlouze, sekvence rotuje dál, dokud opět neuvolní) pomocí primitivního optotriaku (v každém svítidle pro každou žárovku, svítidla vlastní design ;-)).

Tohle mám celkem odladěné, vstup je ošetřený (zkoušel jsem jak mechanický spínač, tak touch sensor, u kterého jsem zůstal, je výrazně méně kmitající), to řešení je robustní, nikdy to nesplete stisk vypínače.

Celé je to běží na 5V, signálové kabely mám udělané kroucenou dvoulinkou z UTP kabelů. Občas v krkách a roštech je souběh se kabely 230V.

V celém systému mám ale problém. Světlo občas samo zhasne, jako by někdo stisknul krátce vypínač. Vysledoval jsem, že téměř vždy se to stává při zapnutí velkého elektrického spotřebiče. Občas ale samo od sebe (ale je možné, že někdo velký spotřebič zapnul jinde v ulici). Tím ale moje výzkumy končí. Spotřebič ani nemusí být zapojený v té samé místnosti (aby jeho napájení procházelo blízko signálových vodičů).

- Teorii s tím, že na vstupu (od dotykových sensorů) se spuštěním velkého spotřebiče vygeneruje nějaká špička jsem totiž téměř s jistotou vyloučil, protože světlo se nikdy samo nerozsvítí. Tahle anomálie se objevuje výhradně, když světlo svítí. Přitom stiskem stejného senzoru se světlo jak rozsvěcí, tak také zhasíná. Navíc je vstup ošetřen poměrně velkorysým "opakovacím časem" >50ms, to jest dobou, po které se znovu podívá, jestli je vstup stále stisknutý, právě aby došlo k eliminaci krátkých špiček či záchvěvů.

- Teorii o krátkém výpadku zdroje (dojde k resetu programu) jsem také vyloučil, do programu je totiž zabudován mechanismus jako ochrana proti výpadku. Dojde-li k výpadku proudu (v praxi vlastně reset programu), světla se rozsvítí tak, jak byla před výpadkem, pouze korektní vypnutí tlačítkem zaručí, že se světla po výpadku proudu nerozsvítí.

Neměl by někdo nápad, kde a jak by mohlo problém vznikat a jak ho odstranit? Rozhodoval jsem se, zda to dát sem či do Kutilské, oboje je asi relevantní, tu z programové části, tam z elektronické. Tady se snad pohybují i lidé znalosti silnoproudé.

JR

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
V prvom rade by som preskúmal spôsob načítavania touch senzora. Nesmieš reagovať na prvý impulz zo s…
ok 18.04.2018 08:15
ok
Jako první jsem na spínání používal klasické tlačítko, takže zákmity jsem ošetřoval. V laboratorních…
JR_Ewing 18.04.2018 08:52
JR_Ewing
"...mám v programu ošetřené, že aktuální hodnota (zjednodušeně svítí/nesvítí) se zapisuje do EEPROM…
ok 18.04.2018 09:57
ok
Ano, zní to jako nejpravděpodobnější varianta, ale tato náhoda funguje pouze pro zhasínání. Nikdy se…
JR_Ewing 18.04.2018 13:00
JR_Ewing
Ako máš ošetrené nulovacie vstupy (set/reset) posuvného registra? Musia byť ošetrené (všetky) pripoj… poslední
ok 18.04.2018 15:40
ok

V prvom rade by som preskúmal spôsob načítavania touch senzora. Nesmieš reagovať na prvý impulz zo senzora, ale až potom, čo si overíš po pár desatinách sekundy, že senzor je stále aktívny.
Pozrel by som sa aj na zdroj, či sieťové rušenie neprechádza cez neho. Napríklad na otestovanie by som ho vyradil úplne a nahradil napájaním arduina cez USB z power banku.

Jako první jsem na spínání používal klasické tlačítko, takže zákmity jsem ošetřoval. V laboratorních podmínkách (mám přípravek se stejným touch sensorem a ledkami, které mi zobrazují stav výstupů) to neblbne a funguje jak má.

To s tou power bankou není blbý nápad. To se dá realizovat v podstatě hned.

Zdroje jsou po cestě dva, mám udělaná 24V rozvod (kde je momentálně zdroj Mean Well) a za ním integrovaný DC/DC měnič 24/5.

Jak jsem ale psal, mám v programu ošetřené, že aktuální hodnota (zjednodušeně svítí/nesvítí) se zapisuje do EEPROM a pokud dojde k resetu programu/výpadku proudu tak slouží k ověření, jestli před tím svítil či ne, pokud ano, opět se rozsvítí.

"...mám v programu ošetřené, že aktuální hodnota (zjednodušeně svítí/nesvítí) se zapisuje do EEPROM a pokud dojde k resetu programu/výpadku proudu tak slouží k ověření, jestli před tím svítil či ne, pokud ano, opět se rozsvítí."

Ale u teba zrejme nedochádza k výpadku prúdu a k resetu, ale k náhodnému načítaniu zo senzora. A na základe toho rozsvietiš/zhasneš svetlo a zároveň urobíš aj zápis do EEPROM. Takže softwarové ošetrenie zákmitov zo snímača je namieste.

Ano, zní to jako nejpravděpodobnější varianta, ale tato náhoda funguje pouze pro zhasínání. Nikdy se samo nerozsvítí, přitom by ten "záchvěv" mělo být šumák, jestli přijde v zapnutém či vypnutém stavu. Programově je zpracováván úplně stejně. To mi tam do té úvahy nezapadá :-/.

Ten problém je stejný, když to bylo v pilotním nasazení ještě v nepájivém poli, spínané to bylo mechanickým tlačítkem a signálovým vodičem byla telefonní čtyřlinka s dlouhým souběhem podél vodičů 230, stejně se problém ale projevuje i teď, (jiná místnost) kdy to mám ve finální verzi, spínané kapacitním senzorem (mnohem méně kmitavý vstup), signály vedené kroucenou dvoulinkou (větší odolnost proti náhodnému rušení) a s vodiči 230 se to v nejhorším případě kříží.

Ako máš ošetrené nulovacie vstupy (set/reset) posuvného registra? Musia byť ošetrené (všetky) pripojením na nulu, či +5V podľa funkcie. Ak to nie je ošetrené, tak to môže byť vstup rušivého signálu - aj keď obvod zdanlivo funguje (niektorý z týchto vstupov môže obvod vynulovať, čo sa prejaví zhasnutím, ale už nie rozsvietením svetla).

Zpět do poradny Odpovědět na původní otázku Nahoru