Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Rozpoznawanie przycisków ATMEGA8515

patryk-84a 20 Maj 2012 01:49 1606 6
  • #1 20 Maj 2012 01:49
    patryk-84a
    Poziom 28  

    Witam. Próbuje zbudować sterownik do szyb elektrycznych. Nie chcę ingerować w oryginalną instalację, mój sterownik ma być prawie kompatybilny z oryginalnym więc mam pewien problem. Schemat podłączenia przycisków wygląda jak na schemacie.

    Rozpoznawanie przycisków ATMEGA8515

    Do sterownika dochodzą 4 kabelki z środkowych styków przełączników i dwa kabelki które są wspólne dla wszystkich przełączników. Jak rozwiązać problem rozpoznania przez procesor czy przycisk został przełączony w jedną czy drugą stronę? W grę wchodzi tylko takie rozwiązanie na dodatkowych tranzystorach czy jakoś da radę programowo?

    Rozpoznawanie przycisków ATMEGA8515

    0 6
  • Arrow Multisolution Day
  • Pomocny post
    #2 20 Maj 2012 07:14
    dondu
    Moderator Mikrokontrolery Projektowanie

    Pierwszy schemat nie pokazuje jak przyciski są podłączone (nieopisane połączenia z lewej strony schematu).
    Na dolnym opisałeś je jako +5V i masa. Czy tak mamy rozumieć pierwszy schemat?
    Jeżeli tak, to nie trzeba żadnych tranzystorów, a jedynie napisać odpowiednio program dla pierwszego schematu.
    Ale musisz poznać zjawisko zwane drganiem styków i jak sobie z nim radzić.

    Poza tym zacznij robić schematy w Eagle.

    0
  • Arrow Multisolution Day
  • Pomocny post
    #3 20 Maj 2012 09:54
    excray
    Poziom 39  

    Możesz wykorzystać przetwornik ADC ale wtedy musisz podpiąć wejścia pod PA. Wejście ustawiasz na połowie napięcia zasilania np. przez dzielnik z dwóch oporników 10k i przełączając przyciskiem albo zwierasz do masy albo do +5V. ADC mierzysz napięcie na wejściu i masz:
    0+-0.5V - stan niski
    2.5+-0.5V - stan środkowy
    5+-0.5V - stan wysoki
    Poza tym możesz zamiast przełączać między +5V a masą podpiąć na te skrajne pozycje jeszcze 2 wyprowadzenia z mikrokontrolera i generować na nich specyficzny sygnał. Tak jak w klawiaturze matrycowej. I wtedy szybko możesz wykryć czy pin jest w pozycji 1, 2 czy też po środku.

    0
  • #4 20 Maj 2012 10:37
    patryk-84a
    Poziom 28  

    Na pierwszym schemacie linie do przełączników nie są podpięte ponieważ mogę pod nie podpiąć co chcę. Są one doprowadzone do sterownika i moge je podpiąć do zasilania jak na drugim schemacie lub inaczej jeśli jest prostrzy sposób przy tym mikrokontrolerze. Kolego dondru co masz na myśli? Czy to samo co kolega excray, czyli adc? Niestety ten mikrokontroler nie pociada adc a jedynie komparator. Za innym układem musiałbym tydzien czekać. A co do specyficznego sygnału tzn na jedna linię mogę dać +5V a na drugą przebieg prostokątny? Myślałem nad tym, ale czy taki syknał puszczony w instalacje samochodową nie będzie podatny na zakłucenia?

    0
  • Pomocny post
    #5 20 Maj 2012 11:26
    excray
    Poziom 39  

    Rzeczywiście nie ma ADC, nie zauważyłem. A co do zakłóceń to można wyfiltrować i zastosować wejścia prądowe - przez transoptory. Jeden pin przełącznika podepnij pod masę a drugi pod wyjście z procesora. Na początek ustawiasz na tym pinie 1 i sprawdzasz wejścia. Jak któreś jest =0 to znaczy że przełącznik jest zwarty z masą. Później ustawiasz 0 na drugim pinie przełącznika i znowu sprawdzasz stan. Jeśli któreś wyjście jest teraz zwarte z masą a wcześniej nie było to znaczy że jest przełączone właśnie na ten pin. Wszystkie wejścia które ani w punkcie 1 ani w punkcie 2 nie były zwarte z masą są w pozycji środkowej. Wejścia nie podpinaj bezpośrednio pod procesor tylko przez transoptory. To zwiększy odporność na zakłócenia.
    Cały pomiar wykonać minimum 2 razy a za wiarygodny uznać tylko taki wynik który się nie zmieni w 2-óch kolejnych pomiarach.

    Rozpoznawanie przycisków ATMEGA8515

    Dodano po 32 [minuty]:

    Dlatego szukasz 2-óch kolejnych identycznych wyników. To załatwia sprawę takiej sytuacji gdy między pierwszym a drugim pomiarem wciśniesz przycisk.

    0
  • #6 20 Maj 2012 11:32
    patryk-84a
    Poziom 28  

    Ze względów ekonomicznych i takich, iż musiał bym czekać dość długo za transoptorami powstanie najprostsza wersja bez nich.

    Rozpoznawanie przycisków ATMEGA8515

    Jeśli po testach okaże się że coś jest nie tak to będą zmiany.

    Napisałem kawałek kodu, który otwiera szyby, ponieważ początkuje w bascomie proszę o sprawdzenie ponieważ po sprawdzeniu błędów składniowych wyskoczyły błędy w liniach 38 i 39 i nie wiem co jest źle. Błąd jaki się powtarza to:
    130 line 38 i 39 Incorrect number of parameters. Then number of parameters must be [0].
    i 124 line 0 Loop expected

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    Dopiszę jeszcze zamykanie i po sprawie.


    Program wyglądał by mniej więcej tak. Mógłby ktoś sprawdzić na swój rozum działanie wykrywania naciśnięcia przycisków zamykania? Mi już się wszystko miesza no i te błędy nadal są. Co dodać lub poprawić?


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    Pozbyłem się błędów składniowych. Skompilowałem program i użyłem do sprawdzenia programowego symulatora. Otwieranie drzwi działa ale nie działa otwieranie z przycisku na tylnych drzwiach. Jest pin opisany jako Blokada i gdy jest on zwarty do masy czyli 0 to przyciski Ptdrz i Ltdrz mają nie niałać ale jeśli jest rozwarty czyli 1 to mają one otwierać szyby. Niestety zarówno z włączonym bitem A6 jak i wyłączonym i wciśnięciu przycisku otwierania program nie skacze do podprogramu otwierania.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #7 20 Maj 2012 23:01
    patryk-84a
    Poziom 28  

    Do czego służą instrukcje:
    $baud
    $hwstack
    $swstack
    $framesize
    U mnie któraś będzie potrzebna?

    Ostateczny działający program:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    W oryginale jest jeszcze automatyczne opuszczanie po przytrzymaniu przycisku, zastanawiam się nad zastosowaniem tego ale musiał bym zrozumieć jak działało wyłączenie silnika po otworzeniu.

    0