[elektro] RS485 adás vétel átkapcsolás

Nya'ri Viktor office at flexelec.hu
Sat Nov 14 09:31:20 CET 2009


>>http://www.pyrograph.hu/rs232_485.jpg
>>
>>Ellenállások húzzák szét a buszt alapállapotba; a Tx pedig az adásirányt 
>>kapcsolgatja. Ha nincs az RS485 vonalon "ezer" eszköz, akkor működik.

>>A küldött kapcsolás csak egy beállított BPS-ig jó, eltérő esetben előbb kapcsolja ki az adást mint hogy a STOP bit kimegy, fordított esetben meg sokáig fogja a buszt. (ennél sokkal szerencsésebb megoldás a Tx tristate-ba tenni és azt detektálni, ez nem BPS függő, mert a uC generálja, elegendő egy ablak komparátor LM393)

 > ???
 > Ez egy monostabil multivibrátor mindösszesen, mitől lenne ez jó az
 > eredeti problémára?
 >
 > Egy konkrét kerethossz (baud és bit szám) esetén működik kielégítően.

Akkor kicsit részletesebben:

Alapállapot: SerialTx bemenet HIGH állapotban, azaz logikai 1-ben van.
Ekkor az inverternek bekötött ST NAND kimenetén LOW lesz, így a 75176 
RS485 vonala nagyimpedanciás állapotban van, vagyis a cucc vételben van. 
Ekkor az R27-R28 ellenállások széthúzzák az A-B vonalakat a tápokra, 
vagyis a 485 vonal is alapállapotban, azaz logikai 1-ben van.

Ebben az esetben a cucc vételképes, vagyis ha változik a 485 vonal 
állapota, és A-B vonal szintet vált, akkor ez megjelenik az 1-es lábon, 
ami az R22/C21 integráló miatt kb. 1usec késleltetéssel meg is jelenik a 
SerialRx kimeneten. De gondolom ez az 1usec késés senkit nem érdekel 
különösebben.

Namost; a processzor úgy gondolja, hogy neki most adni kell. És simán 
alkezd adni a SerialTx vonalon. Mi történik ekkor?
Az adás ugye egy SerialTx = LOW szinttel történik, ez a START bit.
Ekkor az adó meghajtó bemenete LOW-ra kerül, tehát ez helyes.
A D21 dioda miatt a C22 kondi egyből kisül, így a ST NAND kimenete 
"azonnal" HIGH-ba kerül, és a 75176 "azonnal" adásba kapcsol. És mivel a 
75176 4-es lába LOW-ban van, ezért az A-B kimeneten szintváltás 
történik, vagyis a 6-os lábat lehúzza 0V-ra, és a 7-es lábat felhúzza 
+5V-ra; vagyis kikerült a buszra a logikai 0 állapot; mindez késleltetés 
nélkül.
Tehát látható, hogy a logika 1->0 szintváltás korrektül kikerül az RS485 
vonalra.

Nézzük meg a logikai 0->1 szintváltás esetét (lehet ez egy 0-1 
bitváltás, vagy akár a STOP bit esete is; tökmindegy):
SerialTx visszamegy HIGH állapotba. Mivel az R21/C22 miatt a 75176 még 
legalább kb. 5usec-ig adásban marad (ez 100kBaud-os sebességek esetén is 
töredéke a bitidőnek), ezért a 4-es lábra jutott HIGH szint miatt az A-B 
kimenet is egyből visszaáll logikai 1 állapotba.
Ezután az R21/C22 késleltetés letelte után (kb. 5usec) a 75176 visszaáll 
vételre, és ekkor már az R27/R28 tartják a vonalat logikai 1-ben.

Vagyis: ez a kapcsolás az RS485 A-B vonalára a logikai 0-t a 75176 
driverével fixen kiadja, a logikai 1-et pedig csak egy kis időre adja a 
driver, utána pedig az ellenállások tartják 1-ben a 485 buszt.

Az R22/C21 integrálóra pedig a SerialRx vonalon az esetleges 
átkapcsolási tranziensek kiszűrése miatt van szükség.

V.




More information about the Elektro mailing list