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

[ATMega32][C] - Obsługa enkodera

kiclaw 14 Lis 2012 20:29 2040 8
  • #1 14 Lis 2012 20:29
    kiclaw
    Poziom 16  

    Witam

    Otóż od 2 dni bawię się enkoderami (a przynajmniej próbuje) i mam mały problem.

    Otóż, podpiąłem enkoder (EP-11-SP-15-KQ) pod uC w ten sposób:

    [ATMega32][C] - Obsługa enkodera
    1-PD2
    2-GND
    3-PD3
    4,5- to przycisk, na razie nie używany.
    I na podstawie książki napisałem taki program (docelowo program będzie działał na przerwaniach zewn. , chodzi mi o to, żeby w ogóle układ zaczął coś działać):

    Kod: c
    Zaloguj się, aby zobaczyć kod


    No i w czym problem, otóż przy kręceniu enkoderem (nieważny kierunek), ciągle pokazuje mi na LCD "prawo", raz na 5-10 obrotów wskoczy na parę taktów "lewo" i znów "prawo".

    Podchodziłem już do tematu od kilu stron ale poległem na całej linii...Czytałem w internecie oraz na elektrodzie o obsłudze tych urządzeń ale jakoś nie ogarniam implementacji tego.

    EDIT: Tak z ciekawości zmierzyłem napięcia na wyjściu i ku mojemu zdziwieniu nie zmieniają się: 00,01,11,10... tylko 00,11,00,11... Macie jakiś pomysł o co biega?

    0 8
  • #3 15 Lis 2012 01:01
    kiclaw
    Poziom 16  

    Podpięcie pokazane na zdjęciu wyżej, rezystancja to ~800kΩ i pojawia się tak samo jak sygnały czyli raz jest na obu zwarcie (0Ω) a raz ~800kΩ.

    Mierzyłem tak: COM-A i COM-B

    Pomiędzy A-B raz jest ~1,1MΩ a raz 0Ω

    0
  • #4 15 Lis 2012 02:52
    Jacek Rutkowski
    Poziom 24  

    To znaczy że ten enkoder nie daje sygnału kierunku, coś źle złożony został niestety, chyba nie grzebałeś w nim?
    Masz jeszcze z jeden? Nie popełniłeś literówki w oznaczeniu enkodera? Nie mogę nigdzie takiego znaleźć.

    0
  • #5 15 Lis 2012 11:09
    kiclaw
    Poziom 16  

    To dokładnie ten enkoder

    Mała literówka (myślnik więcej)...


    Co do rozbierania no to oczywiście nie ruszałem :), ale mam takie trzy i wszystkie trzy tak działają.

    0
  • #6 15 Lis 2012 11:31
    94075
    Użytkownik usunął konto  
  • #7 15 Lis 2012 12:36
    JarekC
    Poziom 27  

    kiclaw napisał:

    EDIT: Tak z ciekawości zmierzyłem napięcia na wyjściu i ku mojemu zdziwieniu nie zmieniają się: 00,01,11,10... tylko 00,11,00,11... Macie jakiś pomysł o co biega?


    Witam,

    Enkodery pracują z wyjściem w kodzie Gray-a czyli 00 01 11 10 ale można spotkać trzy odmiany:

    1.TYP1
    Każda skok powoduje zmianę o jedną pozycje w kodzie czyli kręcąc w prawo z
    pozycji 00 dostaniemy 01, przy następnym skoku 11 itd
    W stanie statycznym są dostępne wszystkie 4 kody 00,01,11,10.

    2.TYP2 (taki jak masz)
    Każdy skok powoduje zmianę o dwie pozycje w kodzie czyli kręcąc w prawo z
    pozycji 00 dostaniemy 11 (w czasie przejścia 00 01 11), przy następnym skoku 00 (w czasie przejścia 11 10 00) itd
    W stanie statycznym są dostępne tylko 2 kody 00,11. Stany 01 i 10 występują tylko w momencie skoku i trwają ok 1-2ms.

    3.TYP3
    Każdy skok powoduje przejście pełnego cyklu czyli kręcąc w prawo z
    pozycji 00 dostaniemy 00 (w czasie przejścia 00 01 11 10 00 ), przy następnym skoku to samo.
    W stanie statycznym dostępny jest tylko 1 kod 00, pozostałe stany występują tylko w momencie skoku.

    Patrząc na kod zupełnie nie wiem co autor miał na myśli.

    Pozdrawiam
    JarekC

    0
  • #8 15 Lis 2012 14:42
    mfriedrich
    Poziom 15  

    Enkoder masz podłączony do pinów PD2 i PD3 a w programie nie sprawdzasz co się dzieje z PD3, więc jak chcesz ustalić kierunek?

    0
  • #9 15 Lis 2012 17:19
    kiclaw
    Poziom 16  

    Dobra, a więc tak:

    albertb Dzięki za czujność, skopiowałem linijkę z góry żeby było szybciej, no i nie zmieniłem wartości.

    JarekC Dzięki za opis, bo w sumie wiedziałem że są enkodery 2,4 stopniowe, ale nie znałem zasady ich działania :)


    Po poprawieniu błędu i zmianie funkcji na obsługę enkoderów 2-stopniowych, program działa prawidłowo.

    Jeśli nikt nie ma nic do dodania, to temat jutro będzie zamknięty.

    0