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

ATmega162 jako konwerter protokołów RS232 i RS485

han77 13 Sty 2011 10:59 6732 14
  • #1 8998984
    han77
    Poziom 10  
    Moduł wykonany na bazie ATmega162 odbiera jednym portem UART po RS232 proste dane z jednego urządzenia oraz komunikuje sie drugim portem z siecią RS485. W sieci RS485 jest kilka takich modułów i urządzenie nadrzędne (PLC). Generalnie chodzi o zbieranie danych z kilku urządzeń, które co jakiś czas wysyłają dane na port RS232. Wykonany moduł jest jednocześnie jakby konwerterem RS232-RS485 i konwerterem protokołów. Wszystko działa znakomicie, tylko co jakiś czas, np. kilka kilkanaście godzin, w niektórych modułach zaczyna grzać się scalak MAX232 lub MAX485 i moduł "pada". Po wyłączeniu i ostudzeniu działa dalej. Dzieje się to nieregularnie i trudno o uchwycenie zasady.
    Czy ktoś spotkał się z podobnym problemem?
    Dodam, że moduł nie posiada optoizolacji RS232, ani RS485. Wszystkie moduły i PLC zasilane są z jednego zasilacza, natomiast urządzenia z RS232 mają własne zasilacze w dodatku zasilone z różnych faz. Między masami urządzeń z RS232, a masami modułów z ATmega nie ma praktycznie różnicy potencjałów (zmierzone).
  • #2 8999152
    Father
    Poziom 26  
    Jak jest sterowane wejście nadawanie/odbiór MAX485?
  • #3 8999166
    Freddy
    Poziom 43  
    han77 napisał:
    Moduł wykonany na bazie ATmega162 odbiera jednym portem UART po RS232 proste dane z jednego urządzenia oraz komunikuje sie drugim portem z siecią RS485. W sieci RS485 jest kilka takich modułów i urządzenie nadrzędne (PLC). Generalnie chodzi o zbieranie danych z kilku urządzeń, które co jakiś czas wysyłają dane na port RS232. Wykonany moduł jest jednocześnie jakby konwerterem RS232-RS485 i konwerterem protokołów. Wszystko działa znakomicie, tylko co jakiś czas, np. kilka kilkanaście godzin, w niektórych modułach zaczyna grzać się scalak MAX232 lub MAX485 i moduł "pada". Po wyłączeniu i ostudzeniu działa dalej. Dzieje się to nieregularnie i trudno o uchwycenie zasady.
    Czy ktoś spotkał się z podobnym problemem?
    Dodam, że moduł nie posiada optoizolacji RS232, ani RS485. Wszystkie moduły i PLC zasilane są z jednego zasilacza, natomiast urządzenia z RS232 mają własne zasilacze w dodatku zasilone z różnych faz. Między masami urządzeń z RS232, a masami modułów z ATmega nie ma praktycznie różnicy potencjałów (zmierzone).

    Może rozwiązanie banalne i "prymitywne", ale spróbuj założyć "kawałek radiatorka" na transceiver RS485 :) to bardzo często działa.
    Problemem może być również zasilanie z różnych faz !
  • #4 8999221
    tmf
    VIP Zasłużony dla elektroda
    Muszą się potężnie grzać skoro włącza się zabezpieczenie termiczne scalaka. Nie wyobrażam sobie, żeby MAX232 się grzał, tu musi być coś potężnie skopane. Natomiast MAX485 może być ciepły, ale nie aż tak. Radiator IMHO to półśrodek, bo nie likwiduje przyczyny, a scalak najwyraźniej pracuje poza dozwolonymi parametrami, so i tak skróci jego żywot. Ile masz urządzeń na RS485? Może przesadziłeś z obciążeniem? Jak masz terminatory i rezystory polaryzujące ustawione? Nie próbują czasem jednocześnie nadawać dwa urządzenia? Może masz scalaki na 3V3 zasilane z 5V?
    Zasilanie z różnych faz to IMHO też dobry trop. Spróbuj odłączyć też część urządzeń i monitoruj temperaturę.
    BTW, masz oryginalne MAX czy jakieś inne? Te inne lubią padać.
  • Pomocny post
    #5 8999309
    LordBlick
    VIP Zasłużony dla elektroda
    Podstawowa przyczyna - brak optoizolacji przy różnych zasilaniach. Grzanie się wskazuje na latchup-y wskutek ewentualnych chwilowych przepiec. Do optoizolacji wystarczy 2x6n173+pc817(sterowanie kierunkiem przepływu danych).
  • #6 8999339
    han77
    Poziom 10  
    Właśnie, problem w tym, że scalaki nie grzeją się ciągle. Normalnie pracują zimne, ale zdarza się, że nagle któryś zaczyna się grzać. Nie ma reguły. W dodatku czasem jest to MAX232, a czasem MAX485, które są na różnych UARTach procesora w tym samym module. Kierunkiem transmisji na 485 steruje ATmega i z pewnością nie nadają naraz dwa urządzenia (zresztą na logikę wtedy grzał by się tylko MAX 485). Maksymalnie jest 10 modułów w sieci, więc "w normie". Rezystorów polaryzujących nie dopinałem. Z różnymi wartościami terminatorów jeszcze popróbuję, ale wątpię (co ma terminacja 485 do grzania MAX232 z drugiej strony procesora...). Moduły pracują jako SLAVEy w sieci ze sterownikiem PLC dla którego zalecają tylko terminację na końcach sieci 330 ohm.

    Dodano po 24 [minuty]:

    Dzięki Light-I! Brak optoizolacji najbardziej podejrzewałem, ale brak mi doświadczenia i chciałem zasięgnąć rady ekspertów.
    Urządzenia od strony RS232 mają różne zasilanie więc myślę,że wystarczy dać optoizolację tylko tutaj. W dodatku odbieram tylko dane więc wystarczy opto przed Rx-em, a Tx niepodłączony.
    Ma ktoś jakiś prosty i pewny schemat na to? Może uratuję jakoś płytkę... Mam MAX232 w podstawce i może jakąś małą płyteczkę z opto bym w to miejsce włożył...
  • #7 8999451
    LordBlick
    VIP Zasłużony dla elektroda
    han77 napisał:
    Właśnie, problem w tym, że scalaki nie grzeją się ciągle.
    Możesz podgrzewać dodatkowo... ;) Mam świeży jeden projekt na ATmega162 z RS485 i optoizolacją, fragment schematu w załączniku. Jak prędkość transmisji mniejsza lub równa 4800bps to możesz dać nawet zwykłe transoptory. Sygnały TxD_MB i RxD_MB na poziomie TTL.
  • #8 8999550
    han77
    Poziom 10  
    Dzięki!
    Czy coś prostszego dla RS232 i tylko przed Rx-em?
    Wiadomo, zasilanie też trzeba izolować przetworniczką. Znalazłem kiedyś prosty schemat korzystający tylko z energii portu RS232. Jest szansa, ze sie sprawdzi? Myślę, że wystarczy mi tylko fragment od pinu 3 TxD złącza K1. RTS i DTR nie mam dostępnych w urządzeniu, a RxD nie potrzebuję.
    ATmega162 jako konwerter protokołów RS232 i RS485
  • #9 8999590
    Konto nie istnieje
    Konto nie istnieje  
  • #10 8999623
    han77
    Poziom 10  
    Wszystkie moduły i sterownik zasilone są z jednego zasilacza 24V. Tylko urządzenia przyłączone od strony RS232 zasilane są z innych zasilaczy. Wystarczy więc optoizolacja tylko z tej strony. Od strony RS485 nie jest potrzebna.
  • #12 9003369
    dardzik
    Poziom 11  
    Jak się mają układy ESD do tego typu problemów? Rozwiązanie z optoizolacją wymaga przebudowy płytek, a zastosowanie układów ESD to tylko podmiana podzespołów.
  • #13 9004372
    LordBlick
    VIP Zasłużony dla elektroda
    Co rozumiesz pod pojęciem "układy ESD" ? Na krótkotrwałe zachwianie równowagi faz trudno znaleźć prostsze rozwiązanie niż optoizolacja...
  • #14 9004735
    han77
    Poziom 10  
    Sprawdziłem, faktycznie są układy MAX232 i 485 uodpornione na przepięcia i na zjawisko latchup-u. Optoizolacja z pewnością jest najpewniejsza, tylko wymaga nowych płytek...
  • #15 9059206
    han77
    Poziom 10  
    Optoizolacja od strony RS232 na 6N139 i 74HCT14 rozwiązała problem. Dziękuję za pomoc!
REKLAMA