Konwerter RS232 -> RS485 - finał.

Jun 21, 2005 15 Replies

Witam!



Okazało się, że MS nie przepada za poprawianiem błędów. Wspomniana w poprzednim watku flaga RTS_CONTROL_TOGGLE działa tak:



a) Windows 95/98/Me - nie działa. Konkretnie utrzymuje się w stanie wysokim.



b) Windows XP - COM na płycie - na jednym działa na innym nie (2 komputery przetestowane).



c) Windows dowolny - konwerter USB->COM - nie działa i utrzymuje linie cały czas w stenie wysokim (konweter prolific - pewno jego wina).



Innymi słowy Win Sux co zreszą widać po sposobie "RESOLUTION":



formatting link
W każdym razie pomysł z wykorzystaniem RTS leży.



Zabrałem się więc za robotę i zeszyłem konwerter z przerzutnikiem monostabilnym.



Można go zobaczyć tutaj:



http://155.158.112.198/rs485.gif Własnie jestem po uruchomieniu i o dziwo komunikuje się poprawnie z 2 urzadzeniami fabrycznymi na RS485. No i z moim urządzeniem RS485 też gada.



Publikuje schemat, bo może komuś się przyda. Na dzień dzisiejszy działa prawie bezbłędnie (na 5 minut walki jeden błąd CRC, kabelek ma 2 metry). Na schemacie kondensator C8 i rezystor (helitrim) R4 umozliwiają sterowanie monostabilnym, u mnie przy 9600 bodów C8 ma wartośc 10nF a helitrim ma 200kOhm. Z wyliczeń wychodzi mi, ze powinno pokryć cały zakres prędkości jaki mnie interesuje. IC2 to oczywiście 75176, tylko akurat nie miałem pod ręką gotowca do eagla, więc jest jako podstawka.



Proszę o uwagi, jesli ktoś ma. Przy okazji pytanie: czy 4047 można wyzowlić zboczem ujemnym ? Ten tranzystor mnie denerwuje :P



PS. Płytkę udało się zrobic jednostronną, jesli ktoś jest zainteresowany to mogę dac pliki do eagla.


Użytkownik "Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:d98n07$39o$ snipped-for-privacy@nemesis.news.tpi.pl...

Rozważ jeszcze taką możliwość. Zera nadajesz normalnie. Jedynki tylko zbocze (kilka us) i zwalniasz linię (która zwolniona powinna być widoczna jako 1). Stała czasowa będzie niezależna od prędkości transmisji.

Przy małych prędkościach można zrezygnować nawet z nadawania początku

1-ki (jedynki to zwolnienie linii), ale przy większych nie bo będą różne opóźnienia zboczy. P.G.

OK, ciekawy pomysł zastanowie się. Może w ym celu zastosować wlasnie jakiś multiwibrator. Rozumiem, że chodzi o to, zeby driver przeładował pojemność lini. Na razie moja koncepcja działa, choć szukam czegos niezależnego od prędkości.

A swoją drogą: w bebechach profesjonalnych konwerterów znalazłem scalaki

- 3 sztuki, starte napisy. Jak się robi to w profesjonalnych ? siedzi tam jakiś uC i "zgaduje" jaka jest transmisja ? Często się chwalą własnie na takich konwerterach, że niby samoczynna zmiana prędkości.

A po co Ci dioda D1? Jeśli to ma zabezpieczać przed złą polaryzacją zasilania, to czy nie lepsze byłoby jej włączenie w kierunku zaporowym między masę a Vcc, a na linii zasilania dać bezpiecznik (polimerowy) i LEDa do pokazywania błędu?

Pozdrawiam Piotr Wyderski

Użytkownik "Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:d9928u$3a9$ snipped-for-privacy@nemesis.news.tpi.pl...

Nie wiem. Może właśnie tak jak napisałem. P.G.

Diodę dodaje "tradycyjnie". Wszystkie układy na tej magistrali będa tak zabezpieczone. Wtyczki do magistrali będą zrobione tak, że jedyną mozliwością odwrócenia polaryzacji bedzie na zasilaniu całości. Innymi słowy nie musze mieć nagle choinki LEDów w kazdym urządzeniu świecących, że źle podłaczyłem. Z resztą gdzie ja kupie bezpieczniki polimerowe w ilościach detalicznych i bez płacenia za wysyłkę :/

W każdym razie zostaje tak jak jest - tak jest taniej.

A to o tyle ciekawe, że na obudowie przyznają się do "modbus" i co ciekawe podobno (nie mam jak sprawdzić) na innych protokołoach nie działają. Co mi sugewruje że coś w środku stara się podsłuchiwać i liczyć crc dla róznych prędkości. To są oemowe konwertery bez producenta na opakowaniu i nie mam pojęcia, czy faktycznie są "robione" pod jeden protokół. Swoją drogą własnie z tego powodu musiałem z nich zrezygnować

- mam własny protokół i niestety nie mogę skorzystać z gotowca.

W każdym razie dzięki za sugestię, własnie nad nią rozmyślam intensywnie.

Tylko tracisz 0,6V. Czasami to nie problem, czasami tak. Widać u Ciebie nie. ;-)

Bez drugiego członu odpowiedź brzmi "na Allegro", przynajmniej mnie udało się tam kupić polyswitche 250mA. A skoro nie zakładasz częstego odwrócenia polaryzacji zasilania, to topikowy wystarczy (i tak powinien być w układzie). LED to też taki nieobowiązkowy dodatek. ;-)

Pozdrawiam Piotr Wydeski

Zasilanie jest z magistrali 12V - bo akurat leci z akumulatora (z róznych względów tak jest). Więc zapas spory.

W zasadzie są mi zbedne - wystarczy zwykły topikowy - z resztą w układzie nie ma, bo to prototyp. Przymierzam się do porzadniejszego nieco z bezpiecznikiem. W ostateczności wstawie tam zamiast 1N4001 jakąs

1N4148 i będzie robiła za bezpiecznik :)

LEDy to w ogóle były, ale płytka sie skomplikowała i nie chciała się ładnie zarutować jednostronnie. To wywaliłem zakładając, że i tak widać, że działa.

Jak na projekt typu "jeden dzień i pół nocy" włacznie z nauka eagle i testowaniem oraz napisaniem obsługi modbus (że o płyce nie wspomne :P ) to uważam, że nie najgorzej :D

4148 potrafi się rozgrzać do temperatury żółtego żaru, więc uważaj na zagrożenie pożarowe. Ja bym nie kombinował.

Pozdrawiam Piotr Wyderski

Piotr Wyderski napisał(a):

No przeciez żartuje :) Ani by mi przez myśl nie przeszło robienie takiej fuszerki :)

Na marginesie ostatnio mi 1N4148 detonowała robryzgując kawałki szkła (?). Zadziałała jako bezpiecznik własnie ...

Co za różnica, czy na diodzie, czy na stabilizatorze ? Na diodzie to nawet lepiej, bo trochę mniej mocy wydzieli się w stabilizatorze (pod warunkiem, że mamy odpowiedni zapas napięcia przed stabilizatorem).

Te bezpieczniki też mają ograniczoną liczbę cykli, więc rozwiązanie z diodą jest tańsze, prostsze i pewniejsze w układach, które nie pobierają dużo mocy.

Dużo lepszym IMHO rozwiązaniem jest zastąpienie diody tranzystorem P-MOS: bramka na masę, dren zamiast anody tamtej diody D1, źródło zamiast katody (czyli tak spolaryzowane aby "wbudowana" dioda mosfeta przy normalnej pracy przewodziła). Zabezpiecza przed odwrotnym podłączeniem zasilania, daje minimalny spadek napięcia, przewodzi bez problemu kilka A a obudowa miniaturowa (SOT23). Ja stosuję w takich przypadkach np. Vishay SI2301BDS (logic level P-MOS), kosztuje około

0,50 zł/szt.

Można, ale wtedy kolejne zbocza nie wydłużają impulsu. Ma szansę działać dla jednej prędkości przy dokładnie dobranym czasie: wyzwalanie początkiem bitu startu, koniec w środku bitu stopu. Też liczenie bitów w ramce, tylko w wersji analogowej :)

Albo dać 4538: można wyzwalać zboczem + lub -, wydłuża impuls. Poza tym jest podwójny - na drugiej połówce można wykrywać dane odbierane i blokować nadawanie by uniknąć kolizji (jeśli UART ma "auto CTS", można go dodatkowo tym sygnałem wstrzymywać).

Marek

Ciekawy pomysł, kupuję go. ;-)

Pozdrawiam Piotr Wyderski

Hmmm 4538 nie mogłem dostac w okolicy, ale skoro mówisz, ze potrafi miec funkcjie retrigger (tak to się chyba nazywa w 4047) dla zboczy opadających, to chyba się poważnie zainteresuje w drugiej wersji. Co do wykrywania kolizji - mam jednago mastera i raczej nie potrzebuje ich wykrywać.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required