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.

Enkoder - Zakłócenia na bardzo krótkim odcinku

MAREK MRK 06 Kwi 2016 13:30 1179 12
  • #1 06 Kwi 2016 13:30
    MAREK MRK
    Poziom 18  

    Witam, mam problem z enkoderem. Podłączony do Atmega (pędzona 16MHz), działa przyzwoicie. Zarówno procek jak i enkoder są w panelu operatorskim więc odległość między nimi jest niewielka (podłączone przewodem). Niestety w momencie załączenia (nie za każdym razem) enkoder zmienia pozycję (w programie). Czyli mam ustawioną jakąś funkcję i działam na maszynie. Po którymś załączeniu stycznika zmieniają się ustawienia (tak jak by enkoderem przekręcić). Może ktoś podpowiedzieć jak sobie z tym poradzić? Poniżej schemat i kawałek programu odpowiadający za obsługę enkodera.
    Enkode..pdf Download (5.79 kB)

    Code:

    Config Int1 = Falling
    Enable Int1 : On Int1 Encoder_isr
    Dim Encoder_turn_left As Byte , Encoder_turn_right As Byte
    Dim Zmienna As Word
    Encoder_a Alias Pind.0
    Encoder_b Alias Pind.1
    Readeeprom Zmienna , 2
    Do
    If 0 < Encoder_turn_left Then
        Decr Encoder_turn_left
      Decr Zmienna
      Writeeeprom Zmienna , 2
      End If
    If 0 < Encoder_turn_right Then
        Decr Encoder_turn_right
      Incr Zmienna
      Writeeeprom Zmienna , 2
      End If
    If Zmienna = 47 Then
    Zmienna = 0
    End If
    If Zmienna = -1 Then
    Zmienna = 46
    End If
    Loop

    0 12
  • #2 06 Kwi 2016 14:04
    373522
    Użytkownik usunął konto  
  • #3 06 Kwi 2016 14:17
    MAREK MRK
    Poziom 18  

    Oczywiście Kondensatory 10nF (tak jak w schemacie), a przerwania włączone prawie przed samą pętlą. Co do zmiany zapisu Eeprom to zapytam dlaczego? Generalnie mogę usunąć zapis do eeprom (46 ustawień więc można spokojnie pokręcić), ale wiedzy nigdy mało dlatego pytam. Postaram się dziś po testować kolegi uwagi i dziękuję za odpowiedź.

    0
  • Pomocny post
    #4 06 Kwi 2016 14:33
    373522
    Użytkownik usunął konto  
  • #5 07 Kwi 2016 07:29
    MAREK MRK
    Poziom 18  

    Właśnie testuję Rising. I od razu wrzucam Schemat nie w PDF.
    Enkoder - Zakłócenia na bardzo krótkim odcinku

    Oprócz Rising dałem jeszcze wstrzymanie (w nadziei że pomoże) i nie pomogło. Dodatkowo usunąłem zapis i odczyt pamięci i przed pętlą ustawiłem zmienną.

    Code:
    Zmienna = 1

    Code:

    If 0 < Encoder_turn_left Then
    Waitms 100
    If 0 < Encoder_turn_left Then
        Decr Encoder_turn_left
      Decr Zmienna
      End If
      End If
    If 0 < Encoder_turn_right Then
    Waitms 100
    If 0 < Encoder_turn_right Then
        Decr Encoder_turn_right
      Incr Zmienna
      End If
      End If
    If Zmienna = 47 Then
    Zmienna = 0
    End If
    If Zmienna = -1 Then
    Zmienna = 46
    End If

    0
  • #6 07 Kwi 2016 09:44
    373522
    Użytkownik usunął konto  
  • #8 08 Kwi 2016 09:52
    BlueDraco
    Specjalista - Mikrokontrolery

    Zastanawiam się, ile jeszcze elementów trzeba dodać, żeby zniwelować błędny algorytm. Cały problem leży w oprogramowaniu, a jedyne potrzebne elementy - to dwa zwnętrzne rezystory podciągające (wyłącznie z powodu możliwych zakłóceń impulsowych). Obsługa w przerwaniu timera, zmienne - rejestry historii obu wejść, programowe usuwanie pojedynczych nietypowych odczytów i żadnych kłopotów by nie było. A tak - proteza na protezie, a błędy nadal są, albo czasami na chwilę znikną (a potem wrócą).

    0
  • #9 13 Kwi 2016 11:51
    MAREK MRK
    Poziom 18  

    Procedura nieco przerobiona, przewody skrócone i było wszystko ok. Aktualnie maszyna wyłączona z użytku z powodu uszkodzenia mechaniki, ale jak tylko to naprawią to dalej zabieram się za elektrykę w niej.

    0
  • #10 13 Kwi 2016 20:32
    373522
    Użytkownik usunął konto  
  • #11 14 Kwi 2016 13:35
    Marico
    Poziom 19  

    niveasoft napisał:

    To nawet znany problem radii samochodowych Audi Concert gdzie każde pokręcenie gałka głośności było zapamiętywane w Eeprom i po jakimś czasie te radia same sobie zwiększały głośność lub w inny sposób świrowały dając znaki jakby to enkoder sam uaktywniał zmiany. Potem pamieć głośności już poprawiono.


    Ale w jaki sposób poprawiono? Wymieniono na eprom 1mln zapisów? Zrezygnowano z zapamiętywania poziomu głośności?

    0
  • #12 14 Kwi 2016 15:41
    373522
    Użytkownik usunął konto  
  • #13 11 Maj 2016 10:05
    MAREK MRK
    Poziom 18  

    Problem rozwiązany. W kodzie usunąłem ciągły zapis, po dokonaniu nastawy wartość jest blokowana (nie zapisywana) i procek nie dokonuje już odczytu enkodera.

    0