[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