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.

Atmega8 i enkoder - problem z impulsami

lukisio 07 Lip 2008 18:46 2638 20
  • #1 07 Lip 2008 18:46
    lukisio
    Poziom 11  

    Witam
    Mam taki problemik. Chcę zrobić układ zliczający ilość impulsów na sekundę. Impulsy są generowane przez enkoder od regulacji głośności (24 impulsy na obrót). Problem pojawia się w momencie podłączenia tego razem. Enkoder strasznie iskrzy i przy połowie obrotu generuje około 100 - 120 impulsów. Próbowałem to zniwelować kondensatorem, ale przy dużych prędkościach wyskakiwało 0 impulsów (kondensator nie nadążał się rozładować). Wpadłem na pomysł, żeby użyć układ 4093 z bramkami NAND. Połączyłem to w taki sposób, że nóżki wejściowe bramki połączyłem razem i na nie podaję impulsy 0, na wyjściu otrzymuję 1 i to 1 podaję na kolejną bramkę, żeby na wyjściu otrzymać 0. Niestety mimo wszystko iskrzenie występuje dalej. Co jeszcze da się zrobić?
    Enkoder ma pracować przy obrotach od 0 do ok 60 impulsów na sekundę.

    0 20
  • #2 07 Lip 2008 18:56
    MirekCz
    Poziom 35  

    1.mniejszy kondensator
    2.układ z bramką schmitta

    Kombinacja tych dwóch zabiegów powinna działać bez problemu.

    Ewentualnie możesz też spróbować rozwiązać to softwareowo (skoro wiesz, że maks to powiedzmy 500 impulsów/sec to po wykryciu zmiany przez kolejne 2ms nie zliczasz zmiany stanu na porcie).

    0
  • #3 07 Lip 2008 19:06
    megao
    Poziom 23  

    lukisio napisał:
    Niestety mimo wszystko iskrzenie występuje dalej.
    Nie powinno to mieć miejsca. Nie wiem jaki puszczasz prąd przez ten enkoder, w przykładowej nocie bournsa jest podane max 10mA.

    0
  • #4 07 Lip 2008 19:07
    lukisio
    Poziom 11  

    MirekCz napisał:

    2.układ z bramką schmitta


    Właśnie układ 4093 ma bramkę Schmitta. I się dziwię dlaczego to nie chce działać. Jeśli chodzi o sposób softwarowy, to jest on prosty i skuteczny, ale chodzi mi o tryb hardware.

    megao napisał:
    lukisio napisał:
    Niestety mimo wszystko iskrzenie występuje dalej.
    Nie powinno to mieć miejsca. Nie wiem jaki puszczasz prąd przez ten enkoder, w przykładowej nocie bournsa jest podane max 10mA.


    Właściwie... to nie limitowałem go... Może faktycznie to jest powód.

    0
  • #5 07 Lip 2008 19:14
    megao
    Poziom 23  

    Koniecznie ogranicz prąd, enkodery tego typu mają dosyć dużą rezystancję styków i prądy powinny być niewielkie.
    60 impulsów na sekundę powinno być generowane bez żadnych problemów.

    0
  • #6 25 Lip 2008 15:27
    lukisio
    Poziom 11  

    Wstawiłem rezystorek 640. Bez zmian.

    A czy jeśli zastosuję debounce, to nie będzie to koligowało z przerwaniami timera? Bo jeśli np przy jednym impulsie na sekundę debounce będzie czekał 25ms, to by znaczyło, że timer będzie liczył sekundę o czasie 1,025s

    0
  • #7 27 Lip 2008 22:22
    Madman07
    Poziom 19  

    To ja może podrzucie Ci sprawdzony kod a picBasicu na enkoder. Musisz sobie go tylko przerobić do własnych potrzeb, bo zapewne chcesz to do Bascoma. Zakładam oczywiście, że enkder daje kod Graya. Ja podłączyłem styki przez 10k do +5, a środkowe wyprowadzenie na masę.

    Code:
    Sub Procedure enkoder_proc(Dim wyj As Byte)
    
    Dim tmp As Byte

        If (PORTD.5 = 0) And (PORTD.4 = 0) Then
           wyj = 1
        End If

        If (PORTD.5 = 1) And (PORTD.4 = 0) Then
           wyj = 2
        End If

        If (PORTD.5 = 1) And (PORTD.4 = 1) Then
           wyj = 3
        End If

        If (PORTD.5 = 0) And (PORTD.4 = 1) Then
           wyj = 4
        End If
             
    End Sub



    ' To wstaw w kodzie

              enkoder_proc(enk_nowy)

              If enk_stary <> enk_nowy Then

                 kierunek = enk_stary - enk_nowy
                 enk_stary = enk_nowy

                 If (kierunek = 1) Or (kierunek = -3) Then
                    enkoder = enkoder + 1
                 Else
                    enkoder = enkoder - 1

                 End If

       'Tu wstaw sobie co może się zdażyć...


              End If

    0
  • #8 29 Lip 2008 12:21
    lukisio
    Poziom 11  

    Dzięki za kod, na pewno się przyda. Nie rozwiązuje on jednak problemu iskrzenia. Podłączyłem wg twoich zaleceń, i dalej iskrzy po 5-10 sygnałów na 1 impuls enkodera.

    0
  • #9 29 Lip 2008 14:58
    Bigfoot
    Poziom 25  

    Iskrzacy enkoder - dobre :)
    Staraj sie uzywac slow adekwatnych do opisywanej sytuacji i zrozumialych dla wszystkich. Iskry tam jakies Ci sie pojawiaja rzeczywiscie??

    Jezeli jest to zwykly tani enkoder to moze po prostu na wyjsciu ma tranzystor w konfiguracji OC. Bez rezystora podciagajacego nie daje na wyjsciu czystego sygnalu a wejscie uC zbiera smieci i stad bledne odczyty. 24 impulsy na obrot to BARDZO mala rozdzielczosc i problemow nie powinno byc tymbardziej. Podaj typ enkodera i pokaz jak go podlaczyles.

    BF

    0
  • #10 29 Lip 2008 15:52
    lukisio
    Poziom 11  

    Używam enkodera z załączonej noty katalogowej. "Iskrzeniem" nazywam drgania pojawiające się przy złączaniu styków wewnątrz enkodera, dające w efekcie większą, niż faktyczna, liczbę impulsów. Mam ustawionego "set PORTD.2" i 3 (na tych portach działa w Atmedze INT0 i INT1, które to chcę wykorzystać).

    W tej chwili z chipa 4093 zbudowałem układ wg. schematu ze strony: http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/schmitt.html#c2
    Dane:
    Vcc=5V
    R1=R2=10Kom
    R3=100Kom

    Na wyjściu dostaję 1,09V przy braku styku i 3,66V przy zetknięciu styku enkodera.

    0
  • #11 29 Lip 2008 16:39
    Madman07
    Poziom 19  

    Trochę dziwna sprawa. Ja w swoim projekcie też używam enkoderów, ale normalnie działają. Może po prostu zobacz co w nich siedzi?

    0
  • #12 29 Lip 2008 17:35
    Bigfoot
    Poziom 25  

    Enkoder powinien wystawiac czysty sygnal A-B, jezeli tego nie robi to po prostu jest uszkodzony i zadne shmittowanie tu nie pomoze.
    Czy enkoder ten jest z odzysku - moze juz swoje przezyl? Nota techniczna jest bardzo biedna i - niestety - oceniajac po niej sam enkoder tez jest biedny...

    BF

    0
  • #13 29 Lip 2008 20:22
    lukisio
    Poziom 11  

    Enkoder kupiłem jako nowy. Sprawdzałem na mierniku i przewodzi w momencie kręcenia a na spoczynku nie. Dałem za niego 5PLN, jeśli ma to być wyznacznikiem jakości.

    0
  • #14 29 Lip 2008 20:40
    Bigfoot
    Poziom 25  

    Iskrzenie enkodera, teraz: przewodzenie enkodera... Wiesz w ogole jak go podlaczyc i jak z nim sie obchodzic, jakiego sygnalu spodziewac sie na wyjsciach, ile tych wyjsc i co z nimi zrobic? Bo z tego co piszesz zaczynam sie zastanawiac czy problem jest techniczny czy nie czasem personalny. Nie obraz sie ale mam wrazenie, ze nie do konca rozumiesz temat.

    BF

    0
  • #15 30 Lip 2008 00:51
    lukisio
    Poziom 11  

    Otóż działanie enkodera rozumiem w ten sposób:
    Ma trzy nóżki:
    - lewa sygnał A
    - prawa sygnał B
    - środkowa GND lub Vcc (w zależności od tego jaki sygnał chcemy uzyskać na A oraz B)

    Podczas kręcenia enkoderem w jedną stronę otrzymujemy po kolei sygnały:
    A=0,B=0 ; A=0, B=1 ; A=B=1 ; A=1,B=0
    Przy kręceniu w drugą stronę mamy odwrotną kolejność sygnałów:
    A=1,B=0 ; A=B=1 ; A=0, B=1 ; A=0,B=0

    W ten sposób, analizując kolejność pojawiających się sygnałów, wiemy w którą stronę kręcimy.

    W dodatku idealny sygnał pojawiający się na A i B powinien mieć wykres kwadratowy.

    Taka jest moja wiedza na ten temat. Część wyczytałem, części się sam domyślam. Jeśli w czymś się mylę, to proszę mnie poprawić.

    0
  • #16 30 Lip 2008 00:59
    elektryk
    Poziom 42  

    Bigfoot napisał:
    Enkoder powinien wystawiac czysty sygnal A-B, jezeli tego nie robi to po prostu jest uszkodzony i zadne shmittowanie tu nie pomoze.
    To nie jest do końca prawda, jeśli enkoder posiada taką krzywkę która pomaga w czuciu jak się obraca (taki "pykacz"), to w momencie kiedy "pyka" zmienia się zbocze jednego z sygnału. Miałem taki objaw w układzie że to powodowało coś podobnego do drgań styków i był problem. Rozwiązaniem jest zamiana wejść, to drugie w momencie kiedy "zaskakuje" krzywka jest stabilne a akurat w moim prototypie wybrałem to wejście niestabilne jako źródło "odniesienia". Potem znalazłem że w specyfikacji było to nawet zaznaczone które wyjście jest stabilne w "dołku" krzywki.

    0
  • #17 30 Lip 2008 10:42
    lukisio
    Poziom 11  

    Enkoder posiada tą właśnie krzywkę. Zmieniłem złącze i działa już lepiej, ale mimo wszystko są drgania (iskrzenia wewnętrzne, czy jak to zwał).

    Przypomniało mi się, że często zdarzają się urządzenia, w których regulacja głośności nie działała za każdym razem przy przekręceniu o jeden uskok (pyk). Być może jest to ogólna przypadłość takich enkoderów? Komu robi różnicę, czy przekręci gałkę głośności o 30 czy o 34 stopnie w prawo? Chyba faktycznie poszukam sobie lepszego sprzętu.

    0
  • #18 30 Lip 2008 10:47
    Bigfoot
    Poziom 25  

    Temat zaczyna robic sie ciekawy :)

    :arrow: elektryk: Ciekawe jest to co mowisz a dla mnie dodatkowo nowe. Moglbys mi wyslac na priva note tego enkodera, w ktorym wymagana byla "kolejnosc" podlaczenia kanalow A i B. Ja jeszcze raz dokladnie sprawdzilem pdfa enkodera, z ktorym pracowalem ostatnio i nic takiego w nim nie znalazlem. Zamiana A z B powodowala po prostu przeciwny kierunek zliczania. Jedyna opcja dodatkowa mozliwosc do wykorzystania (w podobnym typie enkodera) byl tzw index channel, ktory najprawdopodobniej przy kazdym obrocie wystawial 0/1. Nie za bardzo moge wyobrazic sobie krzywkę która pomaga w czuciu jak się obraca (opisywana przez Ciebie). Mozesz dwa slowa wiecej napisac o tym "pykaczu"?
    Dodatkowo, w nocie technicznej zalaczonej przez Kolege lukisio jest na przebiegu wyjsciowym A - B zaznaczona linia i opis "miejsca stabilnosci zapadki". Rozumiem, ze ta zapadka [ang: detent] to ten wlasnie "pykacz". Kolega elektryk chyba jest na tropie :)

    BF

    Dodano po 2 [minuty]:

    EDIT: lukisio i elektryk - mozecie napisac slowo wiecej czym jest ta krzywka? Bo mysle, mysle i nie moge sobie jej wyobrazic :( Wiem, ze to juz nie apropos rozwiazania problemu ale chcialbym byc madrzejszy o ta informacje. Z gory dziekuje.

    BF

    0
  • #19 30 Lip 2008 10:49
    lukisio
    Poziom 11  

    Bigfoot napisał:

    Dodatkowo, w nocie technicznej zalaczonej przez Kolege lukisio jest na przebiegu wyjsciowym A - B zaznaczona linia i opis "miejsca stabilnosci zapadki". Rozumiem, ze ta zapadka [ang: detent] to ten wlasnie "pykacz". Kolega elektryk chyba jest na tropie :)

    BF


    Zobacz na to. Miejsce stabilności zapadki dla B jest akurat na zboczu sygnału 0 i 1. Czyli minimalne drganie może powodować zmianę stanu. Za to A jest usytuowane w miejscu stabilnym, gdzie przypadkowa zmiana stanu praktycznie nie jest możliwa.

    Zapadka, czyli "pykacz" (a to podobno ja używam niefachowego języka ;P) to po prostu podział obrotu osi enkodera na pojedyncze impulsy. Kręcisz i czujesz o ile impulsów przekręciłeś. Bardzo często spotykane rozwiązanie przy wszelkiego rodzaju regulatorach głośności, zegarka itp.

    0
  • #20 30 Lip 2008 10:59
    Bigfoot
    Poziom 25  

    To zauwazylem ale i tak nawet duza niestabilnosc nie powinna zliczyc wiecej niz +/- jednego kroku w takim przypadku. Chyba, ze kazde "klikniecie" nawet przy stalym obrocie moze powodowac drganie... Z drugiej strony ten enkoder kosztowal 5 zl wiec chyba nie mozna sie za bardzo czepiac.
    Czy ta "krzywka", o ktorej piszcecie to po prostu ten "pykacz" powodujacy cos w stylu inkrementalnego ruchu (ze czuc delikatne przeskakiwanie)?

    BF

    0
  • #21 30 Lip 2008 11:06
    lukisio
    Poziom 11  

    Bigfoot napisał:

    Czy ta "krzywka", o ktorej piszcecie to po prostu ten "pykacz" powodujacy cos w stylu inkrementalnego ruchu (ze czuc delikatne przeskakiwanie)?

    BF


    Dokładnie tak. Na obrazku masz przykład rozwiązania tego "pykacza" systemem kulki i otworków.

    Atmega8 i enkoder - problem z impulsami

    0