Soros port RS232, elavult, vagy mégsem?

 ( Csab | 2011. december 14., szerda - 19:38 )

A wikipédia szerint az RS232 mára már alig használt, elavult szabvány, nem egy másik oldal is erről ír.

Ezzel szemben a személyes tapasztalatom teljesen más. Az elektronikában a mikrokontrollerek 1 chipes számítógépek kevés memóriaval, programozni lehet őket. Ezek tartalmazhatnak analóg digitális átalakítókat, PWM-et, kommunikációs csatornákat, IO portokat. Minimális alkatrésszel megvalósítható például, hogy programból vezéreld a világítást a lakásban, például hogy este 10 után mindent lekapcsolni...

Hogyan kötöm össze a mikrokontrollert a PC-vel? Az oldalak 90%-a a soros portot javasolja, vagy USB RS232 átalakító IC-t, ha nincs a gépen soros port. Az ethernetet nem javasolják, mert az IC pár kbyte memóriájába belevarázsolni nem egyszerű egy stacket.

Az elektronikai áruházak RS232-es chipek tömkelegét árulják.

Kíváncsi lennék, hogy aki jártas a témában, az mit javasol. RS232-t, vagy van más szabványos nem elavult megoldás a mikrokontroller és a pc között?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

mi usb-t használunk, régi eszközökhöz pedig usb<->rs232 konvertert FT232 stb..

Ilyen konvertereket hajlamos az os néha eldobálni...

szerintem ha mindenképpen ilyenen gondolkodsz akkor vegyél gyári USB-RS232 átalakítót (1-2 e.Huf) egyébként meg a mikróvezérlők nem szabvány RS232 kimenetel rendelkeznek hanem digitálissal, ezt még át kell alakítanod RS232 re pl MAX232 vel.
Különben meg az ethernet sem egy nagy ördöngösség.

RS232.
Ha kis szériás a cucc, tegyél rá egy FTDI chip-et, és a PC felé -mint fizikai interfész- USB fog nézni. Ettől az még RS232-lesz.

Upd: majdnem ide szántam.

Ahogy olvasom az FTDI-t is COM portként látja a rendszer, csak USB csatlakozóval.

Javíts ki ha tévedek.

Gondolom az RS232 a legjobb megoldás USB csatolóval.

pontosan. Egyébként az ftdi alternatívákat is érdemes megnézni, általában olcsóbbak: cp2102, mcp2200 (ez valójában egy előre programozott pic, és ebből van furatszerelt verzió is)
Viszont ahogy lentebb is írtam, ez egy 5V/3V U(S)ART lesz csak, az RS232-höz még kellene egy MAX232 is, de a mikrokontrollerekhez ez nem kell.

Ne aggódj, értek az elektronikához valamennyire. A MAX232 feszültségkonverziót végez, úgy tudom -7 +7 V-ra, mert az IC 0, 5V-ot ad/vár.
Gondolom DC-DC konverter is van benne, ahhoz kellenek a kapacitás lábak.

De azt sem tartom vészesnek, ha egy-két IC felrobban. A tanulópénzt meg kell fizetni. Az első bekapcsolásnál mindig felveszem a szemüvegemet a biztonság kedvéért. Egyszer ellőttem egy elektrolit kondenzátort (véletlenül váltóáramot kapott), azóta elővigyázatos vagyok.

Van egy pár százalékos pusztulási arány, de a végösszeg szempontjából nem jelentős.

Én MAX233-at használok, ahhoz semmi plusz elektronika nem kell, ilyen vér egyszerű:
http://hackadaycom.files.wordpress.com/2008/05/max233_layout.png?w=377&h=369

Jó kis chip, bár az ára is meglepően sok ~1350 Ft. Mindenesetre annyira nem drága még, hogy elkezdjek olcsóbb helyettesítésekkel idétlenkedni.

Mintha ezt írtam volna. (legalábbis ez volt a cél)

Köszi. Hobbi szinten szórakozom elektronikával. A kérdés az, hogy hogyan illik manapság ezt csinálni.

Sokféleképpen lehet, láttam ethernet IC-t, nem is drágán.

Kis pontosítás:
"egyébként meg a mikróvezérlők nem szabvány RS232 kimenetel rendelkeznek hanem digitálissal"

Konkrétan TTL jelszinteket használ (ami digitális), ezt lehet RS232-nek megfelelő jelszintekre alakítani, pl. MAX232-vel.

Üdv,
Ákos

Hát, azért a TTL is csinál meglepetéseket.

Csináltam villogtató elektronikát (LM 324), működött, alacsony-magas váltakozott. Utána => ellenállás => tranzisztor => állandóan világít.

Kiderült, hogy ~0.7V volt az LM324 alacsony kimeneti feszültsége, ami bőven elég volt a tranzisztornak a nyitáshoz. 140-es erősítés mellett már az a pár milliamper is kapcsolt.

:)

Ilyen esetben érdemes lehet megpróbálni a kimenet és a föld közé tenni egy mondjuk 10K ohmos ellenállást (vagy kisebbet), hátha csak valami "zajt" szedett össze, ami a kimeneten 0,7V feszültségként volt érzékelhető.

Üdv,
Ákos

az LM324 nem TTL, hanem OPA

ha fejlesztesre kell, akkor azt ajanlom olyan stick-et vegyel, amielyiken van egy led. Nagyon hasznos tud lenni, amikor a technologiaban nem akar mukodni a felszereles es el kell dontened, hogy hw. vagy sw. hiba.
Nekem egy Aten uc232a nevu van, az teljesen jol bevalt, a led aranyat ert mar tobbszor.

Így van, RS232! Modemhez, egérhez már nem használjuk, de attól szerintem még nem elavult, max régi. Nekem spec nagyon hiányoznak a soros portok a mai gépekből és mellette nem igazán értem, hogy szinte a mai napig miért figyel minden alaplapon a 25 pólusú párhuzamos port... Sajnos nem mindig jó az USB<->RS232 átalakító. Pl. JDM programozók általában nem használhatók vele. Más a jelszint, sokkal gyengébb. Meg volt olyan is, hogy AVR USART és PC közötti kommunikáció rendes RS232 porttal ment, átalakítóval nem. De ugyan azzal az átalakítóval meg megtudtam hajtani egy régi modemet. Asszem ez egy PL3202-es átalakító volt.

johat prolifictol mit varsz :)) ezerszer ftdi inkabb!

Nekem PL2303-as kabelem van es teljesen meg vagyok vele elegedve. Meg az erosen nem szabvanyos par perc alatt osszeganyolhato AVR programozokkal is ment. (Sajnos volt mar olyan, hogy improvizalnom kellett... szerencsere kep nincs rola :D) Cisco routerekhez is bevalt. Jo az.

Amugy a Lenovo ThinkStation E30-asomon meg siman van soros. A tablet pc-m dokkolojan is van, sot azon meg parallel is.

hogy szinte a mai napig miért figyel minden alaplapon a 25 pólusú párhuzamos port...

JTAG-hoz azt hiszem jól jön az.

Az RS232 igen, az UART nem. (Javítsatok ki: az RS232 az a fizikai réteget is megmondja, az UART csak a protokoll). Az RS232 -12/+12 V-ja manapság nem túl kedvelt dolog.
Különben nem tudom, mit gondolnak, elképzelném, hogy elsőéves gólyáknak elkezdem az USB-t tanítani a minden nyalánkságával...

+1, ez itt a lényeg. Az eszközök 90%, ami a gépen soros portként látszik, de nincs rajta a DB9 csatlakozó, hanem közvetlen az eszközhöz csatlakozik, csak U(S)ART-ig megy el, nem csinál belőle RS232-t.
Az RS232 tényleg pain in the ass, mert kettős táp kell hozzá (ami számítástechnikában - ideértve a mikrokontrollereket is - mára kihalt), vagy legalább valami kondi töltéssel kitrükközni a negatív feszt.
Ma már ráadásul egy UART/USB bridge nagyjából egy árban van egy UART/RS232 bridge-el.

Egy valamire valo hw. ic nehany kondenzatorral megcsinalja 5V-bol a +- tapot, a komparalasi kuszob +-3V, tehat azert nem olyan nagy ordongosseg ez 2010-ben.

Nem vagyok jártas a témában de aki 240V-ot akar vezérelni interneten keresztül, az készüljön fel arra, hogy érik meglepetések.
:)))
Pl: Altusen

Kötözködjek: 240 V? Arról szó sem volt a topicban. Legfeljebb 230-ról... :-)

Relével szokták leválasztani, vagy opto csatolóval.

Nincs elektromos összeköttetés. Két független áramkör az IC és a 231V.

Szvsz. triac is jó rá. Hobbielektronikán nézz utána, ott biztosan voltak ilyen projektek.
Szerintem inkább arra akart célozni, hogy betörnek a belső hálóra, aztán nézhetsz, hogy nem látsz semmit, mert sötét van...

Nem 231-et fogok vezérelni. Terepasztalt építek. Egész jól haladok vele, már érzi ha este van és felkapcsolja a világítást.

Miután kétszer megvágott egyetemen a 220 inkább informatikus lettem.

Kevésbé veszélyes ha elcseszem, max kirúgnak.

:)

"Miután kétszer megvágott egyetemen a 220 inkább informatikus lettem."

A nap mondása :-)

+1, le is mentettem :)
Amugy az RS485-ot ajanlom inkabb terepasztalhoz, korrekt modon lancbafuzheto, minden egysegnek adsz valami cimet, es onnantol tetszoleges mennyisegu kutyut vezerelhetsz egyetlen portrol.
(akar USB-RS485 atalakitoval)

--
"The greatest thing about the internet, is that you can quote something and totally make up the source." - George Washington

Megnézem, köszi.

Meg a V-USB projektet is átnézem. Ez egy lassú USB eszköz AVR-re.

+1,

de azt hiszem az RS485-nek van korlátja, bár nem fog előjönni terepasztalon.

Tök jó RS232/485 átalakítókat lehet kapni, PC oldalon meg tudod hajtani soros portról, mikrokontroller oldalon meg sima ügy.

+1 a 485re. http://gallery.czo.hu/?album=5&loc=/vasut/terepasztal/#42 Nalunk is azzal van megoldva :)

---
Apple iMac 20"
áéíóöőúüű

Végül nem az RS-485 mellett döntöttem, mert macerás és drága.

A kapcsolat-tartó AVR chip-et USB-n kötöm majd össze a számítógéppel (V-USB projekt), a különféle AVR chip-ek közötti kommunikáció I2C/TWI protokollon fog menni.

Az AVR ezt a protokollt támogatja, a teljes költsége 2 db felhúzóellenállás (10Ft, 2 open collectoros vezetékből áll, amit bármelyik fél alacsonyra állíthat, nem kell pontos órajel sem, mint az UART-nál, RC oszcillátorral is elmegy, leginkább a C64-floppy/printer kapcsolatra emlékeztet az I2C kommunikáció).

azért az i2c-t ne próbáld néhány tíz centinél messzebbre vinni. fast i2c-t meg már a nyákról sem nagyon szokták levezetni...
ha nagyobb távolságra kell lassú, megbízható, egyszerű, buszos kommunikáció, akkor 1wire.

napi Csabi :D

Aminek az üzemeltetéséhez kevés a 9600/8N1, az túl van csicsázva :)

A fentiekhez tobbhoz +1. Illetve me'g kerdes az hogy pontosan mit is akarsz csinalni. Mindke't szabvanynak vannak elonyei/hatranyai. Szvsz akkor lehet elonyos az RS232, ha:
- Kelloen egyedi (lesz) a rendszer, azaz adott kornyezetbe, adott hw-ek melle' kell fejleszteni valamit.
- Tobbet kell debuggolni a fejlesztes soran (az rs232-t siman meg lehet "csapolni" /teljesen passzivan/ es egy vagy ke't masik rs232-es vevo"vel lehet loggolni a forgalmat; gyk aktiv alkatresz nelkul)
- Hosszabb madzag kell: tobbszor 10m-t elbir, ha kisebb a baudrate, akkor megtobbet. Mig passziv USB kabelen max 5-6 meter a tavolsag. Aktiv hosszabbitokkal se nagyon lehet felmenni 15 me'ter fele' tudtommal.
- Teljesen valos ideju full duplex kommunikacio kell valami miatt.
Ezzel szemben az USB elonyos lehet, ha:
- Hordozhatobb eszkozoket kell csinalni (nem tudod hogy a host ge'p az ugyanaz marad-e, lecserelik-e, stb)
- Kornyezeti elektromos zaj az nagyobb (lasd: csavart erpar es a half duplex elonyei), az rs232 ezt hatarozottan nem tu"ri jo'l.
- Nagyobb sebesseg kell: a mikrokontrolleres uart-ok 1mbit-et is boven tudnak, ha soros kvarccal hajtod meg az orajeleket, pl 14.7456MHz-n - ezzel ellentetben egy hordozhato rs232-es eszkozrol nem illik tobbet elvarni 0.1mbit-nel (B115200), de inkabb az ilyen 9600, 19200-as bitrate-k a "szokasosak".

Igazabol se elektronikai fejlesztes szempontjabol, se PC szempontbol nincs nagy kulonbseg. Az elektronikai oldalon kerdes, hogy egy max232-est vagy egy ftdi chipet teszel a nya'kra (plusz feltucat passziv alkatreszt ezek melle), host oldalon (linuxon) meg hogy a /dev/ttyS*-t vagy a /dev/ttyUSB*-t nyitod meg. Persze akkor, ha a serial-over-usb az megfelelo" (ha full egyedi usb-s kommunikaciot szeretnel az nagyobb szivas mindke't oldalon). Viszont tobb USB-soros chipnel tudsz egyedi vendor:product szamot adni (beallitani, kvazi egy flash eepromba), igy egy sajat udev-szabaly mellett me'g egyedi eszkozkent is tudod lattatni a fejlesztett rendszeredet (/dev/qqriq0, /dev/qqriq1), mikozben ugyanugy siman soros tty-kent kezeled linux alol.

Igazából szórakozás az egész. Olvasatam egy cikket a PIC-ről, utána az AVR-ről és eszembe jutott, hogy ezt feltétlen ki kell próbálni.

Az AVR mellett döntöttem, mert van hozzá gcc, ami Linux alatt is megy.

Az épülő terepasztalomra berakok egy pár AVR IC-t, mert olcsóbb, mint alkatrészenként összedobni a logikai eszközöket. A számítógépes kommunikáció inkább csak érdeklődés szintjén mozog. Bár gondolom el fogok jutni arra a pontra, amikor összekötöm a géppel.

gcc PIC-hez is van Linux alatt. Csak az utókor kedvéért :-).
Bár AVR-rel nem nagyon lehet mellélőni, ez is igaz.

Elolvastam a PIC assembly-jét és a szegmentálásos résznél döntöttem úgy, hogy az AVR-t is átnézem. Ezután az AVR lett a nyerő.

:)

A 8 bites PIC-ek programozása a bankváltogatással tényleg borzalmas. A 18F-es sorozatban már nem kell. (Pontosabban, csak akkor kell, ha sok adattal akarsz dolgozni.)

Szerintem nézd meg a PIC32-t is. Ezekre szintén van igazi gcc. (MIPS M4K proci van benne. Ha akarod magadnak is lefordíthatod a gcc-t.) Nem kell bankot váltani, meg hasonlók. Gyors, stabil, relatív olcsó (kb. 500 és 2000 Ft között mozog az ára).
Az MPLAB X (ugyan még béta) Linux alatt is fut. Egy hátránya van: nincs DIP tokozásban. (A kisebbekből van SOIC, a nagyobbakból TQFP, de ezeket sem lehetetlen házilag beforrasztani.)

Én próbáltam AVR-ezni. Szerintem (a pic-ekhez képest legalábbis) szép az assembly-je. Viszont az avr-gcc -vel nagyon sokat szívtam. Például olyanokkal, hogy függvényen belülről nem lehet a globális változókat módosítani. Illetve magával az AVR IC-vel is voltak gondjaim, azok a példányok, amiket próbáltam (ATmega644P és ATmega32) iszonyatosan zavar-érzékenyek voltak. (Ha az IC fölé tettem egy csavarhúzót, akkor az IC egyszerűen kiakadt, elkezdett Bad interrupt -okra ugrálni...)

SOIC-tól ne féljetek, 1,27 mm még kis kézügyességgel is jól forrasztható. Pöttyös panelre is - minden második lábat felhajtva és kidrótozva. :)

IC-t mindig foglalatba rakom. Kifizetem azt a pénzt, ezen nem spórolok.

Még beforrasztani 40 lábat oké, nade kiszedni!

Az SMD-re viszont lehet, hogy van DIP foglalat. Bár bekábelezni nehéz lehet...

Egy TQFP-100 -at nem igazán tudsz foglalatba rakni, hacsak nem akarsz kb. 20 ezerért foglalatot venni.

A beforrasztás nagyon egyszerű ezzel a módszerrel. A trutyi amit rátesz az folyasztószer, nagyobb elektronikai boltokban kapható.

A kiforrasztás, se bonyolult, bár nem tudom az IC mennyire éli túl. A lényeg annyi, hogy egy hőlégfúvóval eléggé felmelegíted, hogy leessen. (Ez is jónak tűnik, de még nem próbáltam.)

A SOIC tényleg bármivel forrasztható, de még a TQFP-44 is, úgy-ahogy.

Például olyanokkal, hogy függvényen belülről nem lehet a globális változókat módosítani
miert ne lehetne? legalabbis itten nekem sikerult olyan programokat irni ahol lehetett modositani ;) annyi viszont valoban van a dologban hogyha par "unistd" szeru fuggvenyecsket akar az ember felprogramozni, akkor sok trukkot be kell vetni, `volatile`-ket rendesen hasznalni, stbstb, mert a global + !volatile kombinaciobol valoban sok szivas van/volt/lehet (lasd pl egyik korabbi problema felvetesem itt, de ebbol is lathato hogy azert a global mint olyan mukodik: mint a fentebbi peldaban a timeofday strukturapeldany).

Ez az eset már 1-2 éve volt, azóta lehet fejlesztették/javították az avr-gcc -t. Amikor én próbálgattam, akkor a volatile-el valóban meg lehetett oldani.

Az egyik előnye, ami nekem nagyon tetszik, az az egyszerű "égethetősége" nem kell más csak néhány vezeték egy párhuzamos portról (és esetleg egy puffer IC).
Ami rossz volt, hogy nem volt (se nekem, se olyan akitől kölcsön tudtam volna kérni) hozzá debugger, illetve, hogy ha elrontod az órajel beállításokat, akkor nem lehet újból égetni és össze kell rakni egy spéci áramkört, amivel vissza lehet varázsolni.

A belinkelt problémára létezik jól működő megoldás: http://hup.hu/node/92974#comment-1388970

Az más kérdés, hogy ha a beépített számláló eleve 64 bites lenne, akkor nem kellene semmit sem trükközni, mert sosem fordulna át.

Már van kisebb lábszámú DIP tokos PIC32. Hirtelen nem találom a hírt, de tisztán emlékszek rá.

Szerkesztés:
Találtam egyet http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en555989

MODding | Asztali PC | Személyes weboldalam
'Everybody loves LEDs'

Valóban. Amikor utoljára néztem még nem volt raktáron. (Nem kérdeztem, hogy lehet-e rendelni.)
PIC32MX220F032B-I/SP 28 SPDIP 700 Ft

Nem lehet, hogy erre gondoltál: http://www2.chipcad.hu/tartalom.aspx?hir=657

Nem, én DIP tokos PIC32 mikrovezérlőre gondoltam, nem olyan panelra.
A linkelt oldalon is az van.

MODding | Asztali PC | Személyes weboldalam
'Everybody loves LEDs'

No, ez érdekesnek tűnik...

PIC32MX1, PIC32MX2-ből van DIP tokos

Idézet:
Az épülő terepasztalomra berakok egy pár AVR IC-t, mert olcsóbb, mint alkatrészenként összedobni a logikai eszközöket. A számítógépes kommunikáció inkább csak érdeklődés szintjén mozog. Bár gondolom el fogok jutni arra a pontra, amikor összekötöm a géppel.

Ha ilyesmi kell, akkor szerintem vegyél pártíz dollárért kész boardot, amin vannak kész csatlakozók, mellé esetleg egy USBDevBoardot, ami kijön egy USB-RS232 átalakító árából (http://www.futurlec.com/USBDevBoard.shtml)... :)
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

az rs232 talán, de az UART soha :-)
pl nézd meg a ma kapható GPS IC-k csatolását: igen nagy része soros(uart) :)

Az RS232 az iparból azért nem fog kikopni egyhamar, mert

* egyszerű, mint a faék. http://wiki.ham.hu/index.php/F%C3%A1jl:RS232_jel.png
* ha zavartűrőbbé akarod tenné, RS422-re egyetlen olcsó IC-vel átalakíthatod, hiszen csak szimmetrikus áramhurkot csinálsz az asszimetrikus nagyimpedanciás jelátvitel helyett.
* legtöbb esetben egyszerűen tudsz a fenti RS422 4 vezetéke helyett 2 vezetékes RS485-öt csinálni.

Honnan kopott akkor ki? A kommersz laptopok és PC-k seggéből. Irodai PC-be nem kell.
Ennyi. Az ipari PC-kben köszöni jól van. Sőt nem ritkán az RS422 illetve az RS485 is.

Hardverek NYÁK-jain legalacsonyabb szintű diagnosztikai/konfiguráló interfészként is sokáig élni fog.

Így legyen.

Á, közben megtaláltam az eredeti felvetés okát:

http://hu.wikipedia.org/wiki/Soros_port - vigyázz, ez nem az RS232 szócikk, hanem a PC soros port !!

Válasszuk kétfelé a dolgot:

- ha bemégy a boltba, asztali PC-t nézned kell, és főként laptopot már vadásznod kell, amiben van SOROS PORT csatlakozó
* PCI ill. PCIe slotba dugható sorosportokat kapsz,
* USB-soros átalakítót kapsz,
* expresscard-os soros átalakítót is kapsz.
* ethernetre dugható TCP/IP - soros átalakítót kapsz
(USB-soros és expresscard-sorossal van némi szopás stabil ipari körülmények között, ipari vezérléseknél a Plug&Pray nem szerencsés).

- ha ipari szabványként csak megemlíted a RS232 / RS422 / RS485 szavakat, senki sem fog komolytalannak venni.

Javaslom a témacímet javítani, például
"PC-kben, laptopokban a sorosport alapértelmezetten kihal(t), elektronikában, iparban az RS232 él tovább"

A magyar Wikipédiában a javításomat jóváhagyták. Így már kevesebb embert fog megtéveszteni a "Mára már elavult" mondat.

Köszi, így azért már sokkal tisztább lesz a kép.

Teljesen valószínűtlen, hogy az USB-sorosport átalakítók kivesszenek, nyugodtan lehet RS232 eszközöket fejleszteni.

+1, napi szinten használom

hja, a 8/16 portos highspeed rs232 igen jól fogy.

Az USB-UART protokollok között nagyon fontos különbség még, hogy:

Az USB:
* _busz_ több mint két résztvevővel, amik egymást zavarhatják
* viszonylag nagy csomagokat küld, ami byte-onkénti flush esetén óriási overhead. Ezzel az USB-soros átalakítók használatakor számolni kell. Az elméleti maximum átviteli sebességet meg sem tudtam közelíteni egy periódikusan adatot küldő programban.
* többnyire sok réteg ül egymáson, amikor kezeljük szoftveresen. Tapasztalatom szerint néha megjelennek ismeretlen eredetű késleltetések.
* nem duplex, azaz egyszerre csak egyirányú

Az UART:
* csak bájtokat küldünk, nincsenek nagyobb csomagok
* alapesetben két résztvevős és duplex. Bár valahogy ebből is lehet sok résztvevős buszt csinálni.
* lehet rá real-time rendszert építeni - legalábbis MCU-k között mindenképpen
* egyirányú kommunikációt könnyű több vevősre alakítani

Mivel a terepasztalon sok eszköz lesz, amiknek a bővülése nem feltétlenül jósolható, inkább valami olyat alkalmaznék, amit eleve busznak terveztek. Így kábelrengeteg nélkül bővíthető lenne a rendszered. Igazából a CAN busz lenne ideális, csak azt meg sajnos nagyon körülményes házilag építeni, mert kevés infó és eszköz van.

RS485 teljesen jó lenne ilyen célra, gyakorlatilag a DMX512 is erre épül.

Kérdezzél konkrétat, 20 éve dolgozom RS232-vel meg 485-el.

Rendben, ha tudsz linket, ami elmagyarázza a 485-öt érthetően jó volna.

Kicsit zavaros bennem a kép, hogy mi a szoftver, mi a hardver benne.

Az RS232 egyszerű: beállítod, kiadod az AVR-nek, hogy küldd el, az meg elküldi/fogadja. A soros port/kernel rész ugyanez.

A 485-ben tristate áramkör van, amit ki/be lehet kapcsolgatni. Emellett címzés is van, nem tudom soros porton hogyan címzek.

Nyilván kérdezni sem nagyon tudok, ha semmit nem értek az egészből. Ezért lenne jó valami szájbarágós link.

Az RS485 csak hardver, nincs rajta semmilyen szoftver reteg.

Egy csavart erparrol van szo, amiben a feszultsegszint szimmetrikus. Arra nem emlekszek, mi tortenik, ha egyszerre tobben szeretnek allitani a feszultseget. Szerintem katasztrofa :-)

Elvileg akarmennyi ado es vevo lehet, de a cimzest szoftverbol kell megoldanod. Egy egyszeru 1 MASTER sok SLAVE protokolt ajanlok kifejleszteni.

egyik feltol magas jelszintet, masik alacsonyat, visszanezik. a Masik latja, hogy nem az a jelszint van amit kirakott, igy var.

Ez olyasmi, mint ethernetben a CSMA/CD, jól értem?

--
Don't be an Ubuntard!

jó a párhuzam :)

Ha már energiát fektetsz bele, akkor javaslom tanulmányozni a dmx512-t, így az adóval bármilyen dmx-es eszközt meg tudsz hajtani (sok helyen lehet dmx-es vezérlőpaneleket kapni). Hátránya, hogy tudtommal csak 1 irányú a kommunikáció és a buszon csak 1 adó lehet.

GPIB-t is akkor már.

Elég sok eszköz csak azért "becézteti magát" RS485-re, hogy megspóroljon például 50 méteren 2 eret az RS422-höz képest. Ekkor semmi cím, csak a master lekérdezi a végberendezést, majd nagyimpedanciás figyelőre kapcsol és várja a végberendezés válaszát.

Ha viszont buszt csinálsz több eszközzel, akkor célszerű keretezned a csomagot (sokféle trükk van a csomagkezdet jelzésére, saját rendszerben bármelyiket alkalmazhatod) és az első byte(ok)at mint eszközcímet használni, azaz hogy kit szólítottál meg. Ez már mind-mind szoftver.

Mikrovezérlőből csak annyi többlet, hogy az USART adás és vétel vonala mellett neked kell gondoskodnod a meghajtó IC nagyimpedanciás állapotára kapcsolásáról (egyik lábbal). A többi csak szoftverbelső.

Érdekesség RS232 tájáról: itt is lehet több hallgató. Adó viszont vonalanként csak egy.
Rádióamatőr csomagrádiós cuccokban igény volt több vevő és adó eszköz felfűzésére. Így lett megoldva:
http://wiki.ham.hu/index.php/F%C3%A1jl:TNC-tokenring.png

Voltak okos ötleteik az elődöknek arra, hogy lehet egyetlen RS232 interfészre több RS232 eszközt felfűzni. :)

Hát, a token ring alapvetően jó ötlet, de a fogyasztás szempontjából fenntartásokkal kezelem.

Normál körülmények között jön egy interrupt, az felébreszti az AVR-t, majd elkezd dolgozni, valamit válaszol, közben pedig nem csinál semmit.
A token ring egyik problémája, hogy idle üzemmódban is pörög.

Persze itt is lehet szórakozni, hogy ha nincs adat a második körben lassabb lesz a token, a 100-iknál meg már 1 másodperc míg körbeér,...

A WIFI-nél is megfigyeltem, hogy ha netezek gyorsan válaszol, de ha kapcsolódni akarok, eltart egy darabig, amíg felébred.

A fogyasztás azért fontos, mert nem akarom, hogy 1-2 A-nél több menjen a terepasztalon (csillagászati ára van az erős transzformátoroknak + komoly hűtés kell a stabilizátor IC-re, pénz pénz pénz...). Sajnos egyik mozdony simán megeszik 500mA-t, így 1.5 amper a határ (kis asztal). Sajnos ezt nem olyan nehéz elérni, ha nem figyel az ember. A LED lámpák is láncra lesznek fűzve (LED1-LED2-LEDx-ellenállás), nem pedig LED-ellenállás (ilyenkor a teljesítmény zöme az ellenálláson füstöl el).

Hmm, nem biztos, hogy "erős transzformátor" kell. Mekkora feszültségről mennek ezek a modell vasutak? Én úgy emlékszem, hogy 9V vagy 12V.
Ilyen feszültségekre kb. 5 kFt-ért lehet venni 250W-os tápegységet. (kapcsolóüzemű, de ez szerintem a mozdonyokat nem zavarná)
Vagy akár egy sima PC táp (mondjuk ami itt van mellettem az asztalon) is le tud adni 12V-on 13A-t; 5V-on 25A-t; 3,3V-on 16A-t. Ugye ha 12V kell az adott, de elméletileg a ~9V is működhet, ha a pozitívot a 12V-ra, a negatívot a 3,3V-ra kötöd (12-3,3 = 8,7V). Ezt még nem próbáltam, lehet, hogy a kapcs. üzemű táp nem szereti!

Lehet, hogy érdemes lenne megnézni még a LIN, a CAN vagy esetleg az SPI buszt.
Az I2C-ről hallottam jót is, rosszat is, de szerintem nem ilyen "nagy" távolságokra találták ki.

Ez sima nagy fény-erejű LED-en kb. 20 mA folyik át. Ha ebből 100 megy egyszerre, az is csak 2A amit a PC táp simán bír. Ha nagyon sokat akarsz egyszerre használni, akkor érdemes lehet egy kapcsolóüzemű áramgenerátort csinálni a meghajtásukra.

Nekem a legkényelmesebb egy 14-16VAC-s tápegység lenne, a többi feszültséget az asztal előállítja.

16VAC - váltó kezelés
12VDC - általánosan használt feszültség az asztalon (nagy terhelés)
6VDC - félfeszültség, referencia műveleti erősítőhöz (alacsony terhelés)
5VDC - IC táp feszültség (alacsony terhelés)

A 12VDC nem annyira problémás, mert többször is előállíthatom a 16VAC-ből. A vonat például más 12VDC-t használ, mint az asztal. Ha rövidre zárod a sínt, akkor nem kapcsol le automatikusan a világítás is, mert más stabilizátor IC állítja elő.

Utánanéztem, egy 50 VA-s 15V-os nyák trafót 5000-ért árulnak (~3.3A). Ha még a házat, nyákot, rövidzárvédelmet,... hozzáadod, akkor 7-9 ezer körül végződik.
Nyilván két transzformátort is megvehetek, így ~6.5A-s tápot kihozhatok, de 12-14 ezer lesz a végösszeg.

Szóval nem árt spórolni az energiával, mert drága a tápegység.

Egyébként nemcsak a LED-ek viszik az energiát. Most jelenleg 12 relé van beépítve az asztalba. Mindenegyes relé kb. 12 mA-t megeszik ha be van kapcsolva. Sokáig kellett keresni ilyen alacsony fogyasztású reléket, mert az átlag relé fogyasztás 70-80mA között van.

Szerintem szét kellene szedned 3 nagyjából külön részre az egészet. Egyik a nagy áramú rész: a 12V. Ha jól gondolom, akkor erről mennek a mozdonyok, amik elég sokat esznek. Ide simán betehetsz egy PC tápot (régi tápokat elég olcsón/ingyen lehet szerezni) és rögtön lesz ~10A-ed.
Ha ezt a 16V-ból próbálod előállítani, akkor egy csomó drága és nagy teljesítményű stab IC-re lesz szükséged.
A másik a nem annyira nagy áramú rész a váltóké. Ez ugye 16V AC, ide nem jó a kapcs. táp. Kell egy trafó. Ha erről csak a váltókat kezeled, (lentebb olvastam, hogy csak egy rövid impulzus kell, hogy átkapcsoljon) itt nem kell akkora áram.
Találtam egy ilyen trafót: 230V/18Vx0.88A 1100 Ft(nettó)-ért. (Ha nagyon zavar a +2V, akkor beköthetsz 3 db diódát anti-paralel módon így 16,2V-ot kapsz.) Mivel ez váltóáram a vezérlése kicsit bonyolultabb. Használhatsz relét, de az sokat fogyaszt, drága. Használhatsz triak-ot, ami olcsó, de a vezérlése bonyolultabb, FET-et egy Graetz-en keresztül vagy egy IGBT-t.

És a harmadik rész az elektronikáé. Itt ugye kell 5V vagy 3.3V a uC-nek, illetve a relék behúzásához, ha 5V-os reléid vannak. Ha olcsón meg akarod úszni, akkor ezt is a PC tápra rákötöd, onnan van több mint 10A-ed, nem hiszem, hogy nem lenne elég.
A három és feledik, az a 12V és 6V az OPA-knak. Nem tudom mihez kellenek a műv. erősítők, de a legtöbb szépen elmegy nem szimmetrikus 5V-ról is. Vagy ha kell a referencia, akkor fogsz 2 db 0.1%-os ellenállást, csinálsz belőle egy fesz. osztót, erre ráteszel egy OPA-t fesz. követő módban, hogy valamennyire terhelni is lehessen.
Ha mindenképp kell a szimmetrikus tápfesz, akkor egy ilyen szerintem jó lenne: 230V/2x6Vx150mA (500 Ft) ez után 2 graetz és egy-egy 7806 és 7906.
Elméletileg a legolcsóbb az lenne, ha a PC táp 12V-os ágáról szednéd le, csak ott zajok lehetnek, meg rövidre zárhatod.

Én úgy csinálnám, hogy 1 db PC táp és 1 db 16V-os trafó.
A PC táp 3.3V/5V ága egy-az-egyben menne az elektronikához.
A 12V-os ágát ketté választanám. Jönne róla egy mondjuk 5A-re tervezett áramkorlát. (ez 10 mozdony) ami lekapcsolja a kimenetet, ha túlléped az 5A-t, mert mondjuk rövidre zárod a sínt. Ez egy FET-ből és néhány tranyóból megoldható.
A 12V-ról lejönne egy tekercs-kondi-n kezestül egy ág a műveleti erősítőknek. (12V - tekercs - OPA+ kivezetés - kondi - GND(opa-))

Az egyenáramok kapcsolását FET-el a 16V-os váltót pedig triak-kal oldanám meg.

Jó ötlet különválasztani a 12V-ot és a váltóáramot. Ezt megfontolom, valóban kevesebbe kerül.

Az 5V-ot és a 6V-ot jelenleg feszültségstabilizátorral oldom meg, rá van kötve mindkettő a 12V-ra. Minthogy jelentős terhelés nincs rajtuk, ez volt a legolcsóbb.

Fet-et már most is használok egyenáramú kapcsolásra, a váltóknál meg relézek.
(4 váltót 3 gombbal vezérlek, I. szakasz, II. szakasz, III. szakasz, relés megoldás volt a legegyszerűbb).

Asszem totális keveredés van a szoftveres, hardveres és villanyos részek között.:-)

A mikroproci szempontjából (kis nüansztól eltekintve) mindegy, hogy RS232, RS485 vagy akár postagalamb viszi a dróton a biteket. A procinak van két lába, az RX meg a TX, a TX-en kiadja, az RX-en meg fogadja a biteket, TTL jelszint mellett. Az alap szabvány arról rendelkezik, hogy ezen bitek időzítése, hossza, mennyisége hogy határozza meg az átvitt adatot.Ez annyiból érint minket, hogy mind az adó, mind a fogadó oldalon ugyanazon paramétereket kell beállítanunk. A leggyakoribb - mostanában defaultnak tekinthető - beállítás a 9600 BAUD, 8 bites adat, 1 STOP bit és nincs paritás. Handshake az már nem ez a szint, de itt említem meg: vagy nincs, vagy hardveres, de ezt általában nullmodemes átkötéssel intézik.

Itt még mindig a TTL jelszinteken vagyunk, ha nem vittem volna ki a szkópot (majd visszahozom) akkor gyorsan mellékelnék pár fényképet is erről.

Az RS232, 485, 422, vagy bármi más (mert optikai vonalon is átvihető ugyanez), immáron csak azt határozza meg, hogy a villanydróton milyen szinteken visszük át ezt a két jelet, az RX-et meg a TX-et. Semmi mást.

Az RS232 azt mondja, hogy nagy impedanciával tolja a jelet és polaritásváltással földfüggő feszültség szintek hordozzák az információt, az RS485 differenciál jelekkel dolgozik de alacsony impedancia mellett földfüggetlenül és a két vezeték közt a polaritás/jelszint megfordulás hordozza az információt, viszont nem igényel negatív tápot, az RS422-őt inkább egy kiherélt 485-nek mondanám, viszont közelebb áll a 232-höz bizonyos szempontból.

Az RS232 fizikai megvalósításából adódóan nem lehet több végpontot felfűzni a vonalra, ez csak két eszköz közt működik. Az RS485 viszont eleve buszra lett kitalálva, de alapvetően Master-Slave a kapcsolat, azaz van egy dedikált közopnti végpont, elsődlegesen ő pofázik rá a villanydrótra és az válaszol, akinek szól az üzenet. A többi végpont nem kezdeményez önállóan kommunikációt, csak ha a Gazda megszólítja őket. A vonalon történő ütközés figyeléssel természetesen feloldható ez a korlát is, az ilyesmit pl. CAN-bus környékén kell keresgélni, van külön CAN kontroller, az átvitelt (ütközésvizsgálattal, minden szirrel-szarral) megoldja a kontroller. Jellemzően az autóiparban és a vegyipari szabályozásban vannak ilyenek.

A tápot viszont (ahogy egy másik beírásodban feszegetted) teljesen felesleges idekeverni, mert ez az egész hóbelevanc 20-30 végponttal nem fogyaszt többet 1-2 Ampernél, nem ez a nagy fogyasztó. A teljesítményt nem ezen a vezetéken viszed át, ezek csak a vezérlést szolgálják.

Ha idáig világos, akkor kérdezz, és írom tovább.

+1

> A procinak van két lába, az RX meg a TX, a TX-en kiadja, az RX-en meg fogadja a biteket,

Na igen, ezt nem értettem, mert van egy 3. láb is RS485-ön, ami tri-state állapotba rakja a buszt.

Igazából ez kavart meg, de ahogy látom, a processzor valóban csak az RX,TX lábakon kommunikál, az -RD láb kezelése már szoftver feladata (ez a sorosporton az RTS-re van kötve, Ready to send).

Ami eddig lejött, hogy:
- az AVR a kommunikációt az RX, TX lábakon lebonyolítja, semmi más dolgom nincs, mint konfigurálni (baud, stop bit, paritás,...) és adatokkal ellátni
- a 3-state IC kezelése már ahogy látom szoftverből történik

Amit csinálnék (nem tudom, hogy jó-e):
- SN 75176 RS485 Bus/Line Transceiver (esetleg MAX485) kell az összes IC-hez, amelyik részt vesz a kommunikációban, kezeli a buszon a vonalakat.
- (ez az architektúra olyan, hogy egy dumál, a többi hallgatja)
- szoftverből állítgatni kell a beszélgetés irányát (lentebb pl. a token körülküldése egy megoldás, akinél a token, az dumál)

Azt nem értettem eredetileg, hogy az "SN 75176"-ot hardver állítgatja-e, de úgy látom, hogy szoftverből kell. Ahogy a linux-os programokat nézem, az RTS (Ready to send) lábbal szórakozik ioctl hívásokkal.

Kis pontosítás: Request to Send (kommunikációs berendezést kéri meg a végberendezés, hogy váltson adásra - esetedben RS485 TX on)

Halkan megjegyzem, kényelmes lett az elmúlt 20 évben a soros kezelés. Mikrovezérlőkben ott a sorosító hardver i2c, spi, usart, stb. Annó az 1990-es évek elején még megszokott volt, hogy szoftverből kellett lejátszani a startbit-adatok-stopbit témát. Vételre is!

De le lehet. Egy mai 8 bites mikrovezérlővel még olyan kódot is láttam pár éve, amelyik a 1,5 Mbps-es USB végberendezést megcsinálja célhardver támogatás nélkül, pusztán szoftverből. Bár annyi korlátozás benne van, hogy az idő alatt, amíg az első bit beérkezése kiváltja a vételi interruptot és veszi a csomagot a végéig vagy a elkezdi adni és nem ér a végére, addig aztán nem foglalkozhat más folyamattal. (Persze mára már ezzel sem kell törődni, 12 Mbps-es fullspeed célhardverek bekerültek azóta sok mikrovezérlőbe.)
Ehhez egyébként elég, ha a fenti sebesség 8-szoros utasításmennyiségét (12 millió/mp) képes végrehajtani [12 MHz ATtiny/ATmega vagy 48 MHz PIC16/PIC18], persze az időkritikus része assemblyben van jól kiszámolt órajelekkel megírva.

Van az 30 is, ha azt nézem, hogy mióta létezik pl. Z80 SIO :-) De régen is volt, amikor végrehajtási időket számolgattam, hogy "belefér"-e a kód a rendelkezésre álló időbe, vagy csak azért, mert abban versenyeztünk, hogy kinek a kódja igényel kevesebb órajelciklust...

A kérdés csak az, hogy hány irányú kommunikációt akarsz. Ha szimplex, azaz csak a PC pofázik és mindenki más csak hallgatja az igét, akkor semmi faxni nem kell, csak két drót, pár ellenállatka (120 Ohm) és a 75176-osok dögivel. A PC-hez veszel egy RS232-RS485 konvertert esetleg építesz egyet (MAX232-MAX485, pár kondi, 5V táp meg drót), és ez lesz az adó, az összes ponton meg fixen vételre kötöd. Ha visszafelé is kell pofázni, akkor két lehetőséged van. Maradsz ennél a kétvezetékes megoldásnál, de akkor kapcsolgatnod kell adáskor a meghajtót, mert ha szembedumálnak neki, akkor nullára leesik a jelszint. A négyvezetékes jobb ilyen szempontból, mert a PC-n nem kell kapcsolni az adást, ugyanis azon a két vezetéken csak a PC adóoldala és az összes többi hely vevőoldala van. A másik vezetékpáron más a helyzet, ott figyel a PC vevőoldala és az összes többi adó. Na ott kell kapcsolni, ezt nyilván egy szimpla portlábbal kapcsolod be az adás idejére és jónapot.

A szoftveres protokollt viszont teljes mértékben __neked__ kell kialakítani, te definiálod az adatcsomag felépítését, hogy a PC-ről a csomagot csak a címzett hajtsa végre (mindenki megkapja, de a többinek dobnia kell) illetve a választ csak a PC értelmezze, a többi dobja. Nyilván minden végpontnak van saját címe amit vagy beégetsz, vagy egy DIP kapcsolóval állítasz, így éred el az eszközök egyediségét.

Nalunk ugy nez ki a vezerles, hogy:
Szamitogep (ocska thinkpad 520, soros port), ez utan kovetkezik egy panel, ami a soros portunkat rs485-re alakitja. Mivel a kommunikacio 1 iranyu (szamitogeptol az eszkozokhoz), igy csak ez van megvalositva. Ez utan kovetkezik az rs485 busz, amire fel vannak fuzve a vezerlesi kimenetet szolgaltato panelek. A vezerlest vegzo paneleknek 32 db kimenete van. Azt megfejtettuk, hogy mind a ledes jelzok, mind a valto mukodik egyenaramrol is, tehat egyenaramot kapcsolunk. Van par regi piko karos jelzonk, ami csak valtoarammal mukodik, ezt rele kozbeiktatasaval tudtuk kapcsolhatova tenni. A buszon levo paneleknek mindegyiknek van 1 cime, es a protokoll ugy lett kitalalva, hogy egyenkent kommunikalok a dobozokkal, es a labak ki-be kapcsolasat igy egy az egyben szamitogeppel vezerlem. Minden 'doboz'nal van egy 1 A gyorskioldasu biztositek, megelozendoen, hogy az eszkozok leegjenek. Itt foleg a valtok problemasak, mert az olcso roco valtok nem kaphatnak folyamatos terhelest. Az idozitest szamitogeprol vegzem, igy jott ki az, hogy kb 100ms meretu impulzus hatasara a valto tokeletesen athuz.

Az rs232-rs485 kutyu 5V DC arammal megy, gyakorlatilag egy regi 5Vos telefontolto vegerol lett levagva a dugalj, es ez lett rakotve. A vezerlo panelek egyenkent megkapjak a 12Vot, plusz ezt is kapcsoljak. Az eszkozoknel a pozitiv a kozos (igy megy az osszes ledes jelzo), es a negativot kapcsoljuk. Ezt a 12Vot, egy kinezetileg ilyen: http://gallery.czo.hu/?album=5&loc=/vasut/terepasztal/#39 trafo biztositja. Egy ipari elektromos boltban volt par ezer forint. A kapcsolast vegzo panel ilyen lett: http://gallery.czo.hu/?album=5&loc=/vasut/terepasztal/#38 http://homokozo.czo.hu/IMG_0006.JPG van rajta 1 pic, es par uln2803a. Kimenetenkent 1A kapcsolhato, ez jelzoknek sok, valtonak meg tobb mint elegendo.

A software eloszor linux+python volt, de a p120 erre nem alkalmas, igy ujrairtam a kodot delphi 5.0 alatt. Ez valahogy jobban illeszkedik a P120/72MB RAM megoldashoz. Tervezek meg venni valami ps2 portos 12" touch foliat, es akkor meg kenyelmesebb lesz a hasznalat :)

---
Apple iMac 20"
áéíóöőúüű

btw, rs232/ttl(!)-usb atalakito, pl router hackolashoz 3000Ft-ert elado, ha valakit erdekel PM

--
NetBSD - Simplicity is prerequisite for reliability