Atmega - podłączanie przycisków - ku

Dopiero co tu rozmawialiśmy o podciąganiu przycisków itp. ale zakładam osobny temat, bo poniższe lepiej przeczytać i wiedzieć - jako przestroga.

Sprawa dotyczy tego samego urządzenia, no ale to mniej ważne. Ważne jest, że 2 dni straciłem na poszukiwanie perfidnego problemu.

Otóż, w poprzedniej wersji miałem takie rozwiązanie ;

klawiatura (9 przycisków) podłączonych przewodem taśmowym ok. 13cm do PCB z procesorem (atmega128). 10 żył (9+masa).

Czyli są 2 PCB; klawiatury i procesora. Na PCB klawiatury, równolegle z każdym przyciskiem był kondensator

100nF. Rezystory podciągające włączone w Atmedze.

I zasadniczo wszystko działało. No, poza tym jednym przypadkiem, kiedy mi się te rezystory podciągające w MCU odłączyły, co już opisywałem parę razy.

No i teraz - postanowiłem sobie poprawić, i zrobiłem 2 zmiany;

- dałem zewnętrzne rezystory podciągające 10K

- kondensatory 100nF przeniosłem z PCB klawiatury na PCB procesora - tuż przy złączu taśmy, niedaleko procesora.

I co ? Niby wydawałoby się, że to nic nie powinno zmienić. NIEPRAWDA !

Nagle okazuje się, sterownik głupieje ; podczas naciskania klawiszy dzieją się cuda - nie zawsze, ale często program się wywala, albo sobie przeskakuje w dowolne miejsce, albo kaszani się LCD.

No masakra. 2 dni straciłem na walkę z programem, bo myślałem, że coś tam jest nie halo - chociaż poprzednio ten sam program był, i było ok.

Rozwiązanie ? Kondensatory ! Po wylutowaniu tych kondensatorów wszystko wróciło do normy !

Co ciekawe, zanim w desperacji wywaliłem te kondensatory, podglądałem oscyloskopem napięcie na liniach wejściowych klawiatury - i nic podejrzanego !

Co jeszcze ciekawsze, kondensatory blokujące, które były poprzednio na PCB były tej samej wartości - też 100nF. Co oznacza, że kiedy ten kondensator był "za" 13 centymetrowym kawałkiem przewodu - nie stwarzał problemu. A podłączony blisko MCU - robi problem.

Dlaczego ? Zapewne te 100nF to za dużo, i podczas zwierania go do masy przez "odległy" przycisk dzieją się jakieś cuda - może z prądem wpływającym lub wypływającym do pinu procesora - dlatego podgląd napięcia nic nie ujawnia.

W tej chwili nie mam czasu na dokładne rozgryzanie - bo mam parędziesiąt urządzeń do poprawki :) - czyli do wywalenia tych kondensatorów...

Ale potem wrócę do tego - bo gdybym sam tego nie przeżył, to bym nie uwierzył, że taki cyrk jest możliwy. Co opisuję ku przestrodze !

Dodam dla jasności, że MCU zasilany z 5V, zasilania do MCU doprowadzone przez dławiki (odpowiednie) + zablokowane kondensatorami itp. Czyli od strony zasilania jest ok - opisuję, bo oczywiście najpierw myślałem, że coś się dzieje od tej strony.

No i teraz pytanie się rodzi - zapewne zmniejszenie tych kondensatorów problem wyeliminuje - ale ile powinno być, i dlaczego tyle ??

Reply to
sundayman
Loading thread data ...

W dniu 03-05-2014 19:25, sundayman pisze:

Te kondensatory nie są konieczne. W teorii mają likwidować drgania styków. U Ciebie do tych kondensorów doszła indukcyjność taśmy i może tu jest problem. Poprawnie napisany program nie wymaga tych kondensatorów. Można dać jakieś symboliczne wartości np. 1n. Zbyt duże wartości mogą sprawiać kłopoty zwiększając czas narastania / opadania w połączeniu z rezystorami podciągającymi w uC oraz dodatkowymi indukcyjnościami w układzie.

Reply to
szod

Zastanawiam się, czy właśnie biorąc pod uwagę indukcyjność przewodu tam nie powstaje jakieś ujemne napięcie, czy coś - bo sam czas narastania chyba nie powodowałby kaszanienia się programu.

A tutaj działy się cuda na kiju - łącznie z przeskoczeniem programu zupełnie w inne miejsca :)

Później to spróbuję przeanalizować, bo dobrze byłoby wiedzieć dokładnie co się tam wyrabia.

Reply to
sundayman

Do dzisiaj nie wiem dlaczego AtMega128 pomimo zastosowania absurdalnych zabezpieczeń, włacznie z izolacja optyczna czego się dało, kilkudziesięciu kondensatorów na zasilaniu, podciągania wyjśc nieuzywanych, zwieszala się lub resetowała z powodu *małego* silnika indukcyjnego metr dalej. Albo to jest naprawdę jakiś problem z niektórymi AtMega albo dupa ze mnie a nie elektronik.

Reply to
Sebastian Biały

A klikajac lutownica transformatorową blisko układu coś się dzieje?

Reply to
Marek

Jeśli chodzi o ATmega32, to takie układy pracują przy transformatorach zgrzeawlniczych 100kVA i nic się z nimi nie dzieje. Jeśli chodzi o ATmega128, to jedynie używałem go do prostownika 600A, gdzie włączanie obwodu siłowego potrafiło wykrzaczyć wyświetlacz, natomiast z ATmega128 nic się nie działo. Układy też testuję za pomocą jonizatora oraz starego sporego stycznika - okręcam przewody wokół stycznika, dotykam jonizatorem do obudowy. Nic złego się nie działo z ATmegami. Generalnie wszelki problemy z ATmegami, które miałem, to były moje błędy, głównie programowe.

Jeśli chodzi o zabezpieczenie układu, to stosuję także kondensatory między masą a PE (pisałem już o tym kilka razy). To jest naprawdę dobre i pozwoliło mi się pozbyć problemów ze znikającym obrazem z wyświetlaczy. Wystarczy jeden taki kondensator. W jednym z falowników, który rozbierałem producent dał dwa takie kondensatory. Ja, na wszelki wypadek, w moim nowym układzie dam cztery w różnych miejscach. Mam to szczęście, że mam do dyspozycji PE, ale nie każdy ma taką dogodność (na przykład twórcy układów zasilanych z baterii).

Robbo.

Reply to
Robbo

U mnie było tak:

Miałem kilka wariantów płytek pod Atmega8l. Niezawodnie działało przez lata klepiąc stycznikami, sterują silnikami w środowisku "przemysłowym" w odległościach centymetrowych od źródła szumu. Miałem licznik w watchdogu ile razy się zresetował. Nie resetował się przez miesiące.

Pewnego dnia skończył się flash i trzeba było przeprojektować pod atmega128 (bo jak zrobić to raz a dobrze, w dodatku 128 jest jakoś śmiesznie tani). W zasadzie żaden problem, wszystko zostało to samo, tyle że więcej kondensatorów i wiecej lini do podciągnięcia. I zaczely się jaja (a program praktycznie ten sam poza adresami rejestrów). Zmniejszyłem w końcu clock do 1MHz i analizowałem co się dzieje. Program wskakiwał w przypadkowe miejsca w momencie klepnięcia przekaźnika tak jak gdyby przestawiały się pojedyncze bity rejestru wskaźnika instrukcji. Sprawdzilem kilkadziesiąt razy połaczenia i żadne nie wisiało, wszystkie zasilania perfekcyjne. Myśle - pewno szpilki w zasilaniu. A gdzie tam, albo mam za wolny oscyloskop albo nie było żadnych szpilek. Potem poszly meotdy drastyczne: zasilanie z akku, izolacja optyczna co się dało itd, najdłuższy przewód miał ze 2cm. Dalej zalaczenie przekaźnika w silniku obok powodowalo pewne prawdopodobieństwo wskoczenia w krzaki. Tak po prostu. Pomyślałem: jestem dupa nie elektronik. Wziąłem cudzą płytkę prototypową z mega128, zasilaniem z baterii i po kilku załaczeniach silnika - bum.

Obok pracujący Mega8 ani się nie zająknąl mimo znacznie gorszych warunkow pracy.

IMHO problem jest w krzemie. Tym bardziej że internety też gadały o badziewności krzemu 128.

PS. Lutownica transformatorowa też powoduje przeskoki, ale bardzo rzadko. W zasadzie przyłapałem 2x na skoku w krzaki przy machaniu przez kilka minut wlaczona lutownicą. Soft byl tak przygotowany aby cała pamięć wypełnić poleceniem ustawienia gdzieś na porcie 1 a główna pętla nie miała prawa wyjść. I wychodziła ...

Nie stosuje już 128. Byc może to moja wina, ale kilka PCB *akurat* nie działają 128 a działają wszelkie inne. Dziwne. Ba, pająk z SAM7 zrobiony byle jak nie zresetował się ani razu pomimo że to jednak rząd wyżej komplikacji i więcej krzemu.

Reply to
Sebastian Biały

a gdybyś wywalił kwarc i dał generator?

Reply to
tusk, donald tusk

W dniu 2014-05-04 13:30, Robbo pisze:

Jaka wartość kondensatora?

Reply to
Mario

Witam,

W dniu 2014-05-03 19:25, sundayman pisze:

Tak jak pisałem, dołączanie kondensatorów równolegle do klawiszy to nie jest najlepszy pomysł. Kondensator rozładowuje się przez klawisz - wcześniej, gdy kondensator był blisko klawisza to i pętla była mała. Jak przeniosłeś na drugą płytkę, to pętla się zwiększyła i emisja zakłóceń także.

Swoją drogą, przyjrzyj się płytce z mikrokontrolerem, czy aby layout tam nie jest do poprawy... Jak już ktoś pytał - test lutownicy transformatorowej przechodzi?

Wiem, że nie masz czasu, ale możesz zbudować oddzielny układ z baterią, rezystorem, kawałkiem taśmy, klawiszem, kondensatorem 100nF i sprawdzić, którędy przedostawały się zakłócenia...

Reply to
Dykus

W nowym projekcie widzę, że jest 1nF. Wcześniej były czasem 2nF.

Nowy układ jest w metalowej obudowie, a płytka PCB jest podparta na pięciu metalowych kołkach. Do czterech z tych kołków, które stanowią PE, daję kondensator do masy. To tak na wszelki wypadek, bo w poprzednich układach był jeden kondensator.

W prostowniku 600A, przy włączaniu obwodu siłowego, znikał obraz na wyświetlaczu. Wyświetlacz jest podłączony do PCB dość długą taśmą (25cm chyba) taką, jak do dysków IDE. Próbowaliśmy różnych rzeczy - izolowanie wyświetlacza od obudowy przekładką z izolatora, kondensatory w różnych miejscach (na przykład na zasilaniu na płytce wyświetlacza albo na zasilaniu wyświetlacza na PCB), koralik ferrytowy na taśmie. Niektóre zabiegi trochę poprawiały sytuację. Natomiast wstawienie kondensatora między masą a PE rozwiązało problem.

Swoją drogą, jeśli ktoś mógłby podpowiedzieć, co się robi, aby uodpornić wyświetlacz na zakłócenia, to byłbym wdzięczny.

R.

Reply to
Robbo

W sumie zrobiłem tylko dwa układy na ATmega128. Teraz pracuję nad nowym, który zastąpi ATmega32, będzie pracował w większej liczbie zakładów, będzie narażony na silne pole elektromagnetyczne, więc będę mógł sprawdzić, jak się sprawuje ATmega128. Mam nadzieję, że nie będzie problemów.

R.

Reply to
Robbo

Ha - dobre pytanie.

W ogóle, to są ekrany elektromagnetyczne na wyświetlacze, ale osobiście nie stosowałem, bo ceny pewnie kosmiczne :)

U siebie wprowadziłem takie rozwiązanie, że procesor może odłączyć zasilanie LCD, pozwalając na "twardy reset" - i profilaktycznie robi to raz na 30 sek. Widoczne jest jest jako króciutkie mignięcie, niespecjalnie przeszkadzające.

Co prawda, późniejsze poprawki programu i inne właściwie wyeliminowały problem z LCD, ale zostawiłem to na wszelki wypadek, bo nie przeszkadza, a ja mam ciut spokojniejszy sen...

Ale czy to jest "profesjonalne" rozwiązanie ? Wątpię mocno :)

Reply to
sundayman

Lutownica nic nie robi, także pstrykając z grotem przytkniętym np. do zasilania przewodów zasilania. Mam też taką zapalarkę do gazu typu "CCCP zażigałka" (coś takiego mniej więcej

formatting link

- napierdziela toto iskrami - też nic nie powoduje negatywnego.

Co do PCB, to wydaje się ok, ale oczywiście nadmiar kontroli nie zaszkodzi - wrócę jeszcze do tego tematu, i wtedy zapodam tutaj z ciekawości.

No właśnie, teraz niestety nie mam wolnej chwili (jak widać po godzinie wysyłania tego postu :). Ale Jak będę miał kolejne egz. na stole , czyli za jakieś parę dni, to dokładniej zmierzę, co się tam dzieje na tych pinach klawiatury, bo to warto wiedzieć.

Reply to
sundayman

Użytkownik "sundayman" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:lk390c$phg$ snipped-for-privacy@node1.news.atman.pl...

[...]

Mam wrażenie, że nie myślisz jak projektujesz, albo brakuje Ci podstawowej wiedzy. Jak do kondensatora naładowanego do 5V podłączysz L tworząc obwód rezonansowy o dość dużej dobroci to napięcie na kondensatorze osiągnie prawie -5V, ale wcześniej natknie się na diody na wejściu procka.

Jakiego rzędu prąd dostaną te diody:

1cm drutu to około 10nH. 26cm drutu to około 260nH. CU^2=LI^2. I^2=25*100/260=9.6; I=3A.

Dopuszczalny prąd to chyba 20mA, ale (nawet przy zachowaniu tego limitu) nie jest zalecane wykorzystywać te diody w normalnym działaniu, a ty je wykorzystujesz dając im około 3A. Poza tym co struktura na to, jest też pytanie, co sąsiednie druciki w procku na to, że jednym z nich przepłynie 3A w impulsie, a wypłynie innym lub innymi.

Między klawiaturą (zawsze może być źródłem ESD) a prockiem powinien być jakiś filtr (kilka dni temu o tym pisałem). Tu jest taka sytuacja, że nawet bez ESD z zewnątrz układ sam sobie robi kuku.

Jak usuniesz kondensatory to z kolei groźne stanie się to od czego one miały zabezpieczać - ESD z palca kogoś dotykającego klawiatury. P.G.

Reply to
Piotr Gałka

użytkownik Robbo napisał:

Te tansze lcdki maja mniejsza ilosc elementow, u mnie widzialem ze brakuje jednego tantala i dwoch ceramikow na zasilaniu, widac chinczyk oszczedza. Mozna wlasnorecznie dolutowac te elementy. Sa ferryty do tasm, dedykowane dlawiki i transile. Wlasnie sobie dlubie sterowanie lcd przez hc164, tj. jedna dluga linia od proca do hc164, krotkie laczenie hc164 z lcd, nie wiem jeszcze co wyjdzie:) Wiem tyle ze latwiej jest zabezpieczyc 2 linie niz 6.

Kiedys rozbieralem pewna maszynke, tam na koncu kazdego ekranowanego przewodu byla "owijka" na ferrycie, kazda tasma byla ekranowana, czyli zupelnie inna bajka.

Reply to
leming.show

No przyznaję, że nie zastanawiałem się wcześniej nad tym od strony teoretycznej za bardzo. Jak widać rutyna i przekonanie o własnej wiedzy bywa mocno zdradliwe :)

Trudno się nie zgodzić.

To jest o tyle mało ryzykowne, że klawiatura to mikroswitche (takie większe), umieszczone dodatkowo za elastyczną folią frontową. Z kolei front jako taki to PCB z podłączoną do masy warstwą miedzi, więc raczej nie ma ryzyka ESD.

Ale oczywiście, rzecz do poprawienia, no i nauczka na przyszłość :D

Reply to
sundayman

Jutro sprawdzę, bo nie mam pod ręką chyba nic takiego... No sam jestem ciekaw.

Reply to
sundayman

Użytkownik "sundayman" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:lk6vkn$jg0$ snipped-for-privacy@node1.news.atman.pl...

To są zabawki. Weź stycznik na 230V ze stykiem pomocniczym (rozwiernym). Najlepszy był SM1. Połącz tak, żeby zrobić brzęczyk. Jeśli urządzenie przeżyje włączenie tego ustrojstwa to je dobre :) Nie wystrasz się przy włączaniu :) Wojtek

Reply to
wowa

Mam spory stycznik, który podłączam do 230V. Stycznik sobie klekocze. Ja okręcam wokół niego przewody (zasilające, sygnałowe). Zbliżam stycznik do urządzenia itp. itd.

Ale mam też własnej produkcji jonizator. Blaszki są ustawione w takiej odległości, że przeskakuje między nimi iskra. Zbliżam to do obudowy urządzenia, dotykam do śrubek obudowy itp.

R.

Reply to
Robbo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.