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

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