Akvárium CB 21MHz Elektro Hudba Fotky ZX Spectrum +2A Jídlo Rybaření Hlavní stránka Akvárium CB 27MHz Elektro Hudba Fotky ZX Spectrum Jídlo Rybaření
English version

Rychlé, galvanicky oddělené, sériové rozhraní pro přenos dat z periferie do PC


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.



Schéma zapojení


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.

Hodně úspěchů Vám přeje Petr Simandl
Hlavní stránka

datum poslední změny : 27.5.1999