logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR] [AVR][c] - Zakłócenia w działaniu przycisku w projekcie z wygiętą rurą i kółkiem

Sokolsok 10 Wrz 2013 19:46 2388 10
REKLAMA
  • #1 12721561
    Sokolsok
    Poziom 11  
    Witam wszystkich, otóż mam pewien problem. Ostatnio spłodziłem pewien projekt:
    [AVR] [AVR][c] - Zakłócenia w działaniu przycisku w projekcie z wygiętą rurą i kółkiem
    Jest to zabawka dla firmy eventowej. Zasada działania jest prosta,mamy tą wygiętą rurę, płytki na początku i końcu i kółko którym trzeba przejechać bez dotykania rury. Jeden wyświetlacz zlicza czas a 2 ilość dotknięć. Gdy testowałem układ na kabelkach przy kompie to nie było problemów, po podłączeniu rury i całej reszty pojawiają się zakłócenia. np. zlicza błędy po gdy powinien stopować licznik, albo wyłącza licznik gdy powinien zliczyć błąd. Dzieje się to tak w 1/30 razach mniej więcej, w losowych odstępach czasu, czyli powodem nie jest kod. Mówiąc, że na kabelkach jest wszystko ok miałem na myśli że nie ma tych zakłóceń, ale również występuje coś dziwnego. Schemat podłączenia:
    [AVR] [AVR][c] - Zakłócenia w działaniu przycisku w projekcie z wygiętą rurą i kółkiem
    Masa, jest podłączona do kółka, a rura przez rezystor 10K do 5V. Sprawdzam czy rura dotyka kółka przez sprawdzenie czy na porcie uc pojawił się stan niski. Ale wystarczy że dotknę rurę czymkolwiek metalowym wykrywa mi to jako stan niski. Mimo że to metalowe nie jest podłączone z masą.

    Z góry dzięki za odpowiedź.
  • REKLAMA
  • #2 12721649
    lukasz_elektronika
    Poziom 13  
    Pokaż kod i pełny schemat
  • #3 12721694
    Sokolsok
    Poziom 11  
    Kod mogę pokazać ale jest klasycznym przykładem jak nie powinno się pisać kodów:P I zaraz dostanę opieprz za to jak to napisane jest: nie ma komentarzy i zmienne mają nic nie mówiące nazwy. Pisałem to z mega małym limitem czasowym.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Co do schematu to go nie mam..
  • REKLAMA
  • #4 12721807
    lukasz_elektronika
    Poziom 13  
    Sokolsok napisał:


    ISR(INT1_vect) //RURA
    {
    blad++;


    er1=blad%10;
    er2=((blad%100)-er1)/10;
    er3=(blad-(blad%100))/100;

    GICR = 0x0;
    }


    tak na szybko... wchodzisz do obsługi przerwania i zwiększasz zmienną błąd nie sądzisz, że powinna być jakaś zwłoka pomiędzy kolejnymi przerwaniami. Chodzi o to, że takie jedno dotknięcie nie koniecznie może zostać zinterpretowane przez uC jako pojedyńcze. Po obsłudze przerwania zablokuj je na jakiś czas potem odblokuj taki debuncing styków...

    Dodano po 4 [minuty]:

    zastosowałeś się do porad z tej strony? Link
  • #5 12721882
    Sokolsok
    Poziom 11  
    teoretycznie masz rację ale to rozwiązałem inaczej. Otóż w założeniu było, że błąd może się pojawić dokładnie do 0,5s dlatego skorzystałem z timera:
    
    if(GICR == 0x0) {licznikblad++; AlarmOn;} 
    if(licznikblad >= 10) AlarmOff; 
    if(licznikblad >= 50) {licznikblad=0; GICR = 0x80;} 
    


    I tak zastosowałem się do tamtych porad jak najbardziej, wszelkie kondensatory są:)

    Dodano po 1 [godziny] 50 [minuty]:

    się zastanawiam czy może rezystor zły tam dałem albo coś??

    ............
    A gdyby spojrzeć na to jak na zwykły przycisk. (wg. schematu powyżej) Co może być powodem, że uc wykrywa mi wciśnięcie gdy dotykam nóżki czymś metalowym, nie podłączonym do masy?
  • REKLAMA
  • #6 12843977
    jacynka84
    Poziom 26  
    Nie wiem czy to aktualne ale to nie może chyba działać bo zrobiłeś z drutu WIELKĄ antenę która zbierze każdy syf i poprzestawia piny i liczniki, tak mi się wydaje.
    Takie zabawki się robiło chyba sam wiesz aku i drut, i ew lampka lub brzęczyk.
  • REKLAMA
  • #8 12847411
    jacynka84
    Poziom 26  
    Przecież transoptor ma za zadanie oddzielić układ od reszty bezpiecznie ale przesyłając wszystko. Szpile czy co tam lata i tym podobne chyba też przekaże.
  • #9 12847646
    adambehnke
    Poziom 24  
    Dajesz transoptor maksymalnie blisko procesora , z drugiej strony "leda" tranoptora podłączasz do druta i to wszystko.
    Oczywiście może się zdarzyć że jakieś zakłócenie będzie na tyle duże że transoptor zadziała ale ja w ten sposób mam optoizolowane sieć RS485 i to w warunkach przemysłowych i wszystko działa jak należy. Używam także transoptorów do wysterowywania przekaźników na wysokie obciążenia i także wszystko działa jak należy i procesor nie reaguje niewłaściwie na zakłócenia.
  • #10 12849369
    Dar.El
    Poziom 41  
    Transoptor działa prądowo, dlatego jest bardziej odporny na zakłócenia, tak jak transmisja RS485. Izolowanie dodatkowo RS485 może zabezpieczać przed zmianami napięcia na masie lub przed uderzeniem pioruna w okolicy.
  • #11 12852369
    Eagle
    Poziom 24  
    Cytat:
    się zastanawiam czy może rezystor zły tam dałem albo coś??


    Daj <1k i zobacz czy to przyniesie oczekiwaną poprawę, może R padło.
REKLAMA