Hlavní navigace

Jak si rychle a bezpečně ochránit paralelní port

2. 7. 2009
Doba čtení: 5 minut

Sdílet

V minulém díle jsme si ukázali, jak oddělit paralelní port rychle (rychleji, než je rychlost portu). Do tohoto dílu jsem plánoval oddělení pomalé, ale zato bezpečné. Nicméně součástky se vyvíjejí rychle, takže zde bude i oddělení rychlé, bezpečné... i když trošku dražší, než jsme si ukázali v minulém díle.

Další způsoby oddělení

Oddělení v minulém díle oddělovalo pouze datové linky. Země zůstaly spojené, takže pokud by byl například řízený stroj v jedné budově, počítač ve druhé a v blízkosti by udeřil blesk, naindukovaný proud by stále dokázal zničit počítač. Pokud chceme oddělit obvody galvanicky (aby mohly být na různých napěťových úrovních), máme několik možností. Můžeme použít optický, magnetický, zvukový nebo mechanický přenos.

Zvukový a magnetický přenos nepřenášejí úroveň, ale jen její změnu, takže je nutné namodulovat úroveň na nějaký nosný kmitočet (třeba 10Mbit/s ethernet prochází transformátory díky modulaci Manchester). Nejjednodušší je použít výrazně vyšší kmitočet, než je rychlost změn signálů a ten kmitočet vypínat. Ostatní modulace jsou složitější a ty nejkomplikovanější (a nejefektivnější) jsou de facto překódování bitů tak, aby bylo stejně jedniček a nul a nebyly žádné dlouhé sekvence stejné úrovně. Například v 1Gbit/s ethernetu se používá 8B/10B modulace, která vychází z faktu, že 10bitových sekvenci se stejným počtem jedniček a nul je přes 200, takže téměř každá z 256 kombinací osmi bitů dostane svou 10bitovou sekvenci. Ty zbylé mají každá dvě sekvence – jednu, kde je více nul a jednu, kde je více jedniček. Ty se pak střídají, čímž se to dlouhodobě vyrovná. Celou modulaci a demodulaci tedy zajišťuje poměrně jednoduchý (co se týká složitosti návrhu) kombinační obvod. V reálu je to o něco složitěji, vysílají se i řídící kódy, ale to na principu nic nemění.

Zvukové, ani magnetické přenosy realizovat nebudeme. Zvukové by (při použití ultrazvuku, na který jdou koupit vysílače a přijímače) byly navíc velmi pomalé. Na magnetické oddělení lze koupit obvody, ale jsou dražší, než obvody na optické oddělení.

Optické oddělení

Nejjednodušší je použít optické oddělení. Je natolik oblíbené, že na něj existují předpřipravené součástky – optočleny (alias optrony). Tyto součástky obsahují LEDku a fototranzistor, nebo LEDku a fotodiodu a k tomu případně zesilovač a/nebo tvarovač. Běžné optočleny, které se prodávaly ještě před pár lety, fungují na desítkách až stovkách kHz, tedy mnohem pomaleji než paralelní port. Obsahují infračervenou LEDku s prahovým napětím cca 1.2 – 1.6V a fototranzistor. Snesou cca 5kV mezi vstupem a výstupem (vždy je nutné kouknout se do datasheetu) a jedná se o čistě analogové součástky. Dokonce s nimi jde postavit i analogový oddělovač s operačním zesilovačem (jeden optočlen je ve směru dopředu a druhý – stejný – ve zpětné vazbě, čímž se nelinearita kompenzuje… tedy alespoň za předpokladu, že jsou zcela stejné).

Za 3 až 3,50 Kč lze koupit třeba K10103B, PC817B (ty jsem používal), nebo CNY17. Všechny jsou pomalé a udrží mezi diodou a tranzistorem 5 kV. S takovými optočleny není problém postavit oddělovač, kterým lze řídit třeba krokový motor, komunikovat s jiným počítačem (pomalu), senzorem a podobně.

Schéma

Je nakresleno jen jedno „hradlo“, na plné oddělení portu je samozřejmě nutné použít jich 17, z toho 5 jako vstupy. Často ale stačí oddělit komunikační linky konkrétního zařízení, kterých je zpravidla méně. Pokud se výstup napájí 3.3 V a zmenší se odpor na 2k2 místo 3k3, resp. zmenší se odpor na vstupu na 390R místo 510R, pak lze toto zapojení použít jako výstup, resp. vstup, 3.3 V logiky. Pozor, toto hradlo funguje jako negátor. Je-li třeba ne-negovaný výstup, stačí signál (na vstupu, nebo na výstupu – to je jedno) znegovat. Třeba hradlem, nebo dalším tranzistorem. Na triky s PNP tranzistorem v TTL radši zapomeňte, ta logika potřebuje pro logickou nulu dobré spojení na zem. V CMOS logice by to samozřejmě fungovalo.

Dnes lze koupit i optočleny, které pracují na 10Mbit/s (třeba 6N137 za 13 Kč), což je dostatečná rychlost. Resp. existují i paralelní porty o rychlosti ISA sběrnice (podle normy původně 4,77 MHz, pak 8 MHz, na deskách běžné 12 MHz, 14 MHz, 16 MHz, na jedné 486 jsem viděl i 25 MHz), ale neviděl jsem je prodávat, takže není třeba se jimi zabývat – kdo dokáže vyrobit takový port, dokáže si i vyřešit oddělení. Běžný paralelní port nezvládne více než 2 MHz.

Schéma

Je opět nakresleno jen jedno „hradlo“. Toto schéma nemám vyzkoušené, protože jsem se o tom obvodu dozvěděl před necelým týdnem, ale je tak jednoduché, že si neumím představit, proč by nemělo fungovat. Otázkou zůstává, zda blokovat každé hradlo extra, nebo po větších skupinách. Pokud je budete blokovat po skupinách, použijte na propojení napájecích vývodů hradel mezi sebou a s kondenzátorem krátké vodiče s dostatečným průřezem (1mm širokou pocínovanou cestičku na plošném spoji apod.).

Napájení oddělené části

Asi není třeba zdůrazňovat, že oddělenou část nemá smysl napájet z počítače. To sice oddělí port, ale v případě problémů stále může shořet celý počítač. Nejlepší je napájet to ze zdroje připojeného zařízení, nebo z nezávislého zdroje. Alternativně lze použít i optický, mechanický, nebo magnetický přenos energie. Pro magnetický přenos se prodávají se DC/DC měniče (třeba AM1D-0505SZ převádí 4,5 – 5,5 V na oddělených 5V/0,14A, stojí pod 100 Kč), nebo si můžete postavit vlastní. Pokud potřebujete opravdu velmi málo energie, lze použít solární článek z kalkulačky, nebo podobný malý článek koupit. Nicméně při osvícení LED se dostanete na účinnost přenosu maximálně 2 % (zase se to jednoduše zapojuje, nic v tom nekmitá, nehýbe se a nemá to jak rušit). Jakou LED použít po pravdě řečeno nevím, ale rozhodně nějakou monochromatickou (jen kvůli účinnosti – s bílou by to chodilo taky). Článek 55×22 mm (4 fotodiody) mi asi 10 cm od 20W úsporné zářivky, nebo ozářen dvěma bílými 1W LED Luxeon, dal 1,1mA/1,4V (naprázdno/na­krátko), takže při použití vhodného zdroje světla a pěti těchto článcích jde skutečně napájet nějakou logiku. Cena článku a LED dosáhne cca 500 Kč a přenesená energie cca 5mW, takže z porovnání s DC/DC měničem je vidět, že to nemá moc smysl.

CS24_early

Mechanický přenos energie upřímně nedoporučuji. Odhlédnu-li od rozměrů a hlučnosti, nastává problém s tím, že stejnosměrné elektromotory mají komutátor a na něm dochází k přepojování cívek, čímž ruší veškeré logické obvody, takže není vhodné připojovat je do počítače. Lze použít bezkomutátorové motory (třeba větráček z počítače bez lopatek), ale tyto konstrukce už jsou tak zbytečně komplikované, že se je nevyplatí snad ani zkoušet. Víceméně spojují nevýhody optických (velké rozměry) a magnetických (rušení) řešení. Má to smysl snad jen tehdy, pokud je potřeba přenášet data a energii na nějakou rotující část – pak se na stabilní část přidělají magnety, na rotující se umístí cívky a usměrňovací diody a data se přenesou polem LED rozmístěným tak, aby vždy alespoň jedna osvětlovala přijímací diodu/tranzistor, protokolem, který vysílá jen v tu chvíli, kdy na sebe vysílač a přijímač vidí, nebo jednou LED v ose rotace. Takto se dělají třeba virtuální displaye.

Příště se podíváme, jak připojit k počítači větší spotřebiče a jak oddělit počítač velmi pomalým, zato však efektivním a jednoduchým způsobem – relátky.

Byl pro vás článek přínosný?