Stabil működésű rendszer építése Arduinoval

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: bagizoltan »

Sziasztok!

Szeretném egy tapasztaltabb ATmega szakértő kolléga segítségét kérni!
Fejlesztettem egy lakásvilágítás vezérlő programot Arduino Uno R3 alatt. A program kipróbálásához nyomógombokat és ledeket kapcsoltam az Uno-hoz és így próbáltam ki a működést. Kb egy-két hónap alatt eljutottam oda, hogy a kapcsolás jól működött.
Ezt követően a programot rátöltöttem egy ATmega328-ra. Készítettem egy áramkört, amin szintén vannak nyomógombok és ledek, 16Mhz kvarc és a hozzá szükséges kondik. Van egy külön táp, ami 7905 táp IC-vel csinál 5V-ot. Az áramkör elsőre működött és azt csinálta amit kell. Amikor azonban hosszabban elkezdtem próbálgatni, azt tapasztaltam, hogy időnként hibák jeletek meg. Konkrétan az áramkör időnként nem reagál a gombnyomásokra, sőt egy idő után "lefagy"! Az Uno-val ilyen soha nem történt. Kb 5 perc alatt el lehet a lefagyott állapotot érni, ha nyomogatom a gombokat. Ja a gombok a kimenetek fel és lekapcsolására, fényerő szabályozásra szolgálnak. Talán az áramkör működése első körben nem is érdekes, mert csak azt akartam megkérdezni, hogy vajon van-e különbség az Arduino és az ATmega328 chip között a fentiek alapján a működésben. Mi okozhatja a lefagyás jellegű hibajelenséget? Mit csináltam rosszul, vagy mit hagyhattam ki az áramkörből? Merre induljak a hiba kiderítéséhez?

Előre is köszönöm a segítséget!

Bagi Zoltán
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kezdő

Hozzászólás Szerző: Robert »

7905 chippel tápfesz : negatív logika - nem jól kezelhető.
Ha 7/24-re tervezel - akkor az Arduinoban kell kb 35-40 módosítás + az ember agyában 10-12 :)
Például:
- felhúzóellenállás a nyomógombokon külső 1k5...3k3.
- prellmentesítés
- memória szivárgás kezelése és monitororása
- interrupt összeakadások kezelése
- watchdog implementálása
- keretrendszer stabil változatának használata (nem béta, és nem a legújabb)
- áramkör áttelepítéskor/rajzoláskor az Arduino alapok mellett az Atmel: AVR hardware design írások alkalmazása
- alkatrészek kiválogazása
- "B" működési tervek és hibakezelés

Az arduino NEM 7/24-re tervezett rendszer!
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Arduino kezdő

Hozzászólás Szerző: bagizoltan »

Szia!
Táp IC típusát elírtam, nem negatív! Helyesen 7805!
Felhúzó ellenállás van. Prellmentesítést a program megoldja. Ebből a szempontból nincs különbség az Arduino és az ATmega328 megvalósítás között!
Memória szivárgás alatt mit kell érteni? Ha Arduino lapkán nem volt, itt lehet?
Watchdog nincs, illetve ezzel egyáltalán nem foglalkoztam, de úgy gondolom az Arduino-ban sem volt, hisz a program amit fejlesztettem ugyanaz.
Nem a lagújabb keretrendszert használtam, de az vélhetőleg Arduino lapkán is okozott volna problémát!
Áramkör az a lehető legprimitívebb módon történt. Egy próba nyákba beforrasztottam csatlakozókat, ledeket, nyomógombokat és vezetékekkel összekötöttem a megfelelő pontokat. Tehát semmi tervezett nyák stb. Ez lehet gond?
Alkatrészként van ugye az ATmega328, egy kvarc néhány kondi és ellenállások, ledek. Viszont közben támadt egy ötletem, hogy mi lehet a baj: akkor vettem észre először működési hibát (nem feltétlenül lefagyást), amikor minden led világított! Bár elvileg 10-20mA-nél több nem volt egyetlen kimeneten sem, ez esetleg okozhat problémát a chip terhelésében? Károsodhat a chip egy esetleges globális túlterheléstől (pl. 8x20mA=160mA teljes terhelés)?
Mi az a "B" működési terv?

Köszi

Bagi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kezdő

Hozzászólás Szerző: Robert »

Az Arduino alkalmatlan 7/24-es üzemre - nem arra tervezték.
Memóriaszivárgás: a programkód rutinokból kilépés után nem(mindig) válik szabaddá a memória, lefoglalsz olyat is amit más már foglalna így hosszú távon.
B terv: pl. ha a főprogram hibásan megy (gomb beragad, stb), akkor mi történik?
Hogy kezeled le pl. a timer túlcsordulást?

A nyákod forrasztás után le lett mosva alkohollal gyantamentesítésre?
A dugdosós is menjen 1-2-3 hetet. Meglátod van e hiba....:)
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Arduino kezdő

Hozzászólás Szerző: csegebiga »

Robert: kérdés: arduino alatt ez esetben mit értesz?
a fejlesztő környezetet? (IDE)
a kváziszabványos fejlesztőpaneleket? (UNO, MEGA, stb)
az AVR chippel összerakott áramköröket? (de ezt miért) hacsak nem az IDE alatt fejlesztett alkalmazás miatt

a témához:
bagizoltan: ha a terhelés változásánál összeomlana a tápod,
vagy a trafód gyenge, (szeknder fesz kisebb 8Vnál, teljesítmény kisebb 5VAnál)
vagy a a 7805 elé kell betenni nagy(obb) kondit. a stab ic után nem szabad, mert a nagyobb fesz a kimenetén villámgyorsan megöli a stabkockát. a 7805 alapból 1A-t bír, hűtőzászlóval.
tehát megfelelő trafó graetz, nagy kondi, 100n kondi, stab ic 100n és egy 4001 dióda a kimenettől a bemenet felé védelemnek
ez a táp.

mérjél rá a tápra miközben megizzasztod az áramkört! stabil, rezzenetlen 5Vnak kell lennie.
mérjél rá az áramkör maximális áramfogyasztására.

nem melegszik valami túlságosan?
stabkocka? avr chip? külső tranzisztor? ellenállat?

a chipen most milyen terhelések dolgoznak?
a ledeken kívül mivel vezérled a fényerőszabályzó áramkört?
optokapu? fet? tranzisztor? ezek fogyasztása a tápot terheli?

nincs-e a gombok felhúzóellenállatai között véletlenül egy túl kicsi értékű?

nincs-e valami úgy bekötve, hogy a chip tápját shöntöli?
induktivitást nem vezérelsz védelmek nélkül, ugye?

jó lenne látni a kapcsolást és a programot
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino kezdő

Hozzászólás Szerző: Robert »

Robert: kérdés: arduino alatt ez esetben mit értesz?
a fejlesztő környezetet? (IDE)
a kváziszabványos fejlesztőpaneleket? (UNO, MEGA, stb)
az AVR chippel összerakott áramköröket? (de ezt miért) hacsak nem az IDE alatt fejlesztett alkalmazás miatt
Az arduino szoftver által generált kódot. (Arduino alatt a mindenféle kiegészítő függvény nélküli, csak a telepítő által feltéve.
A Hardwara nagyjából jó (pl. bemenetvédelmek kellenek, tápszűrés lehetne jobb - de nagy zűrt nem látok, ami miatt az alappanelt kukázni kéne).
Az AVR chipek magukban elég megbízhatóak.... Ott nem érkez ilyen "nem jó 7/24-re" hibát.
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Arduino kezdő

Hozzászólás Szerző: bagizoltan »

Szia Csegebiga!

AZ áramkör roppant egyszerű! Az ATmega néhány lába bemenet! Ezeket úgy használom, hogy 22Kohm-al felhúzom +5v-ra, a kapcsoló meg lehúzza nullára lenyomáskor. A kimenetnek definiált lábakra egy-egy led kapcsolódik 400ohm soros ellenállással, valamint egy mosfet gate-ra van kötve. A mosfet nyilván már más feszültséget kapcsol (12V vagy 24V), nem at ATmega tápját terheli. A fetek dögös hűtőbordán. Az ATmega tápja egy 4,5VA kicsi nyákba forrasztott trafó (7,5v), egyenirányító elkó, és a 7805 stab IC. Kipróbáltam, hogy ha az összes kimenetet bekapcsolom (ledek max fényerővel világítanak) a tápnak ez meg sem kottyan, stabilan tartja az 5 v-ot.
Most azt találtam ki, hogy módosítok a programon, és az egyik kimenetet jelzésre fogom használni, vagyis folyamatosan villogtatom. Amikor a többi kimeneten lefagyást érzékelek (amiről nem tudom eldönteni, hogy lefagyott az IC vagy csak a bemenetet nem érzékeli), és a led villog tovább, az azt jelenti, hogy a program működik. Egyenlőre ezzel próbálkozom, illetve teszek az ATmega föld és +5v lába közé egy 10-100nF kondit, mert azt elfelejtettem. Lehet, hogy nem véletlenül szoktak oda tenni! Csatoltam egy képet a megvalósított áramkörről!
Egyébként csatoltam az áramkör és program leírását. A pdf állomány végén találod a forráskódot, de nem várom, hogy belemélyedj, mert igen bonyolultra sikerült. Szerintem a feladat sem egyszerű, és kicsit sok funkciót is építettem bele, de "nagyot" akartam alkotni. Pontosítok: a teljes világítás vezérlés, és elektromos bekötés a padláson van (lesz), és nem akartam minden változtatáskor felmászni, így minden beállítást az egy-szem nyomógombról programozhatóra csináltam (setup mód).

Nagyon szívesen fogadok bármilyen ötletet, hogyan lehetne kibuktatni, hogy mi a baj. Ismétlem, egy Arduino Uno R3 panelre töltve a programot, teljesen jól működik. Napokig próbálgattam (igaz csak 5 csatornát használtam 8 helyett), ha a közelébe kerültem, nyomkodtam a gombokat stb.

Az esetleg nem lehet, hogy a kvarc környékén van valami baj, és leáll az órajel egy idő után?

Köszönettel

Bagi
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: Robert »

A 22k felhúzóval teletermeled zajjal a rendszert. A nyomgomb vezeték könnyen antennává válik. A külső felhúzó 2k2...4k7 közt javasolt.

MOSFET Gatekapacitását nem illik közvetlenül tölteni/kisütni. Az induláskor (polaritásváltás a lábon) a 25mA töltőáramot átléped! Soros 100 ohm már jó korlátozásnak.
Azonban: bekapcsoláskor minden AVR láb bemenet, Ekkor szokott a FET lebegő GATE miatt túlterhelődni. A GATE/GND közé 100kOhm lehúzó kellene.
A 7805 lábain ott a 2x 100nF gerjedésgátló kondi?

Miért nem sorosporton át konfigurálsz menürendszerként?
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: bagizoltan »

Szia!
Akkor a hibák:
1. a tápon nincs 2x100nF
2. A fet gate felé nincs 100ohm
3. a fet gate és gnd között nincs 100kohm
4. bementeken túl nagy a felhúzó ellenállás (jelenleg még nincs a bemenetek vezeték, így ez várhatóan jövőbeni hibaforrás lehet)

Biztatóan hangzik, mert ezek mind okozhatnak anomáliát! Nagyon köszönöm!

Közben megcsináltam azt, hogy az egyik kimeneti ledet folyamatosan villogtatom. A lefagyás jelenség beálltakor már a led sem villog. Tehát a program sem fut már szerintem!

Holnap átalakítom az áramkört az általad javasoltak szerint!

Bagi
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: bagizoltan »

Köszi a segítséget, a probléma megoldódott!
Sajnos egyszerre megcsináltam minden átalakítást, így nem tudom egyértelműen, hogy a tápra rakott 2db 100nF kondi, vagy a fet gate elé berakott 100ohm volt a megoldás. Utóbbira gyanakszom, mert a fet-ek bekötése előtt kipróbáltam az áramkört és jól működött, de nem sokáig próbálkoztam, így lehet, hogy már akkor is volt hiba csak nem derült ki. Végül is mindegy!
Bagi
Benett
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2013. február 22. péntek, 15:20

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: Benett »

24/7 működéshez nem jelenthetne stabilitást egy időnkénti reset ? Pl óránként resetel.
Képes az ATmega328P vagy 32U4 magát resetelni szoftveresen vagy esetleg egy digitális lábat visszacsatolni a saját reset lábára ?
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: bagizoltan »

Tapasztalatként annyit tennék még hozzá, hogy 4 napja folyik a próbaüzem. Ha arra járok ahol a cucc be van dugva a konnektorba, akkor nyomkodom a gombokat. Lehetőleg egyszerre többet is, és nézem a reakciókat. Eddig nincs hiba. Mindig hagyok bekapcsolva lámpát (egyenlőre ledet), és megjegyzem melyik volt az, hogy legközelebb lássam, maradt-e az állapot! Tegnap TV nézés közben egy órát nyomkodtam. Már unom!
Nyilván lehetne resetelni is, és a wachtdog-ot is használni. Egyenlőre nincs tapasztalatom arról, hogy egy ATmega chip mennyire megbízható. Ha nincs tápfesz ingadozás, nincsenek kóbor impulzusok a vezetékeken, akkor nem látok okot arra, hogy hosszú távon miért ne működhetne megbízhatóan. Mondjuk atomerőművet, vagy orvosi életbentartót nem bíznék rá, de ha a lakásvilágításom évente egyszer igényel majd egy manuális resetet (biztositék lakapcs és felkapcs), az már nekem megbízható működés. Ennél komolyabb megbízhatóságot még a kézzel tekerős húsdarálónk sem produkál éves szinten! Egy év múlva elmondom mi lett!

Bagi
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: csegebiga »

azért én a későbbiekben a nyomógombokat (és a házon átmenő hosszú vezetékeket) leválasztanám a panelről egy jelfogóval.
1 áramkörös jelfogókat már 300 Ft körül lehet kapni, s nagyban elősegíthetik a rendszer zavartűrését.

ugyanígy a kimeneti oldalon a feteket is egy optokapun keresztül hajtanám meg, leválasztva a vezérlést a hosszú vezetékekről.
az első nyári zivatarnál visszahozhatja az árát :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: kapu48 »

Igen ezt sajnos már tapasztaltam!

A hosszú vezeték + villámlás = katasztrófa! Még ha ki is van kapcsolva a berendezés!
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Stabil működésű rendszer építése Arduinoval

Hozzászólás Szerző: bagizoltan »

Jó ötlet a jelfogós leválasztás! A fetek meghajtását már nagyon szét kellene szednem, inkább kockáztatok! Amúgy is készül a fejemben a következő verzió, amiben már új hardvert kell építenem. Ennek lényege, hogy a villany felkapcsolása előtt egy foto ellenállással megmérem a fényerőt, és ha tök sötét van, egy darabig nagyon alacsony fényerővel kapcsolom fel a ledeket. Ha pl éjszaka kimegyek vizet inni, mindig hanyatt lök a fény!
Köszi!
Válasz küldése