Konwerter 3w1 – USB do RS232, RS485, UART

Prezentowane urządzenie to konwerter 3w1: USB – RS232, RS485, oraz UART. Rolę konwertera pełni dedykowany układ FT232RL widziany w systemie jako port COM, a wspomagany jest przez dwa układy MAX232 oraz MAX485. Wszelkich ustawień pracy konwertera dokonujemy poprzez system tak jak ma to miejsce w normalnym porcie COM, obsługiwane prędkości 110 – 921600 bps.

Płytka jednostronna o wymiarach 30mm x 58mm, wszystkie elementy do montażu powierzchniowego, prócz gniazda COM (DB-9M, męski DB9). Na płytce znajdują się dwie diody sygnalizacyjne, czerwona TX oraz zielona RX, przyłączone odpowiednio do pinów CBUS0 oraz CBUS1 układu FT232R. Rezystory ograniczające prąd to typowo 270ohm, ale należałoby dobrać je do napięcia diod, czerwona z reguły wymaga mniejszego napięcia.

Dostępne są trzy złącza:

RS232 – Rolę tłumacza napięć TTL – V.24 pełnią dwie kości MAX232. Można by zastosować dedykowany konwerter MAX211 ale jest on dużo droższy i ciężej go dostać więc zdecydowałem się jednak na tanie i wszechobecne MAX232. Jedyna wada takiego rozwiązania to brak konwersji linii RING, ale praktycznie nie jest ona wykorzystywana w innych urządzeniach. Układy posiadają pompę ładunkową wytwarzającą napięcia +9V oraz -9V niezbędne dla zagwarantowania zgodności z V.24. Układy RS232 odwracają logikę, stan wysoki na wejściu da stan niski na wyjściu i odwrotnie.

RS485 – Na płytce znajduje się także układ konwertera RS485 (tutaj SN75176), jego nadajnik sterowany jest linią TXDEN z pinu CBUS2 układu FT232R, tak że aktywny jest tylko w chwili wysyłania znaku i odbywa się to automatycznie. Jego odbiornik w tym konwerterze jest konfigurowalny poprzez przypisanie poszczególnych funkcji dla pinu CBUS3 układu FT232. Zrobimy to przy pomocy programu MPROG którego obsługę opiszę niżej. Funkcja „TXDEN” – odbiornik będzie cały czas włączony ale będzie wyłączany automatycznie podczas nadawania – nie odbierzemy echa. „PWRON” – odbiornik załączony na stałe, będzie odbierane echo. „I/O” – odbiornik wyłączony, wyjście w stanie wysokiej impedancji, nie blokuje linii READ umożliwiając korzystanie z pozostałych złącz konwertera. UWAGA – domyślnie odbiornik pracuje! Wyjście różnicowe A i B w postaci goldpinów, na płytce dodatkowo znajduje się zworka załączająca rezystor terminatora 120ohm.

UART TTL – Czyli linie TxD oraz RxD w standardzie TTL wyprowadzone w postaci goldpinów do bezpośredniego podłączania układów korzystających z transmisji asynchronicznej z poziomami napięć 0V-5V, takich jak mikrokontrolery. Pin RxD jest współdzielony z wyjściem układu RS232 który nie ma możliwości przełączenia go w stan wysokiej impedancji podczas gdy układ jest nieużywany (0V na wejściu RS). W zamian przy takim stanie wejścia serwuje nam stan wysoki na pinie RxD uniemożliwiając jego bezpośrednie współdzielenie z innym urządzeniem nadającym. Najłatwiejszym sposobem obejścia tego konfliktu było połączenie wyjścia tego układu do linii read poprzez rezystor 10K – układ FT232 dane odbierze prawidłowo, a podłączając inny nadajnik pod złącze UART TTL prąd potrzebny do ściągnięcia pinu RxD nie będzie większy jak 1mA.

Układ zasilany jest z portu USB, przedstawiając się dla komputera informuje go że jego zapotrzebowanie na prąd to 90mA. Wartość tą dobrze będzie zwiększyć, a to z powodu układu do konwersji RS485 którego zapotrzebowanie na prąd jest o wiele większe. Użyjemy do tego celu programu MPROG, za pomocą którego mamy możliwość zmiany zawartości wewnętrznej pamięci eeprom i przystosować kość do naszych potrzeb. Najpierw instalacja sterowników. Pobieramy STEROWNIK VCP (virtual com port), po podłączeniu urządzenia wskazujemy instalatorowi paczkę ze sterownikiem.

MPROG:

Przed użyciem programu MPROG należy zamknąć połączenie w terminalu jeśli jest otwarte. W programie MPROG z zakładki Tools wybieramy Read and Parse. Ujrzymy wszystkie ustawienia kości. W polu USB power options zmieniamy wartość Max bus power na 500mA czyli maksimum dla portu USB2.0 – przyda się taki prąd do zasilania innych urządzeń poprzez konwerter. Niżej możemy zmienić nazwę producenta i nazwę urządzenia, z prawej strony w polu Invert RS232 Signals możemy odwrócić logikę dowolnego sygnału, a niżej w polu I/O controls możemy przypisać dowolne funkcje pinom CBUS0 – CBUS4. Diody kontrolne i linie sterujące przepływem RS485 są ustawione domyślnie na pinach CBUS0 – CBUS3. Na pozostałym pinie CBUS4 możemy np. wyprowadzić sobie zegar z układu. Zaznaczony High current I/O da nam wyższą wydajność prądową linii uart oraz cbus. Load D2XX driver za każdym podłączeniem będzie ładował sterownik D2XX zamiast VCP. Reszty ustawień USB takich jak VID PID radzę nie dotykać jeśli nie wie się co się robi :) Aby zapisać nowe ustawienia, z menu File wybieramy i zapisujemy plik eepromu na dysk. Teraz klikamy na symbol z piorunem Program all existing devices – i tyle. Poniżej screen

Jeśli zmieniliśmy nazwę urządzenia, to po ponownym podłączeniu konwertera otrzymamy nowe urządzenie w systemie (oraz kolejny port COM) – być może trzeba będzie znów wskazać ścieżkę do sterownika. Komputer doda nowy port COM także wtedy, gdy zmieni się numer seryjny USB – a zmienia się automatycznie przy każdym zapisie pliku eepromu. Aby temu zapobiec możemy całkiem wyłączyć numer seryjny USB zaznaczając ptaszek na opcji Disable USB serial number

Montaż:

1. Gniazdo COM lutowane od wierzchu – potrzebujemy gniazda z niezabudowanymi wyprowadzeniami aby móc je w miarę łatwo przylutować. W przypadku gniazda zabudowanego tak jak w tym przypadku, o ile do 5 pinów z brzegu można się dostać cienkim grotem, to 4 piny od środka należy połączyć nieco inaczej. Sztuczkę jaką z powodzeniem stosuję można znaleźć tutaj – Lutowanie Przelotek.
2. Ścieżki przechodzą pomiędzy padami układów SOIC, ich grubość w tych miejscach wynosi 10 milsów, a odstępy w tych miejscach jeszcze mniej – należy więc starannie wykonywać płytkę aby uniknąć zwarć.
3. Miejsca na kondensatory dla układów MAX232 przystosowane do lutowania elektrolitów SMD w obudowach 0405 , można użyć kondensatorów ceramicznych lub innych, oczywiście o odpowiednich wartościach.
4.Na płytce nalezy wykonać 5 połączeń zworkami.

Uwagi:

Aby sprawdzić układ RS232, należy zewrzeć piny nr 2 oraz 3 we wtyczce DB9 – w terminalu powinniśmy otrzymać echo tego co wysyłamy, a obydwie diody powinny migać jednocześnie. Jeśli tak się nie dzieje, należy zewrzeć piny TX oraz RX w złączu TTL – tutaj musi już to działać o ile płytka nie zawiera błędów montażowych. W przypadku problemów z konwerterami MAX232, należy zmierzyć napięcia na nogach 2 oraz 6 – powinny wynosić w okolicach +9V oraz -9V. Jeśli tak nie jest, nalezy sprawdzić czy użyliśmy prawidłowych kondensatorów dla wbudowanej przetwornicy napięcia – wersja MAX232 wymaga 4x 1uF, natomiast wersja MAX232A wymaga 4x100nF. Aby sprawdzić układ RS485 wystarczy włączyc jego odbiornik. Na fotografiach płytka prototypowa, brak na niej rezystora 1K oddzielającego linię RxD od wyjścia MAX232 – w załączniku uaktualniony projekt.

Zobacz też mój poprzedni konwerter – USB – RS232 TTL – tylko linie RX oraz TX, niski koszt wykonania, idealny do zabawy z mikrokontrolerami.

Galeria:

Pliki:

POBIERZ – pliki projektu eagle 5.10, ich odpowiedniki PDF, schemat.


2.00 avg. rating (50% score) - 4 votes

24 komentarze

  1. Coś jest nie tak z obrazkami. Wszystkie wyświetlają się z napisem „Please do not hotlink”.

  2. O, już działa. To chyba coś u mnie. Przepraszam.

    • Pobierając obrazek, linkiem referencyjnym musi być diy.elektroda.eu lub musi być on pusty – inaczej włącza się zabezpieczenie przeciw hotlinkowaniu. Być może to problem przeglądarki, być może serwera, nie powinno się to zdarzać przy oglądaniu strony.

  3. miałem zrobiony bardzo podobny konwerter tylko że wszystko było w obudowach DIP – gdy potrzebowałem wyjścia uart, wyjmowałem max232 z podstawki. gdy przeszkadzał mi odbiornik układu max485, także go wyjmowałem z podstawki… max485 zgubiłem a max232 połamał sobie wszystkie nogi, i taki był finał.

  4. Witam, szacun za projekt:) Mam takie pytanko, bo nie dawno użyłem śrdoka cynującegeo i chcem sie go z płytki pozbyć.Jak to zroibć rozpuszczalnik? Bo papierem kredowym wiem ze sie da ale ma juz ja troche zlutowna co utrudnia sprawę:D

    Pozdrlo:)

  5. Dzieńdobry. Widziałem już kilka konwerterków które miały wspólne linie RX połączone na sztywno! I ani autor ani użytkownik nie zdawał sobie w ogóle sprawy z tego, że korzystając z wejścia ttl, robi zwarcie na maxie! Prąd tam faktycznie nie jest duży i przy połączeniu tego z mikrokontrolerem transmisja odbywa się prawidłowo, i tego nie widać – o zgrozo :( A tutaj widzę że fajnie pomyślane z tym rezystorkiem, i sterowaniem maxem485. Gdyby nie tak drobniutkie ścieżki to bym sobie wykonał układzik… no chyba że masz może w zapasie płyteczkę bo na foto widzę dwie :)
    Pozdrawiam Max.

  6. Witam mam pytanie odnośnie tego konwertera. Czy można go użyć do programowania PLC ?
    Skoro jest tam RS485 jak to wygląda z tej strony czy trzeba coś jeszcze do poprawnego działania ??

    Pozdrawiam Jacxek

    • Nie mam pojęcia, nie jestem w temacie. Sądzę że datasheety tych kości pomogą lepiej niż moje wróżby :)

  7. Witam, czy ktoś z kolegów może zrobić spis elementów SMD w jakich obudowach występują w tym konwerterze? jestem jeszcze bardzo mało dościadczony w tym temacie.Z góry dziękuję.
    Janek

  8. Pingback: Convertidor USB a RS232, RS485 y UART | Automatismos Mar del Plata

  9. Zmotowałem układ, ale mam problem z uruchomieniem. Konwerter został prawidłowo wykryty, mprog sie dogaduje z FT232, na nózkach 2 i 6 układów max232 napięcia -8,8V i odpowiednio 8,7v. Ale zawarcie pinów 2i3 w DB9 oraz pinów RXiTX nie powoduje zadnej reakcji. Gdzie szukac przyczyny?

  10. george2002

    Po pierwsze gratulacje udanej płytki dla kolegi manekinen :)
    jajen musisz poustawiać bity CBUS2 i CBUS3 aby dobrze hulało, u mnie na początku kiedy standardowo złożyłem układ układ od razu odpowiadał to co wysłałem, swoją drogą wyłączyłem RS485 i jest ok tylko mam pytanie do kolegi manekinen: jak ustawić wszystkie bity CBUS aby RS232 działał normalnie czyli dopiero jak zewrę pin 2 z 3 to odpowiadał a nie od razu a RS485 działał również bez echa ? tzn jak podłączęcoś do RS232 to działa normalnie, jak odłączę z RS232 i podłączę coś innego do RS485 to również działał ale nie blokował linii RS232 i nie robiło się to echo ?

    Pozdrawiam
    George2002

  11. george2002

    Po pierwsze gratulacje udanej płytki dla kolegi manekinen :)
    jajen musisz poustawiać bity CBUS2 i CBUS3 aby dobrze hulało, u mnie na początku kiedy standardowo złożyłem układ układ od razu odpowiadał to co wysłałem, swoją drogą wyłączyłem RS485 i jest ok tylko mam pytanie do kolegi manekinen: jak ustawić wszystkie bity CBUS aby RS232 działał normalnie czyli dopiero jak zewrę pin 2 z 3 to odpowiadał a nie od razu a RS485 działał również bez echa ? tzn jak podłączęcoś do RS232 to działa normalnie, jak odłączę z RS232 i podłączę coś innego do RS485 to również działał ale nie blokował linii RS232 i nie robiło się to echo ?

    PS zamiast dławika na zasilaniu dałem sobie diodę zabezpieczającą gdyby jakieś zasilanie poszło z układu docelowego i bezpiecznik polimerowy 250mA :)

    Pozdrawiam
    George2002

  12. Witam.Na wstępie dzięki za opracowanie konwertera, ale mam jeden problem. Gdy jest ciemno i konwerter jest połączony z komputerem lekko żarzy się czerwona dioda (w dzień tego nie widziałem). Mam wyłączony RS485, napięcia są na nogach 2i6 odpowiednio 8,9V oraz -8,8V.Sprawdzałem echo i jest ok.
    Czy to żarzenie jest dopuszczalne czy coś nie tak zrobiłem?
    Dodam ,że płytkę pod kątem montażu sprawdziłem.
    pozdrawiam robert.

    • Jeśli układ pracuje poprawnie, tzn uart ttl też pracuje poprawnie, to nie widzę powodów do obaw. Jak wiesz czerwone diody pracują przy niższym napięciu niż pozostałe, może Twoja włącza się już przy minimalnym napięciu i skądś je sobie bierze. Umyłeś dobrze płytkę?

  13. Witam. Dzięki za odpowiedź . Tak jak pisałem płytkę sprawdziłem po montażu . Jest na pewno czysta. Myślę że jest wszystko w porządku bo programator który podpinam działa. Mój problem zamykam.

    pozdrawiam robert

  14. Mam pytanie. Co się stanie jeśli nie podłącze do niczego wejścia VCC a są do wyjść CBUS podłączone diody LED? Nic się nie spali w układzie FT232RL?

  15. Witam, fajny projekt ale nie bardzo rozumiem skad wartosci dwoch rezystorow R4 i R1 maja wartosc 0 ohm., zamierzam sobie zrobic taka przejsciowke ale zastanawia mnie wartosc tych rezystorow.

    • To są zworki/mostki. W technologii SMD najczęściej występują jako rezystory 0ohm.

  16. Zrobiłem ta plytke, ale mam maly problem. Mierze napiecie na linii TxD i mam 4.4 V a powinno byc 0. Nie moge przez to zrobic echa. w terminalu wysylajac cokolwiek miga mi dioda , ale nic nie odbiera. Nie wiem dlaczego na wyjsciu FT232RL na pinie Txd odrazu mam 4.4 V nawet jak nic nie wysyłam.

    • Podlaczajac konwerter do USB, mrugaja mi obie diody przez chwile. Mierzyłem napiecie na maxie jest -9 i +9. próbowalem zwierac piny 2 i 3 i patrzec czy leci echo ale nie leci. wysylajac cokolwiek mruga mi 1 z diod, zwierajac txd z rxd 2ga dioda nie reaguje. Tak jak mowilem napiecie na TxD jest ciagle 4V…;/ patrzylem na zwarcie nie mam nigdzie, wszystko wydaje sie byc ok.

  17. dodam jeszcze ze wylaczylem rs485, dajac na cbus3 i/0. Uklad fajnie wysyła linia txd pracuje ale nic nie odbiera. napiecie na UART txd 4V, na rxd 0.7V caly czas. Ktos pomoze ?

  18. Witam serdecznie, chcę zamówić sobie płytkę dla tego konwertera w firmie zajmującej się pcb, ktoś również chce?

    • Witaj, radzę poszukać jakiegoś nowszego i lepszego konwertera jeśli już chcesz zamawiać płytki. Ten układ działa, ale z pewnością znajdziesz lepszy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: