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

[ATMega32][C] - Obsługa enkodera

14 Lis 2012 20:29 2142 8
  • 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?
  • Poziom 26  
    Witam,
    może źle podłączyłeś enkoder? Sprawdzałeś miernikiem rezystancji czy enkoder działa prawidłowo?
  • 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Ω
  • Poziom 26  
    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źć.
  • 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ą.
  • Użytkownik usunął konto  
  • Poziom 28  
    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
  • Poziom 16  
    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?
  • 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.