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

enkoder i lpt - enkoder i lpt

krolikbest 14 May 2014 16:46 1830 8
  • #1
    krolikbest
    Level 10  
    Witam,

    czy ktoś z Was zajmował się odczytem impulsów z enkodera inkrementalnego poprzez port równoległy w komputerze PC?
    Z moich testów (moje oprogramowanie w Delphi) wynika, że nie jestem w stanie odczytywać wszystkich sygnałów wysyłanych przez enkoder.
    Dane w moim doświadczeniu:
    - enkoder inkrementalny 500 imp/obr
    - program w Delphi: timer na formatce, odczyt co 1ms. Częściej timerem się nie da.
    - syganały z enkodera w standardzie TTL, bezpośrednio wpięty w port LPT
    - port LPT to karta PCI, standard ECP/EPP
    - Windows XP SP3



    Odczytuję w zależności od prędkości kręcenia enkoderem - im wolniej tym więcej odczytuję, ale i tak tylko maksymalnie połowę impulsów.

    Pytanie: czy ktoś może to rozwiązał, żeby otrzymywać tyle impulsów ile enkoder ma fabrycznie na jeden obrót???

    Moje inne rozwiązanie to dedytkowany kontroler enkodera, gdzie odczytuje przebytą drogę zapisaną w kontrolerze po RS485 na PeCeta protokołem MODBUS. To działa, ale się uparłem na ten LPT :))

    Pozdrawiam,
  • #2
    guzzzz
    Level 9  
    Witaj krolikbest widzę, że jesteś dalej w temacie czy twój program potrafił by zamiast odczytywać enkoder wysyłać sygnał do urządzenia zamiast enkodera ? (zamiast enkodera wlutowane przewody z lpt)

    Był bym bardzo wdzięczny za pomoc. Otworzyłem temat ale nie wiele się dowiedziałem.
  • #3
    Chris_W

    Level 38  
    LPT jet dośc powolny jeśli chodzi o odczyt impulsów, sprawdza się przy przesyłaniu pakietów bajtowych - prawdopodobnie "przegapia" sporo z tych impulsów. Do tego jeśli aplikacja "nie wyrabia" to będzie kolejna porcja impulsów ominięta, prawdopodobnie korzystasz z API które wprowadza kolejne opóźnienia.
    Oparcie się na timerze (kontrolce odliczająej czas w delphi) jest bez sensu, już lepsze jest ciągłe czytanie portu poprzez tzw. (pooling) i liczenie ilości zboczy (a więc zmiana stanu 0->1 lub 1->0). Możesz poszukać jakiegoś nieoficjalnego "drivera" który będzie działał szybciej -musisz potestować.
  • #4
    guzzzz
    Level 9  
    Sterowanie enkoderem we wzmacniaczu ktoś ma jakiś pomysł, schemat, program. Proszę o pomoc. Słyszałem o input.dll jako wtyczce do visual basic jednak schematu brak. Enkoder posiada trzy piny.
  • #5
    krolikbest
    Level 10  
    Po dłuższym zastanowieniu rozwiązanie odczytu enkodera bezpośrednio z portu LPT nie ma sensu. Lepiej zastosować jakieś urządzenie zewnętrzne odczytujące enkoder i potem po RS232 + protokół Modbus odczytywać stan (licznik) tego urządzenia.
    Temat zamykam.

    Dodano po 2 [minuty]:

    guzzzz wrote:
    Witaj krolikbest widzę, że jesteś dalej w temacie czy twój program potrafił by zamiast odczytywać enkoder wysyłać sygnał do urządzenia zamiast enkodera ? (zamiast enkodera wlutowane przewody z lpt)


    Czy chodzi Ci o możliwość wysłania danej (w postaci liczby) na port LPT?
  • #6
    guzzzz
    Level 9  
    Chodzi o zastąpienie enkodera pecetem. Wlutowanie w piny enkodera przewodów z pc i sterowanie urządzeniem z poziomu pc.

    Enkoder posiada 3 piny
  • #7
    krolikbest
    Level 10  
    To chcesz ten enkoder zastąpić pc-tem czy połączyć enkoder z pc-tem?

    Jeżeli połączyć z pc-tem, to jak już pisałem po przetestowaniu, port LPT się do tego nie nadaje. Inne rozwiązanie o czym też już pisałem to zastosowanie szybkiego licznika, np. na kartach typu PCI, ePCI, lub samodzielnego połączonego z pc-tem za pomocą RS232 i odczytywanie stanu tego licznika za pomocą dedytkowanych dll-ek lub protokołem Modbus. Założenie jest takie, że licznik po pierwsze jest na tyle szybki, że poradzi sobie z odczytem enkodera i po drugie posiada obsługę Modbusa. W swoim programie musisz zrobić pętlę, w której będziesz sprawdzał co jakiś interwał czasowy stan tego licznika i w zależności od jego wartości obierzesz jakąś akcję.
    Ja rozwiązałem to szybkim licznikiem z obsługą protokołu Modbus. Pętla czasowa w moim programie co 10ms odpytuje odpowiednią komórkę rejestru tego licznika, gdzie znajduje się wartość ekoderowa, i w zależności od odczytanej wartości coś tam sobie ten program robi.
    Trochę przydługawe, ale mam nadzieję, że nieco rozjaśniłem sprawę.
  • #8
    guzzzz
    Level 9  
    Niestety nie do końca ponieważ chodzi o tą pierwszą opcje czyli zastąpienie enkodera pctem.
    Ale napisałeś więcej niż "poziomowcy" z innych tematów

    Może masz jakiś pomysł żeby zrobić coś takiego o ile się nie myle to standard TTL

    model SW101 SIM026MD i na nogach 1 GND, 2 ENCB, 3 ENCA. Czyli rozumiem że jest to typowy enkoder.


    Dlaczego upieram sie przy LPT; 1 to prostota wykonania i obsługi; 2 to nie zależy mi na prędkości raczej na dokładności żeby "nie skakało" o większą ilość oczek

    I jeszcze jedno czy takie LPT mogło by obsłużyć jeszcze trzy przyciski obsługując enkoder
    pozdrawiam