Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

enkoder-zasada działania

pablos23 03 Sep 2008 18:39 6096 8
  • #1
    pablos23
    Level 15  
    Witam.

    Moje pytanie dotyczy enkodera inkrementacyjnego a konkretnie dwóch wyjściowych sygnałów przesuniętych wzajemnie o 90°.

    Załóżmy,że kolejne zmiany stanu logicznego sygnału S00 zachodzą na 2ms, 4ms,6ms,10ms,14ms,22ms,30ms.
    Opóźnienie drugiego sygnału to 90°. Dlatego jeśli dobrze rozumiem pierwsza zmiana nastąpi na 3ms,druga na 5ms. Częstotliwość obu sygnałów jest taka sama, więc kiedy nastąpi kolejne przejście logiczne drugiego sygnału na 7 czy 8 ms?
  • #2
    *paweł*

    Automation specialist
    Z tego co mi się wydaje to na 7ms gdyż każdy sygnał 2 wyjścia jest przesunięty o te 90 stopni względem 1 sygnału.
    pozdrawiam
  • #3
    _Robak_
    Level 33  
    Przeciez enkoder nie pamieta co sie dzialo wczesniej. Z tego co widac to silnik zwalnia czyli nawet nie po 8 i nie po 7, tylko cos pomiedzy? Trzeba bys ie glebiej zastanowic :) A ze nie mam przy sobie nawet czystej kartki tylko gazete to ciezko mi troche sobie to rozrysowac ;)
  • #4
    roks
    Automation specialist
    Jak wyżej
    Ale zakładając liniową charakterystykę zwalniania to obstawiał bym 7,5 ms
    :D
    Trochę jak wróżenie z fusów.
    pozdrowienia
    PS Wydaje się , że to zadanie szkolne dlatego dołączam obrazek

    enkoder-zasada działania
  • #5
    pablos23
    Level 15  
    Dzięki za wszystkie odpowiedzi.

    To nie jest zadanie szkolne. Hobbystycznie programuję mikrokontroler, który ma generować sygnały wyjściowe enkodera.

    Z wiarygodnego źródła dowiedziałem się,że jeśli zmiany 1 sygnału następują na 2ms,4ms,8ms,14ms,22ms,32ms (pierwsza zmiana to zbocze narastające) zaś pierwsza zmiana drugiego sygnału na 3ms to kolejna zmiana drugiego sygnału nastąpi między 5 a 6 ms ale blisko 6ms. Dla swojego projektu będę przyjmował dla drugieo sygnału:3ms,6ms,11ms,18ms,27ms.

    pozdrawiam
  • #6
    _Robak_
    Level 33  
    No dokladnie, najpierw myslalem ze silinik przyspiesza i dlatego napisalem pomiedzy 7 a 8:) No ale tak na prawde nie jestes w stanie kompletnie przewidziec dokladnego czasu, bo jak widac pryspieszenie nie jest stale z jakim silnik opoznia wiec to troche jak kolega napisal wrozenie z fusow:)
  • #7
    aktus
    Level 17  
    Coś dzisiaj nie za bardzo trybie, ale czy czasem nie jest to tak, że jeżeli wystąpi impuls A, to po stałym czasie T wystąpi impuls B ( oczywiście w ruchu jednostajnym )? Jeżeli tak, to przy przyśpieszaniu/hamowaniu impuls B będzie się pojawiał po czasie T+/-T' ( gdzie T' to czas wynikający z ruchu opóźnionego/przyśpieszonego ). Poza tym mam takie pytanie - po co wyliczać moment pojawienia się impulsu B? Przecież po to właśnie jest enkoder, żeby wiedzieć kiedy dokładnie ten impuls wystąpi.
  • #8
    _Robak_
    Level 33  
    Ale kolega tutaj robi sobie symulator :)
  • #9
    RAPELC
    Level 17  
    Po co taka długa dyskusja? Tak jak narysował roks. Tak jak pisze pablos23 chce on wygenerować impulsy jakie by wytworzył rzeczywisty enkoder. Nie stosuj w algorytmie sztywnych czasów tylko je obliczaj z częstotliwości przebiegu A. Łatwo ci wtedy symulować zmianę prędkości obrotowej, bo masz tylko jedną zmienną - prędkość obrotową którą zadajesz. Zmiana zbocza z narastającego na opadające przebiegu A następuje co 1/2 okresu, natomiast przebiegu B identycznie lecz przesunięte o 1/4 okresu. Napisz taki algorytm obliczający zmiany stanów bitów portu wyjściowego i wszystko będziesz miał pewne i proste w dalszej części programu (jeżeli jakąś tam dalszą część przewidujesz).