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

[ATMEGA]OPTOIZOLACJA RS485 I FT232RL. Prośba o sprawdzenie.

adambehnke 01 Feb 2011 22:26 7630 15
Altium Designer Computer Controls
  • #1
    adambehnke
    Level 24  
    Witam
    Jestem w trakcie projektowania płyty do mojego systemu na której umieszczone będzie kilka modułów komunikujących się między sobą za pomocą rs485. Ale ta płyta będzie miała także łączność z siecią zewnętrzną która już pracuje a także ma mieć możliwość komunikacji z PC właśnie poprzez rs485.
    Zastosowałem do celu komunikacji z PC mój ulubiony układzik FT232RL na którym pracuję cały czas i nie ma z nim najmniejszych problemów.

    Jako że płyta którą projektuje będzie dosyć kosztowna dlatego zdecydowałem się na pełną optoizolację sieci RS485 (lepiej dmuchać na zimne).

    Poniżej zamieszczam część mojego schematu odpowiedzialną za komunikację RS485 i PC.

    Jeśli to możliwe to prosiłbym o rzucenie okiem czy aby o czymś nie zapomniałem.
    Od strony sieci RS485 użyłem przetworniczki DC-DC.

    Szczególnie prosiłbym o sprawdzenie czy nie potrzeba rezystorów podciągających na liniach RE i DE przy FT232RL .Wydaje mi się że powinny być ale czy koniecznie?

    Kolejne pytanie to czy jest jakiś popularny i tańszy zamiennik 6N137 ?
    Sieć pracuje na kwarcach 16MHZ ale chyba przejdę na coś bardziej dopasowanego (chyba na 11.0592).
    Prędkość komunikacji to 19200.

    [ATMEGA]OPTOIZOLACJA RS485 I FT232RL. Prośba o sprawdzenie.
  • Altium Designer Computer Controls
  • Helpful post
    #2
    hotdog
    Level 26  
    Przegiąłeś z tymi kondensatorami. "Przetworniczka :)" przy włączeniu będzie cholernie obciążona. Wydaje mi się że jeden tantal 100uF za przetwornicą, + po 100n na każdym scalak to enough.

    Nie rozumiem też do końca tego czemu podłączyłeś czwarty optoizolator między FT232, a komputerem. Wystarczą trzy - Tx, Rx i kierunek. W zależności od tego czy chcesz czytać co wysyłasz (a raczej chyba chcesz) podłączasz RE do GND2, lub jeżeli nie chcesz łączysz go z DE (ogólnie powinieneś tutaj zastosować wtedy bramkę OR, bo odbierzesz zawsze jeden bajt śmieci przy przełączaniu z na odbiór, jest o tym w datasheet).

    Czemu też izolujesz tą całą resztę? Nie wystarczy izolator między komputerem a "resztą świata"?
  • #3
    adambehnke
    Level 24  
    schemat podłączenia FT232RL mam ze strony producenta i tak było zrealizowane tak połączenie z MAX485. Fakt że bez optoizolacji ale tak jest sterowane.
    Izoluję całą płytę gdyż docelowo będzie mnie kosztowało coś koło 1500pln.
    Samo zasilanie płyty także będzie poprzez przetwornicę-ups.
    Chcę to maksymalnie zabezpieczyć gdyż sieć będzie miała dobre 300m , i około 30 urządzeń w sieci i to różnej maści (od sterowników krokowców po przekaźniki trójfazowe).
    Z tymi kondensatorami to pewnie Masz rację.
    Już widzę jakie będę miał problemy z PCB. Fakt że rozmiary "płytki" to będzie 30x40cm ale jednak.

    Co do tego czwartego optoizolatora to może i Masz rację.Przyznam że nie widziałem w datasheet tego i tym bajcie śmieci. Czyli jak by to miało wyglądać wokół ft232RL ?
  • Altium Designer Computer Controls
  • Helpful post
    #4
    mirekk36
    Level 42  
    Rozumiem, że chcesz to zabezpieczyć ale kolega wyżej ma 100% racji. Te kondensatory i pojemności to dałeś jak do jakiegoś estradowego wzmacniacza mocy 1000W ;)

    Zdecydowanie maksymalne kondki elektrolityczne to 100uF a lepiej nawet 47uF, podobnie na we/wy przetworniczki DC/DC

    Takie duże pojemności nie wpłyną ci na żadne "lepsze" jak to określiłeś filtrowanie.

    Czwarty optoizolator jest użyty (jeśli doczytałeś PDF'a) tylko w tym celu gdybyś stosował PowerDown układu FT232RL a wątpię abyś to chciał robić. Zatem najspokojniej w świecie łączysz obydwa sgnały RE oraz DE i sterujesz jedną nogą FT232RL - sygnałem TXEN - to w zupełności wystarczy.

    Tyle tylko , że jak tak patrzę na ten schemat to hmm może mi się wydaje ale jakoś masakrycznie pokręciłeś lub rozwiązałeś zasilanie.

    Ty chcesz tak w ogóle puszczać zasilanie magistralą ???? a potem z tej magistrali zasilać przetworniczki/-ę DC/DC, która z kolei będzie zasilała optoizolatory ???? - jeśli tak to się przejedziesz ;)

    Nie w tą stronę. Przetworniczkę to dajesz przy każdym układzie SLAVE i jest ona zasilana ze źródła z którego zasilany jest Slave natomiast przetworniczka zasila tylko MAX485 oraz załatwia ew podciągania linii DE do MAX485.

    Jeśli chodzi o zamiennik 6N137 to dla tak niskiej prędkości 9600 znajdzie się coś, ale z drugiej strony te scalaki będą ZAWSZE działały najpewniej i najlepiej. Jeśli więc już ci zależy na jakości to tu nie ma co oszczędzać ;)
  • Helpful post
    #5
    munruthel
    Level 13  
    A nie lepiej zastosować coś typu ISO7221xD? Małe, zgrabne i sympatyczne w obsłudze.
  • Helpful post
    #6
    hotdog
    Level 26  
    Więc jeszcze raz, wyrzuć ten czwarty optoizolator zostaw tylko TXEN. Teraz jak chcesz mieć echo na FT232 (czyli komputerze) to podłącz RE do GND na stałe (po to jest ten właśnie 4 optoizolator, jak wspominał mirekk36 wyłączy on odbiornik jeżeli usb jest w suspend). Możesz też zrobić zworkę między TXEN - RE - GND. W ten sposób sobie uniwersalnie będziesz mógł wybrać - echo lub jego brak.

    Echo jest fajne jak robisz multimaster. Zresztą zawsze możesz je pominąć w programie w bardzo prosty sposób.

    W schemacie jest taki błąd że brakuje właśnie podciągu na ten czwarty optoizolator (PWREN), czyli ten do wyrzucenia.

    Pull up na RXD chyba są zbędne.

    Tak jak wspomniałem i tak jak jest w nocie FT232, jak podłączysz RE z DE i będziesz sterował z TXEN to odbierzesz jeden bajt na koniec transmisji (Ponieważ TXEN zmieni stan odrobinę za wcześnie). Możesz go pominąć, albo zastosować bramkę OR między TXEN a RXD (czyli RXD = TXEN or RXD). Może to też być bramka z jakiegoś 74hc, lub 2 diody + rezystor.

    Dodano po 21 [minuty]:

    A 7 pin optoizolator nie powinien być podłączony do VCC?
  • #8
    adambehnke
    Level 24  
    mirekk36 wrote:


    Ty chcesz tak w ogóle puszczać zasilanie magistralą ???? a potem z tej magistrali zasilać przetworniczki/-ę DC/DC, która z kolei będzie zasilała optoizolatory ???? - jeśli tak to się przejedziesz ;)

    Nie w tą stronę. Przetworniczkę to dajesz przy każdym układzie SLAVE i jest ona zasilana ze źródła z którego zasilany jest Slave natomiast przetworniczka zasila tylko MAX485 oraz załatwia ew podciągania linii DE do MAX485.


    Zasilanie nie będzie puszczone magistralą. Zaraz biorę się za poprawki :P
    Czyli wszystkie optoizolatory mogę zasilić z zasilacza całej płyty a tylko MAX485 zasilać z przetwornicy?
    Druga sprawa to czy można jakoś prościej zrobić tą optoizolację. Zaraz na płycie będę miał 100 sztuk optoizolatorów...
  • Helpful post
    #9
    hotdog
    Level 26  
    Z przetwornicy zasilasz maxa i jedną stronę optoizloatora (diodę lub bramkę).

    Są dedykowane układ z przetwornicami z wszystkim co potrzeba:
    - spis izolowanych konwerterów od maxima
    - max1408 i jego ceny. Może sample tego układu byś mógł dostać.
  • #10
    adambehnke
    Level 24  
    Max 1480 i inne są zbyt drogie i nie opłacalne :/ Czyli z tym zasilaniem to tak jak mam zrobione,chyba. Bo troszkę się to kłóci z tym co pisze Mirekk36.

    Zastanawiam się tak do końca nad sensem tej optoizolacji. Co mi to pomoże?
    Owszem coś tam zabezpieczy ale..

    Miewałem takie przypadki z siecią RS485 że w przypadku kolizji mastera ze sleave-em siadała mi sieć do tego stopnia że master albo się zawieszał albo:

    w swoich modułach sleave mam na lini sterującej kierunkiem pracy MAX485 umieszczone diodę led i sygnalizuje mi kiedy moduł nadaje-odpowiada na zapytanie mastera. I w przypadku kolizji mastera ze sleave-em dioda sygnalizacyjna świeciła w momencie nadawania tylko z połową jasności i moduł nadawał jako odpowiedź same śmieci. Tak samo działo się z masterem. Po kolizji zaczynał nadawać same śmieci. Niby pracował jak powinien ale nadawał krzaczki i inne dziwne litery. Wyglądało to tak jakby zegar się rozjechał.
    Jak można się zabezpieczyć przed czymś takim. Jeśli ktoś się z tym spotkał.
    W sumie mi bardziej zależy nad wyeliminowaniem tego zjawiska niż nad optoizolacją.
    Chciałbym aby w wypadku kolizji co najwyżej nastąpiła utrata danych ale żeby sieć pracowała nadal.
    Myślałem nad FULL-DUPLEX ale po rozrysowaniu sobie schematu stwierdziłem że w moim przypadku to nie będzie działać gdyż:

    Powiedzmy że mam trzy moduły które odpowiadają na zapytania mastera cyklicznie jeden po drugim.
    Ale , właśnie jest ale ..
    gdyż każdy z tych trzech modułów w momencie kiedy jeden z nich odpowiada masterowi to dwa inne siedzą sobie na nasłuchu i także wyciągają sobie z transmisji dane które się im "przydają".
    Czyli po prostu każdy moduł słucha co leci w sieci. A w przypadku FULL-DUPLEX master nadaje jedną skrętką a wszystkie sleave-y słuchają go i odpowiadają mu drugą skrętką. Fakt że transmisja staje się szybsza ale sleave-y nie słyszą się na wzajem.
    Chyba w miarę jasno przedstawiłem o co mi chodzi :)

    A może można to zrealizować inaczej? I nie mówię o CAN. Pozostanę przy RS485.
  • Helpful post
    #11
    hotdog
    Level 26  
    Z tego co piszesz to wszystko wskazuje na jakiś byk w programie - 2 układy nadawały bez przerwy razem na magistralę - z stąd te śmieci. Świadczy o tym też mruganie diody - sam pomyśl - jak pali się połową światła znaczy że przełącza co chwilę swój stan i załącza się z powrotem (taki niechciany PWM:))

    Czy max jest drogi czy nie... hmm... zależy. Jak masz zrobić układ w jednej sztuce, zamawiać elementy w 3 sklepach (optoizolatory, przetwornice, transformatory, tranciver, drobnice ) + praca przy o rząd bardziej skomplikowanym PCB to bym napisał że 50zł Za gotowy układ jest OK. Zero problemu lutujesz - masz. PCB proste jak budowa cepa. Jak bym robił coś na zamówienie w detalicznych ilościach to bym się nawet w DC/DC nie bawił. Znowu za Tobą przemawia fakt że byś musiał 4 takie układy mieć.

    Co do samej optoizolacji to podobno na dłuższych odcinakach to rzeczywiście dobry pomysł (jeżeli jest bardzo duża różnica potencjałów, ale wtedy podobno trzeba GND ciągnąć również). Na krótszych IMO wystarczy tylko między komputerem a resztą. Ale to zależy rzeczywiście jakie masz tam ryzyko przebicia :)
  • #12
    adambehnke
    Level 24  
    W sumie magistrala jest zrealizowana na skrętce ekranowanej , praktycznie cała sieć jest położona z dala jak to tylko było możliwe od przewodów instalacji elektrycznej. Moduły przekaźników trójfazowych i krokowców mają optoizolację i własne zasilanie , dodatkowo cała sieć znajduje się w budynku dwupiętrowym więc ryzyko przebicia teoretycznie jest znikome. Wszystkie moduły w sieci także są zasilane z jednej i tej samej fazy więc nie powinno mieć miejsca jakieś nagłe duże wyrównanie potencjałów.
    Myślałem nad uziemieniem modułów tak jak zalecają czyli bezpośrednio z uziomu sieci elektrycznej (podobno to najlepsza metoda) , ale jakoś troszkę się obawiam.
    Czytałem sporo na temat wspólnej masy GND modułów w sieci RS485 i nie będę jej stosował. Do poprawnej pracy sieci potrzebne są tylko i wyłącznie dwie linie A i B. Ewentualnie można uziemić każdy moduł i tak też chyba zrobię.
    Chciałbym się tylko jakoś zabezpieczyć przed zjawiskiem opisanym wyżej.
    Owszem , jest to wina programu , ale chcę się jakoś zabezpieczyć sprzętowo.
    Optoizolację chyba sobie daruję poza FT232Rl ale pomyślałem że można by dać transoptor na każdej linii TXD. Miało by to zastosowanie nie tyle zabezpieczające przed jakimiś przepięciami z magistrali itp. ale chyba powinno mnie uchronić przed zjawiskiem opisanym wyżej.
    Chyba że któryś z bardziej obeznanych w temacie kolegów ma lepszy i praktyczniejszy pomysł.
    Dawałem już nawet bezpośrednio przy MAX485 na linii A i B rezystory 10-120R ale nie pomagają w takim stopniu aby zlikwidować problem.
  • Helpful post
    #13
    mirekk36
    Level 42  
    Moje sieci RS485 puszczane są w zwykłej nieekranowanej skrętce i często lecą w torach z kablami zasilania elektrycznego do różnych odbiorników

    - żadnych problemów

    Oczywiście, że do połączenia sieci RS485 wystarczą tylko dwa przewody A i B. Ale jeśli już się robi optoizolację i przetworniczki DC/DC to można sobie pozwolić na dodatkowy przewód masy (COMMON) ALE UWAGA! jest to masa sztucznie wygenerowana za przetworniczkami DC/DC każdego z modułów w tym także MASTERA .

    Stosowanie jednego transoptora tylko na linii Tx to chyba bardziej jakieś nieporozumienie ;) - czemu miałoby to służyć?

    Jeszcze raz powtórzę jak ja to robię jeśli już daję optoizolację, bo ty strasznie zakręciłeś swój schemat i opis>

    1. Moduł Master ma 3 optoizolatory (jeden z nich ten do linii DE może być taki jak opisywał Light-I) ale ja daję i tak zwykle 3x6N137. Do tego przetworniczka DC/DC taka jaką miałeś na schemacie. Z przetworniczki zasilany jest MAX485 oraz jeden z transoptorów (to chyba normalne) i właśnie ta masa z przetworniczki idzie na dodatkową linię COMMON jeśli ją stosuję w ogóle

    2. Każdy moduł Slave ma tak samo zbudowaną optoizolację jak wyżej. Czyli 3 transoptory i przetworniczka DC/DC.

    Dzięki temu każdy moduł w sieci może być zasilany z dowolnej fazy jakiej ci się żywnie podoba i nie trzeba się martwić o jakieś tam wyrównywania potencjałów czy zakłócenia.

    A te zakłócenia, które ty opisywałeś wyżej, to można tylko domniemywać jak pisał wyżej kolega hotdog, że są spowodowane nieprawidłowo napisanym oprogramowaniem. Więc jak można szukać tu sprzętowej eliminacji zakłóceń wynikających z wadliwie napisanego programu.

    Dodam, że bardzo często w mojej sieci rolę Mastera pełni własnie komputer PC, który ma przejściówkę na FT232RL i oczywiście wykorzystuję tylko jedną linię do sterowania sygnałem DE (dzięki czemu są też w tej przejściówce tylko 3 transoptory) i jedna przetworniczka DC/DC ma się rozumieć.
  • #14
    adambehnke
    Level 24  
    No ok , zdecydowałem że robię pełną optoizolecję (w końcu robię ten moduł dla siebie i niech jest taki jak powinien. Ale nadal nie do końca rozumiem dlaczego zasilam z przetworniczki tylko jeden transoptor a nie dwa (także ten służący za DIR).

    Przy FT232RL zostanę przy czterech optoizolatorach.

    [ATMEGA]OPTOIZOLACJA RS485 I FT232RL. Prośba o sprawdzenie.


    Pozwolę sobie zaprezentować przykład jaki znalazłem na forum (chyba nawet Mirka z tego co pamiętam) gdzie widzę że z przetwornicy (lub innego źródła) zasilane są dwa optoizolatory i w trzecim dioda nadawcza). Zatem mam teraz zagadkę o co biega.

    [ATMEGA]OPTOIZOLACJA RS485 I FT232RL. Prośba o sprawdzenie.
  • Helpful post
    #15
    mirekk36
    Level 42  
    Na tym moim schemacie jest niestety błąd, Rezystor R33 1K - zrobione podciąganie do GND (bez sensu niestety) powinno być podciąganie do VCC.

    Poza tym jest ok i działa to właśnie tak w rzeczywistym układzie - zarówno w modułach Slave jak i z układem FT232RL, który stanowi przejściówkę USB/RS485.

    Nie wiem co poza tym drobnym błędem może być niezrozumiałego? To napięcie oznaczone jako +5V pochodzi właśnie z przetworniczki DC/DC, która znajduje się na każdym module Slave oraz na przejściówce USB/RS485. Nadal więc będę twierdził, że 4 transoptory przy FT232 to przerost formy nad treścią niestety :(

    To co tu widać - w całości działa jako magistrala RS485 na ok 300m długości na zwykłej nieekranowanej skrętce, a do tego komputer PC jest Masterem. Tzn aplikacja na nim zarządza wszystkimi modułami Slave.