Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Konwerter RS485 - USB z bajerami.

Szymon Tarnowski 22 Cze 2010 23:42 11445 24
  • Konwerter RS485 - USB z bajerami.

    Witam, jakiś czas temu udało mi się wymyśleć takie urządzenie, a ostatnio udało się skończyć projekt. Układ składa się z dwóch elementów, procesora PIC18F2455 oraz układu MAX1480. Układ MAX1480 zawiera pełny optoizolowany interfejs do RS485, wzmocniony dodatkowo transilami. Na złączu 5 pinowym wyprowadzono dodatkowo zdublowane sygnały, tak że jeśli będzie błędna polarycja RS485 to można przesunąć wtyczkę i zamienić linie magistrali. Dzięki zastosowaniu procesora udało się dodać kilka bajerów do urządzenia. Dodatkowe opcje w trybie specjalnym:
    1. dostęp do konfiguracji, zmiana trybu pracy, zablokowanie prędkości
    2. dostęp do pamięci EEPROM, można zrobić coś w rodzaju prostego klucza sprzętowego (240 bajtów)
    3. dostęp do prostego analizatora logicznego.
    Działanie układu jest sygnalizowane diodą RGB, która oznacza:
    czerwone - zasilanie ok, brak inicjalizacji USB
    zielona - urządzenie gotowe w trybie konwertera
    zielona + mignięcia niebieskie - nadawanie
    zielona + mignięcia czerwone - odbieranie
    miganie na przemian czerwone-niebieskie - tryb specjalny
    niebieska + czerwona - uruchominie trybu analizatora
    niebieska - analizator gotowy do pracy
    Rozdzielczość analizatora jest rzędu ~83ns, z zastrzeżeniem że nie jest w stanie rozróżnić tak szybkiej serii impulsów. Szacuję że rzeczywiste próbkowanie osiąga 1us. Aplikacja analizatora pozwala powiększać, przesuwać i używać kursorów. Funkcje kursorów potrafią odnajdywać zbocza sygnałów oraz obliczać różne wartości.
    Prędkość transmisji układu konwertera jest ograniczona do wartości możliwych w ustawieniach modułu UART procesora.

    Załączam kilka zdjęć jak to wygląda i jak działają programy. Przykład transmisji o prędkości 56000 baud, w programie można zobaczyć że jest brak symetrii pomiędzy czasem trwania bitów. Akurat to jest winą innego konwertera którego używałem do testów.

    Nie planuje upublicznienia dokumentacji i kodów programów.

    Konwerter RS485 - USB z bajerami. Konwerter RS485 - USB z bajerami. Konwerter RS485 - USB z bajerami.
    Konwerter RS485 - USB z bajerami. Konwerter RS485 - USB z bajerami.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Szymon Tarnowski
    Poziom 27  
    Offline 
    Szymon Tarnowski napisał 1263 postów o ocenie 89, pomógł 57 razy. Jest z nami od 2008 roku.
  • PCBway
  • #2
    raczek3
    Poziom 22  
    Projekt widzę że fajny. Szkoda że nie dajesz dokumentacji... Daj zdjęcie na początek. Pozdrawiam
  • #3
    Marczeli_P
    Poziom 20  
    Fajne ci to wyszło, a czy jest szansa że wrzucisz jego schemat? Byłbym zainteresowany zbudowaniem takiego konwerterka.
  • #4
    marek_Łódź
    Poziom 36  
    Ciekawy projekt. W jakim trybie pracuje USB? Jak z PC sterujesz kierunkiem transmisji via USB (linie sterowania modemem w wirtualnym COM???)? Szkoda, że te MAXy są takie drogie i nie ma wersji SMD. No ale jak się chce upchnąć w układzie logikę, izolację, przetwornicę i zabezpieczenia, to pewnie nie może być inaczej.
  • #5
    91janek
    Poziom 20  
    Bardzo ciekawy projekt i estetycznie wykonanie jego. Czy po podłączeniu samego tego konwertera do usb komputer wykrywa go?
  • PCBway
  • #6
    ludlum23
    Poziom 2  
    Szymon Tarnowski napisał:

    miganie na przemian czerwone-niebieskie - tryb specjalny


    Co się kryje pod określeniem tryb specjalny?

    Mógłby kolega udostępnić pełną dokumentację do układu?

    Gdzie kolega zdobył tego MAX-a i za ile?

    Wydaje mi się że za konwerter USB-RS232 służy Atmega, tylko jaka?
    W czym pisany soft na procesor i PC?
  • #7
    niemy
    Poziom 13  
    Programik na PC napisałeś sam czy jakiś gotowiec? Ponadto jest to tylko analizator czy też coś można wysłać przez niego. Może pracować w trybie dwu- i czteroprzewodowym ?
  • #8
    Szymon Tarnowski
    Poziom 27  
    Marczeli_P napisał:
    Fajne ci to wyszło, a czy jest szansa że wrzucisz jego schemat? Byłbym zainteresowany zbudowaniem takiego konwerterka.
    Schemat to nie problem, to połączenie dwóch schematów aplikacyjnych, przy nowszym revision procesora można nawet usunąć inwerter.
    marek_Łódź napisał:
    Ciekawy projekt. W jakim trybie pracuje USB? Jak z PC sterujesz kierunkiem transmisji via USB (linie sterowania modemem w wirtualnym COM???)?
    Interfejs przełącza automatycznie kierunek, nadawanie ma priorytet. Można programowo dopisać jeszcze przełączanie liniami portu, kiedyś chciałem nawet tak zrobić, pytanie tylko po co?
    marek_Łódź napisał:
    Szkoda, że te MAXy są takie drogie i nie ma wersji SMD. No ale jak się chce upchnąć w układzie logikę, izolację, przetwornicę i zabezpieczenia, to pewnie nie może być inaczej.
    Cena rzeczywiście jest wysoka, a co do braku SMD to ja bym jednak nie narzekał. Użycie technologii przewlekanej oznacza lepszą izolację, myślę że projektanci z MAXIM specjalnie użyli "szerokiej" obudowy tak żeby odległość między obwodami odizolowanymi mogła być odpowiednio duża. U mnie na płytce udało się osiągnąć prawie centymetr, w SMD to by się już nie udało. Można by użyć MAX3157 który już występuje w SMD ale ma gorszą izolację, albo użyć MAX485+ADUMxxx+jakaś przetwornica z izolacją, parametry będą podobne do MAX1480 ale odstęp między obwodami będzie znacznie mniejszy.
    91janek napisał:
    Bardzo ciekawy projekt i estetycznie wykonanie jego. Czy po podłączeniu samego tego konwertera do usb komputer wykrywa go?
    Komputer widzi urządzenie jako port COM, wykorzystuje standardowy sterownik CDC. Do uruchomienia potrzeba tylko "sterownik" w postaci pliku INF.
    ludlum23 napisał:
    Co się kryje pod określeniem tryb specjalny?
    W trybie specjalnym jest dostęp do konfiguracji, dostęp do pamięci EEPROM, można przełączyć w tryb analizatora i odebrać dane z bufora analizatora. Po wejściu w tryb specjalny zawieszana jest komunikacja z magistralą RS485.
    ludlum23 napisał:
    Gdzie kolega zdobył tego MAX-a i za ile?
    Kilka lat temu z sampli. Myślałem o jakieś produkcji mini-seryjnej, tylko nie mam dostawcy z dobrą ceną.
    ludlum23 napisał:
    Wydaje mi się że za konwerter USB-RS232 służy Atmega, tylko jaka? W czym pisany soft na procesor i PC?
    Użyłem Microchip PIC18F2455. Soft na procesor wykorzystuje część gotowych przykładów do CDC od producenta. Soft pisany pod kompilator C18 ze wstawkami asemblera. Na PC soft pisany pod vxDev (nowa wersje Dev-c++).
    niemy napisał:
    Programik na PC napisałeś sam czy jakiś gotowiec? Ponadto jest to tylko analizator czy też coś można wysłać przez niego.
    Programy na PC są moje, interfejs poza dodatkami jest funkcjonalny, tzn wysyła i odbiera dane. Tryb pracy działa tak jak się ustawi, blokada prędkości może być uaktywniona, można też trochę "podregulować" opóźnienie między włączeniem nadajnika a nadawaniem.
    niemy napisał:
    Może pracować w trybie dwu- i czteroprzewodowym ?
    MAX1480 pracuje tylko w trybie dwuprzewodowym, jest też odpowiednik MAX1490 do trybu dwuprzewodowego. Chętnie bym użył tego drugiego scalaka, ale miałem sztukę tylko tego pierwszego. Oba są funkcjonalnie podobne, minimalnie inne pinologia.
  • #9
    marek_Łódź
    Poziom 36  
    ludlum23 napisał:
    Gdzie kolega zdobył tego MAX-a i za ile?
    MAX1480 są dostępne w TME, chociaż nie z półki, ale ceny są niespecjalnie zachęcające.
    ludlum23 napisał:
    Wydaje mi się że za konwerter USB-RS232 służy Atmega, tylko jaka?
    Może służyć ATMega8/16/32U2/U4, AT90USB82/162 itp. Możliwe jest też zrealizowanie programowego USB na M8/16/32, ATTiny2313 itp..., ale to inna bajka, raczej dla radiopajęczarzy, jak dla elektroników.
    Szymon Tarnowski napisał:
    Interfejs przełącza automatycznie kierunek, nadawanie ma priorytet. Można programowo dopisać jeszcze przełączanie liniami portu, kiedyś chciałem nawet tak zrobić, pytanie tylko po co?
    Fakt, nadmiarowe.
    Szymon Tarnowski napisał:
    a co do braku SMD to ja bym jednak nie narzekał. Użycie technologii przewlekanej oznacza lepszą izolację, myślę że projektanci z MAXIM specjalnie użyli "szerokiej" obudowy tak żeby odległość między obwodami odizolowanymi mogła być odpowiednio duża. U mnie na płytce udało się osiągnąć prawie centymetr, w SMD to by się już nie udało.
    Ten problem jest rozwiązany w SMD...po prostu separuje się wzdłuż scalaka, a nie w poprzek. Przykład LCT1535. Podejrzewam, że większym problemem było upchnięcie wszystkiego z przetwornicą i transilami włącznie.

    W czym pisałeś SOFT na PC? (sorry, odpowiedź była wyżej)... Rozumiem, że układ nie jest transparentny (nie transmituje bezpośrednio wszystkiego, co dostaje, skoro potrafi przejść w "tryb specjalny")
  • #10
    Szymon Tarnowski
    Poziom 27  
    marek_Łódź napisał:
    Ten problem jest rozwiązany w SMD...po prostu separuje się wzdłuż scalaka, a nie w poprzek. Przykład LCT1535. Podejrzewam, że większym problemem było upchnięcie wszystkiego z przetwornicą i transilami włącznie.
    Wiem a czasem się "kastruje" zbędne nogi, ale to nie to samo ;) Być może rzeczywiście problemem mogą być jakieś mikromaszynowe transformatory, MAX1490 ma na schemacie blokowym tak zrobione zasilanie, przykładowo wspomniany MAX3157 ma przetwornicę pojemnościową z izolacją "pomiędzy" okładkami kondensatora. Przykładowo Texas Instruments ma przetwornice izolowane chyba do 1kV które są w rozmiarze SO28 ale o wysokości obudowy podobnej do TQFP.
    marek_Łódź napisał:
    W czym pisałeś SOFT na PC?
    Soft na PC w vxDev-C++, kod napisany z użyciem WinAPI, przypuszczam że powinien działać bez problemu pod wine albo innym emulatorem.
    marek_Łódź napisał:
    Rozumiem, że układ nie jest transparentny (nie transmituje bezpośrednio wszystkiego, co dostaje)
    Normalnie po włączeniu jest w 100% transparentny, działa jak normalny konwerter z tą różnicą że pamięta ustawienia konfiguracji w EEPROM, programy potrafią przełączyć go w tryb specjalny i wykorzystać dodatkowe opcje. Po odłączeniu i podłączeniu (nawet jak program konfiguracyjny się zawiesi) urządzenie znowu jest w 100% transparentne. Wejście w tryb specjalny nie polega na przesłaniu jakieś instrukcji po kanale komunikacyjnym.
  • #11
    marek_Łódź
    Poziom 36  
    Szymon Tarnowski napisał:
    Wejście w tryb specjalny nie polega na przesłaniu jakieś instrukcji po kanale komunikacyjnym.
    No to w takim razie CO wywołuje ten tryb :?:
  • #12
    Szymon Tarnowski
    Poziom 27  
    marek_Łódź napisał:
    Szymon Tarnowski napisał:
    Wejście w tryb specjalny nie polega na przesłaniu jakieś instrukcji po kanale komunikacyjnym.
    No to w takim razie CO wywołuje ten tryb :?:
    Ten sekret mogę zdradzić, ustawienie prędkości transmisji na -1 baud ;)
  • #13
    marf41
    Poziom 11  
    marek_Łódź napisał:
    Możliwe jest też zrealizowanie programowego USB na M8/16/32, ATTiny2313 itp..., ale to inna bajka, raczej dla radiopajęczarzy, jak dla elektroników

    Aż takie skomplikowane to nie jest. ;) (przykład z DMX)
  • #14
    marek_Łódź
    Poziom 36  
    marf41 napisał:
    Aż takie skomplikowane to nie jest. ;) (przykład z DMX)
    Chodzi o programowe USB (np.na AVR)? Nie napisałem, że jest to rozwiązanie skomplikowane, tylko nieprofesjonalne (czytaj: "kiepskie"). Poza tym jeśli mamy porównywalne (cenowo i obliczeniowo) procesory ze sprzętowym USB, nie ma absolutnie żadnego uzasadnienia dla zastosowania pod każdym względem gorszego rozwiązania softwarowego USB na zwykłym porcie.
  • #15
    markovip
    Poziom 34  
    Zrobiłem porównywalne urządzenie z użyciem FT232RL, MAX485 i programu Enttec DMX USB. Za kilka €, bo MAX z sampli.

    Powiedz, czym różni się Twój konwerter od mojego?
    Możesz u siebie modyfikować "break time"? Wiem, że jest dużo problemów z niekompatybilnością w wielu urządzeniach.
  • #16
    marek_Łódź
    Poziom 36  
    markovip napisał:
    Zrobiłem porównywalne urządzenie z użyciem FT232RL, MAX485 i programu Enttec DMX USB. Za kilka €, bo MAX z sampli.
    A jak wygląda u Ciebie izolacja galwaniczna i jej zasilanie (przetwornica), tudzież zabezpieczenia przepięciowe na liniach RS485, bo póki co piszesz o innym urządzeniu, chociaż w pewnym stopniu porównywalnym funkcjonalnie.
  • #17
    markovip
    Poziom 34  
    Nie, nie posiada izolacji galwanicznej. Konwerter nie został zrobiony do warunków przemysłowych, tylko scenicznych, gdzie takie zabezpieczenie nie jest aż tak konieczne.

    Charakterystykę i zabezpieczenia MAX485 możesz sobie przeczytać na stronie producenta.
  • #18
    profesorek_96
    Poziom 16  
    Nurtuje mnie pytanie jakiej funkcji programu vxDev użyłeś do zbudowania tego wyświetlacza w aplikacji Scope v1.4?
  • #19
    Szymon Tarnowski
    Poziom 27  
    markovip napisał:
    Możesz u siebie modyfikować "break time"? Wiem, że jest dużo problemów z niekompatybilnością w wielu urządzeniach.
    Nie przewidziałem tego w swoim programie, aczkolwiek nie widzę problemów żeby w przyszłości to dodać jeśli będzie potrzebne. W moich urządzeniach nie miałem dotychczas takich potrzeb. Czy chodzi o czas trwania "sygnału" BREAK czy jakieś opóźnienie po wysłaniu każdego znaku.

    profesorek_96 napisał:
    Nurtuje mnie pytanie jakiej funkcji programu vxDev użyłeś do zbudowania tego wyświetlacza w aplikacji Scope v1.4?
    Żadnej, wszystko jest napisane w czystym WinAPI. Użyłem standardowego obiektu STATIC z parametrem OWNERDRAW a następnie w pętli głównej programu w obsłudze komunikatu zrobiłem rysowanie obiektu na podstawie generowanej wirtualnie bitmapy.
  • #20
    markovip
    Poziom 34  
    Tak, chodzi mi o sygnał BREAK. Spotkałem się wiele razy, gdy ten czas wynosił nawet 63us, co robi z takiego urządzenia bezużyteczne.

    Niestety nawet wiele markowych konwerterów, jest pozbawione tej opcji.
  • #21
    marek_Łódź
    Poziom 36  
    Czy ten sygnał BREAK występuje w protokołach poza DMXem :?:
  • #22
    Szymon Tarnowski
    Poziom 27  
    markovip napisał:
    Tak, chodzi mi o sygnał BREAK. Spotkałem się wiele razy, gdy ten czas wynosił nawet 63us, co robi z takiego urządzenia bezużyteczne.
    Czy problemem jest za krótki czy za długi sygnał? Na ile sygnał musi być dokładny? Z tego co pamiętam według specyfikacji rs232 sygnał powinien trwać 12 cykli taktowania. Wydaje mi się że im dłuższy tym lepiej, bo urządzenie będzie miało więcej czasu na zakończenie danej pracy i później będzie czekać na koniec break i właściwe dane.

    marek_Łódź napisał:
    Czy ten sygnał BREAK występuje w protokołach poza DMXem :?:
    Ja nigdy nie pracowałem z DMX i nigdy nie był przydatny, chyba w warunkach komunikacji przemysłowej tego nigdy nie widziałem. Już chyba lepszym wodotryskiem jest transmisja 9bitowa, gdzie ustawiony bit oznacza początek ramki.
  • #23
    markovip
    Poziom 34  
    DMX512 idzie poRS485. ;)

    marek_Łódź napisał:
    Czy ten sygnał BREAK występuje w protokołach poza DMXem :?:


    Na pewno w RS422. Czy w innych protokołach - nie wiem.


    Minimalny, a zarazem typowy czas sygnału Break dla DMX to 88us, maksymalny to 1.000.000us.
  • #24
    naelektryzowany
    Poziom 17  
    Mam pytanie co to za obudowa(1fotka)? chodzi mi o konkretny model. Przeszukałem katalog TME, lecz albo kiepsko szukałem albo do tej obudowy fotki nie dali.