Vše je založeno na vlastnostech aktivního optočlenu PC900V. Ten má na vstupu svítivou diodu. Výstupní tranzistor NPN má vyveden kolektor a je řízen aktivním obvodem s hysterezí, který potřebuje napájení. Na následujícím obrázku je schéma připojení optočlenu k sériovému rozhraní PC. Katalogové listy optronu jsou k dispozici ve formátech PDF a PostScript.
Označení signálů TXD a RXD je vztaženo k periferii. Na konektoru
PC se tyto připojí na jejich protějšky. Ve schématu je tedy na
špičce J3 napětí +10V, J5 napětí -10V a špička J4 je výstup dat
z periferie.
Napájení je zajištěno přímo ze sériového rozhraní. Trochu netypické zapojení
optočlenu na sériový port je zvoleno proto, že při nulovém proudu LED musí
být na signálu TXD záporné napětí (log.1 pro RS232), což je klidový stav tohoto
rozhraní. Hodnoty rezistorů jsou zvoleny tak, aby rozkmit napětí na TXD byl +-5V.
Optočlen si tedy vlastně mění napájecí napětí z 15V v klidu na 5V při sepnutí
výstupního tranzistoru. Nevím jestli výrobce PC900V něco takového předpokládal,
ale mně to funguje bez problémů na rychlosti 115200 Bd. Tato rychlost se
nastavuje na straně počítače hodnotou dělitele (viz ukázka programu dále).
Při měřeních optočlenu při napájecím napětí 5V, kolektorovém rezistoru 1k2 a
budicím proudu LED asi 1.6mA (sériový rezistor 2k2) bylo zpoždění hran H>L
a L>H shodné a činilo asi 2us. Optočlen pracoval do kmitočtu 300kHz.
Vyšší kmitočty už neměly stejnou střídu jako na vstupu a při 450kHz signál
neprošel vůbec.
Zapojení jsem použil ke spojení počítače s osmibitovým A/D převodníkem
řízeným procesorem PIC16C84. Převodník posílá 10k vzorků za sekundu.
Galvanické oddělení dovoluje "kouknout" se i na exotičtější místa, jako třeba
na telefonní linku a podobně.
Ukázka části programu v PASCALu k ovládání a čtení ze sériového portu :
{ Umisteni promenne COM na vektory seriovych portu } var COM : array [0..1] of word absolute $0000:$0400; { Nastaveni serioveho portu } procedure SETCOM; begin NUM:=0; {natvrdo se vybere COM1 (pro COM2 je NUM:=1) DATA:=COM[NUM]; {ziskani ridich adres registru serioveho rozhrani} INTE:=COM[NUM]+1; INTF:=COM[NUM]+2; CONT:=COM[NUM]+3; PFC:=COM[NUM]+4; PFD:=COM[NUM]+5; PFE:=COM[NUM]+6; port[PFC]:=$01; {nastaveni registru} port[CONT]:=128; port[DATA]:=1; {ZDE JE DELITEL} port[INTE]:=0; port[CONT]:=7; HL:=port[PFD];HL:=port[DATA]; port[INTE]:=0; end; { Cteni ze serioveho portu } function SEM:byte; begin repeat until (keypressed or ((port[PFD] and 1) = 1)); SEM:=port[DATA]; end;Došlé komentáře:
Existuje prevodnik 6N138 a 6N139 ktore su urcene prave na RS-232x aplikacie a potrebuju len minimalny prud pre diodu, maju vysoku rychlost a dobre ine parametre. Vyraba ich (aj) Siemens (Teraz Infineon a EPCOS) Mario.
|