RTV forum PL | NewsGroups PL

Atmega128 i klawiatura z 9 przyciskami: Problemy z kondensatorami przy podłączeniu

Atmega - podłączanie przycisków - ku przestrodze !

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Atmega128 i klawiatura z 9 przyciskami: Problemy z kondensatorami przy podłączeniu

Goto page 1, 2, 3, 4  Next

sundayman
Guest

Sat May 03, 2014 5:25 pm   



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 Smile - 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 ??

szod
Guest

Sat May 03, 2014 5:56 pm   



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

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

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.

sundayman
Guest

Sat May 03, 2014 6:01 pm   



Quote:
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.

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.

Sebastian Biały
Guest

Sun May 04, 2014 6:43 am   



On 2014-05-03 20:01, sundayman wrote:
Quote:
A tutaj działy się cuda na kiju - łącznie z przeskoczeniem programu
zupełnie w inne miejsca Smile

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.

Atlantis
Guest

Sun May 04, 2014 7:03 am   



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

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

http://mikrokontrolery.blogspot.com/2011/04/przycisk-drgania-stykow-debouncing.html

Brak jednego rezystora. Po naciśnięciu przycisku kondensator oddaje cały
swój ładunek przez kawałek kabla, którego indukcyjność w tym przypadku
już ma znaczenie. Efekt - szpilka ujemnego napięcia.

Marek
Guest

Sun May 04, 2014 7:23 am   



On Sat, 03 May 2014 20:01:52 +0200, sundayman
<sundayman@poczta.onet.pl> wrote:
Quote:
A tutaj działy się cuda na kiju - łącznie z przeskoczeniem programu
zupełnie w inne miejsca Smile
Później to spróbuję przeanalizować, bo dobrze byłoby wiedzieć
dokładnie


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

--
Marek

Marek
Guest

Sun May 04, 2014 9:04 am   



On Sun, 04 May 2014 09:03:01 +0200, Atlantis <marekw1986NOSPAM@wp.pl>
wrote:
Quote:
swój ładunek przez kawałek kabla, którego indukcyjność w tym
przypadku
już ma znaczenie. Efekt - szpilka ujemnego napięcia.

zawieranie kondensatorów nie jest dobrym pomysłem, rezystancja pętli
zwarcia w takim przypadku przy 5V@100nF w czasie kilkudziesięciu ns
może wywoływać przepływy prądu rzędu 10-20A. To nie jest zdrowe dla
zestyków czy samego kondensatora, nie wspominając już o szalejącym
mcu.Zaciekawiły mnie te spontaniczne skoki w "różne miejsca
programu". Jesteś pewien, że to co nazywasz "skokami" to nie efekt
resetu i start programu z innymi warunkami początkowymi, stąd
złudzenie przeskoku do innej części kodu?

--
Marek

Robbo
Guest

Sun May 04, 2014 11:30 am   



Quote:
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.

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.

Sebastian Biały
Guest

Sun May 04, 2014 12:19 pm   



On 2014-05-04 13:30, Robbo wrote:
Quote:
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.

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.

tusk, donald tusk
Guest

Sun May 04, 2014 12:30 pm   



a gdybyś wywalił kwarc i dał generator?

Mario
Guest

Sun May 04, 2014 1:19 pm   



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


Quote:
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.

Jaka wartość kondensatora?


--
pozdrawiam
MD

Dykus
Guest

Sun May 04, 2014 7:22 pm   



Witam,

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

Quote:
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.

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...


--
Pozdrawiam,
Dykus.

sundayman
Guest

Sun May 04, 2014 8:38 pm   



Quote:
mcu.Zaciekawiły mnie te spontaniczne skoki w "różne miejsca programu".
Jesteś pewien, że to co nazywasz "skokami" to nie efekt resetu i start
programu z innymi warunkami początkowymi, stąd złudzenie przeskoku do
innej części kodu?

Jestem pewien - otóż program jest zbudowany tak, że są różne hasła -
instalatora, użytkownika, fabryczny.I np. w menu instalatora nie ma
rzeczy, które są w menu fabrycznym.

W obecności tych kondensatorów, próba wejścia w menu instalatora
powodowała, że np. wchodziło się w procedurę obecną tylko w menu
fabrycznym.

W każdym razie na pewno nie poprzez reset, bo kiedy program startuje od
początku, to jest to nie do przeoczenia - tam się wiele rzeczy dzieje na
starcie (program ma około 10.000 linii).

Oczywiście takie rzeczy działy się sporadycznie - w 90%
program albo się wywalał, albo najpierw kaszana na LCD i potem reset
(przez watchdoga oczywiście).

sundayman
Guest

Sun May 04, 2014 8:58 pm   



Quote:
W każdym razie na pewno nie poprzez reset, bo kiedy program startuje od
początku, to jest to nie do przeoczenia - tam się wiele rzeczy dzieje na
starcie (program ma około 10.000 linii).

no chyba, że było to spowodowane np. pokaszanionymi wartościami jakichś
zmiennych, decydujących o tym, w którą potem procedurą wejść. No to jest
możliwe i efekt byłby taki sam - czyli zamiast wejść w pozycję menu "X"
program wchodził w "Y", które w ogóle nie jest nawet wyświetlone...

Robbo
Guest

Sun May 04, 2014 10:22 pm   



Quote:
Jaka wartość kondensatora?

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.

Goto page 1, 2, 3, 4  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Atmega128 i klawiatura z 9 przyciskami: Problemy z kondensatorami przy podłączeniu

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map