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.

Wyjście z enkodera. Jak najlepiej zrobić układ?

21 Sty 2008 13:50 2736 7
  • Poziom 13  
    Witam.

    Jak najlepiej zrobić układ wyjściowy dla enkodera, by podłączyć do niego AVR Atmega128, który jak mi wiadomo ma:

    VIH
    Napięcie wejściowe w stanie wysokim
    z wyjątkiem styków XTAL1 i ~RESET
    0.6 VCC
    VCC + 0.5 V

    Czyli 5 V to maksymalna wartość "jedynki" logicznej,
    skoro enkoder zasilany jest napięciem 10 V -30 V i jak mi wiadomo sygnałem wyjściowym jest impuls o amplitudzie napięcia zasilania (tak?)?
    to jaki układ konwertera napięć zrobić - na czym? na tranzystorze? na układzie 7805 czy na dzielniku napięć? Dodam że jest to enkoder z liczbą impulsów 1000 na obrót lecz nie będzie to szybka praca - w granicach 1 obrót na 5 sekund.

    Pozdrawiam
  • Poziom 35  
    Najprościej dzielnik napięcia.

    Najpewniej optoizolacja (enkoder przez rezystor dajesz na diodę, a tranzystorem "podpinasz" pin procka do masy. W ATMega ustawiasz, że pin ma włączone podciąganie do VCC).
  • Poziom 13  
    MirekCz fajny pomysł, ale trochę mało konkketnie dla mnie:)

    na PC827 mogę to zrobić?

    może tak mam podłączyć?


    Wyjście z enkodera. Jak najlepiej zrobić układ?

    czy może diodę dać równolegle do AVR?

    dzięki

    Dodano po 20 [minuty]:

    źle zrobiłem

    wyczytałem że tak ma być

    Wyjście z enkodera. Jak najlepiej zrobić układ?

    z tym że jakie wartości rezystorów podać by było z 12 V-> 5 V ??

    Pozdrawiam
  • Poziom 35  
    1.Pierwszy schemat do bani

    2.Ten schemat jest dobry
    Rezystory nie mają tam bezpośrednio znaczenia, ponieważ 12V nigdzie się nie styka z 5V (stąd nazwa tej części optoIZOLATOR).

    Input masz +12V z enkodera
    Rezystor Rd obliczasz:
    12V z enkodera - ~2V spadku na diodzie w optoizolatorze=10V
    Teraz przez diodę optoizolatora powinien płynąć prąd ok. 10mA (możliwe, że trochę mniej, spójrz w dokumentację)
    Z prawa Ohma R=U/i więc Rd=10V/10mA=10V/0,01A=10*100Om=1000Om (1kOm)
    Rl możesz pominąć, ponieważ w procesorze możesz włączyć podciąganie pina wejściowego do VCC (czyli w procesorze ATMega masz tą część z Rl i VCC). Możesz oczywiście zrobić to też na zewnętrznych komponentach, ale bez sensu.
    Output oczywiście idzie do procesora.

    Jak to działa:
    Między lewą częścią optoizolatora na schemacie a prawą nie ma połączenia elektrycznego. Jedynie jest wiązka światła z diody na fototranzystor. Dlatego wejście i wyjście jest zupełnie odseparowane elektrycznie (12V nie pomieszasz z 5V VCC).
    Lewa część (INPUT,Rd,DIODA,GND) odpowiada za zapalenie diody, która daje sygnał fototranzystorowi do przepuszczenia prądu.
    Jeżeli dioda się nie pali, to fototranzystor nie przepuszcza prądu i masz tylko prąd płynący z VCC (5V) przez Rl do Output (czyli pina procesora).
    Gdy podasz napięcie na INPUT i dioda się zapali, to fototranzystor przewodzi i ściąga OUTPUT (wejście procesora) do masy. Rl jest po to, żeby nie stworzyć bezpośredniego połączenia VCC-GND czyli tzw. zwarcia.
  • Poziom 12  
    Daje przykładowy prosty schemat przejścia 24 VDC na 5VDC z optoizolacją na PCF847, sprawdzony w praktyce.
    Można ten schemat jeszcze rozbudować , wstawiając diody ( równolegle, przeciwna polaryzacja) z diodami optoizolatora - zabezpieczające przed zbyt dużym napięciem "wstecznym" na wejściu. Ale to w przypadku przetwarzania sygnałów z enkodera raczej nie jest potrzebne.
    Dla sygnału wejściowego 12VDC rezystory R1-R4 powinny mieć wartość około 3kΩ.
  • Poziom 21  
    Ja bym na początku sprawdził opis tego konkretnego enkodera. Napięcie zasilania enkodera nie zawsze decyduje o standardzie napięciowym wyjścia. Enkodery nie mają jednego standardu wyjścia. Wiele z nich jest typu OC (open collector) co powoduje że można go bardzo prosto dołączyć za pomocą rezystora podciągającego do +5V (a dokładnie czytając opis procka można znaleźć w nim piny portów które maja taki rezystor(pull up) już wewnątrz, czasem trzeba go tylko uaktywnić). Enkodery o szerokim zakresie napięcia zasilania mogą też mieć wewnątrz własny stabilizator i często bywa to właśnie +5V i wyjście impulsowe właśnie jest dopasowane do +5V (w końcu enkodery właśnie z urządzeniami cyfrowymi mają współpracować i z reguły nie wymagają skomplikowanych układów dopasowania)
    bis
  • Poziom 13  
    MirekCz dzięki!! widać że specjalista z branży.:)
    Biz masz rację, ale szukałem i nie mogłem znaleźć:/ jeszcze poszukam i dam znać.

    Pozdrawiam:)
  • Poziom 13  
    Witam,
    Mam jeszcze taki problem że licznik impulsów na AVRze nie działa. zauważyłem jednak że wszystko się liczy gdy zamiast impulsów +5V dochodzą impulsy zwarcia do masy czyli daję na PINB.0 sygnał GND i już tam się liczy. Co mam zmienić w programie by reagował nie na masę tylko na +5V? :(

    Pozdrawiam

    oto mój kod:

    '-----------------------------------------------------------------------------------------

    'name : encoder.bas

    'copyright : (c) 1995-2005, MCS Electronics

    'purpose : demonstration of encoder function

    'micro : Mega128

    'suited for demo : yes

    'commercial addon needed : no

    'An encoder has 2 outputs and a ground

    'We connect the outputs to pinb.0 and pinb.1

    'You may choose different pins as long as they are at the same PORT

    'The pins must be configured to work as input pins

    'This function works for all PIN registers

    '-----------------------------------------------------------------------------------------




    $regfile = "m128def.dat" ' specify the used micro

    $crystal = 4000000 ' used crystal frequency

    $baud = 19200 ' use baud rate

    $hwstack = 32 ' default use 32 for the hardware stack

    $swstack = 10 ' default use 10 for the SW stack

    $framesize = 40 ' default use 40 for the frame space


    Dim A As Byte
    Dim Message As String * 16

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2 'konfiguracja linii mikrokontrolera‚ do których dołączono wyświetlacz LCD



    Print "Encoder test"

    Dim B As Integer
    Dim C As Integer

    'we have dimmed a byte because we need to maintain the state of the encoder




    Portb = &B11 ' activate pull up registers




    Do

    B = Encoder(pinb.0 , Pinb.1 , Links , Rechts , 1)

    ' ^--- 1 means wait for change which blocks programflow

    ' ^--------^---------- labels which are called

    ' ^-------^---------------------------- port PINs

    Print B

    Waitms 10


    Loop

    End




    'so while you can choose PINB0 and PINB7,they must be both member of PINB

    'this works on all PIN registers




    Links:

    C = C + 1
    Print C
    Initlcd
    Cls
    Cursor Off
    Lcd C
    Lowerline
    Lcd C

    Print C

    Return




    Rechts:
    C = C - 1
    Print C
    Initlcd
    Cls
    Cursor Off
    Lcd C
    Lowerline
    Lcd C

    Print C

    Return


    End