logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

komunikacja PC - RS485 z wykorzystaniem max232 i NE555

lisek_lichu 16 Lip 2013 10:25 3027 7
REKLAMA
  • #1 12527472
    lisek_lichu
    Poziom 11  
    Witam,

    mam proste pytanie odnośnie komunikacji komputera PC z pomocą mikrokontrolera z wykorzystaniem standardu RS485. Przeczytałem trochę na temat różnych rozwiązań i możliwości wysłania danych wykorzystując różne sposoby generowania sygnału DE do max485 z RS232 i znalazłem kilka stron które opisują jeden sposób wykorzystujący układ czasowy NE555. Jednej rzeczy nie moge w nim zrozumieć i mam nadzieję że mi pomożecie.

    Na stronie AVT jest artykuł o konwerterze PC-RS232-RS485 http://serwis.avt.pl/manuals/AVT530.pdf. Ten sam artykuł jest w książce "Programowanie mikrokontrolerów PIC w języku C".

    Zastanawia mnie zasada działania NE555 w tym przypadku. W układzie jak na schemacie z pliku PDF dołączony rezystor 3k9 i kondensator 10nF generują impuls wysoki na nóżce OUT NE555 o długości około 39-40us gdy wykryją bit startu na MAX232 co umożliwia przełączenie MAX485 w tryb nadawania. Po tym czasie na wyjściu OUT NE555 znika stan wysoki i RS485 przechodziw stan odbioru. Z tego ja rozumiem że mam 39-40us [ln(3) * 3900Ohm * 0,000000010pF] na wysłanie całego bajta a w tekście jest napisane:

    Cytat:
    W momencie wykrycia bitu startu, na wyjœciu OUT układu US4 pojawia się stan wysoki, który przełącza układ MAX485 w tryb nadawania i umożliwia wysłanie danych. Po wysłaniu odpowiedniego bitu
    Cytat:
    tutaj nie rozumiem czemu bitu a nie bajtu
    następuje automatyczne przełączenie układu MAX485 w tryb odbioru. Takie sterowanie trybem pracy umożliwia zwolnienie linii już w około 40 us po zakończeniu wysyłania danych, co jest istotne w przypadku odczytu danych z dołączonych modułów


    Dodatkowo jak sprawdzałem kod programu to ustawiona jest prędkość 1200b/s czyli jeden bit trwa około 833us czyli nie zdąże wysłać nawet bitu startu.

    Czy ktoś może mi to wytłumaczyć?
  • REKLAMA
  • #2 12528468
    Skwantowany
    Poziom 20  
    A z jaką prędkością chcesz wysyłać dane?
  • REKLAMA
  • #3 12529361
    lisek_lichu
    Poziom 11  
    od 1200 b/s do 9600 b/s ale w sumie nie jest to istotne w moim pytaniu. Bardziej chodzi mi o wytłumaczenie zasady działania NE555 w tym przypadku i dlaczego w tekście jest napisane bitu zamiast bajtu (czy to błąd czy tak właśnie powinno być).

    pozdrawiam lis
  • REKLAMA
  • #4 12529504
    Skwantowany
    Poziom 20  
    Po wykryciu zera (bitu startu) generowany jest impuls przestawiający max485 w tryb nadawania i wysłania "0". Natomiast wysyłanie "1" odbywa się poprzez:
    "Aby zapobiec takiej sytuacji linia przesyłowa jest wstępnie ustawiana w stan jedynki logicznej przez rezystory R2...R4" - z opóźnieniem równym czasowi generowanemu przez tego ne555 -
    czyli ustawienie max485 w tryb odbioru. Dlatego dla mnie jest ten zapis właściwy, choć jest coś niedopowiedziane. Dodatkowo taki sposób sterowania maxem485 ogranicza max. szybkość transmisji właśnie z powodu ustawionego czasu na ne555.
  • #5 12529725
    lisek_lichu
    Poziom 11  
    Czyli z tego co piszesz układ działa następująco:

    gdy z PC chcemy wysłać bajt danych np 11001011 z prędkością 1200 b/s [833us na bit] to najpierw wysyłamy bit startu czyli 0. Pojawienie sie zera uruchamia NE555 i ustawia RS485 w tryb nadawania na czas 40us ale póki mamy cały czas stan niski na linii TX to NE555 będzie cały czas podtrzymywało tryb nadawania na RS485. Gdy minie 833us zaczniemy wysyłać jedynkę (najmniej znaczący bit) czyli na TX pojawi się stan wysoki i NE555 przełączy RS485 w stan odbioru do czasu pojawienia się kolejnego zera do wysłania, czyli po 833us * 2 (mamy dwie jedybki na najmniej znaczących pozycjach). W tym czasie urządzenia odbiorcze na lini zauważyły, że master nadaje i powinien wysłać po bicie startu 8 bitów danych i bit stopu na końcu (każdy bit w odstępach 833us) i w takich mniej więcej odstępach (w środku trwania bitu) czytają stan na linii. Gdy wysyłamy 3 bit czyli zero znów pojawi się stan niski na TX i NE555 przełączy RS485 w stan nadawanai tego zera itd...

    skoro NE555 ma czas nastawiaony na 40us to oznacza to że maxymalna prędkośc wysyłania danych nie przekroczy 1/0,000040 s = 25000 b/s

    Dobrze to rozumuję?
  • #6 12529768
    Skwantowany
    Poziom 20  
    Ja przynajmniej tak to widzę.
  • REKLAMA
  • #7 12530044
    lisek_lichu
    Poziom 11  
    W sumie innego rozwiązania nie widzę ale może ktoś bardziej obeznany zabierze jeszcze głos w tym temacie :P
  • #8 12545301
    lisek_lichu
    Poziom 11  
    Cos mi tutaj nie pasuje. Mianowicie w kilku artykułach znalazłem zapiski (m.in. edw) takie jak:

    Cytat:
    Podczas projektowania układów należy zwrócić uwagę, aby ujemny impuls wyzwalający był zawsze krótszy od impulsu wyjściowego. Nie spełnienie tego warunku spowoduje błędną pracę układu (przedłużanie impulsów wyjściowych).


    O ile ja dobrze rozumuję to nasz impuls wejściowy czyli stan niski (bit startu) przy prędkości 1200 b/s będzie trwał około 833us a stan na wyjściu NE555 będzie trwał 40us przy 10pF i 3k9Ohm a takie właśnie ustawienia hardwarowe zastosowano w artykule o konwerterze PC-RS232-RS485 http://serwis.avt.pl/manuals/AVT530.pdf który podałem wcześniej.

    Czy może ten dodatek na końcu tekstu "Przedłużanie impulsów wyjściowych" jest w tym przypadku wykorzystane jako "chciana" błędna praca bo wtedy miało by to sens i sygnał out na wyjściu NE555 trwałby aż do zakończenia trwania sygnału bitu startu.

    Czy ktoś mógłby rozwinąc temat
REKLAMA