A Párhuzamos Port Programozása és Vezérlése
A párhuzamos port, amelyet gyakran Centronics portnak is neveznek, az informatikában hosszú múltra tekint vissza. Nevét onnan kapta, hogy az adat bitjei egyszerre, egymással párhuzamosan haladnak 8 db vezetéken (byte). A párhuzamos portot vagy interfészt szokás Centronics portnak is nevezni, mivel a Centronics cég fejlesztette ki a saját nyomtatói számára, még a PC-k megjelenése előtt.
Tehát alapvetően a számítógép és a nyomtató közötti kommunikációra való. Régebben ez egyirányú volt, csak a PC adta az adatokat a nyomtatónak. Ma már sokkal intelligensebbek a nyomtatók is, ezért ők is küldözgetnek jeleket a gépnek (kifogyott a papír vagy a tinta stb.). Ám a PC-kben ez a port nem csak erre való, sok más feladatot is elláthat. De lehet rá kötni külső winchestert, lapolvasót, külső modemet stb. Vagy akár az általunk épített áramköröket. Vezérelhetünk vele akármit. Leggyakoribb a motorok és az izzók vezérlése.
Az adatok a hagyományos EPP portra igazak, de ez megtalálható a legrégebbi gépekben is. Egyébként a programoknak már egy 386-os gép is elég, és azt (kis szerencsével) még ingyen is be lehet szerezni.
A Párhuzamos Port Elektronikai Alapjai
A párhuzamos portról fontos tudni, hogy a párhuzamos port TTL szinteket használ. Persze ezt nem szabad közvetlenül végezni. Az áramköröket galvanikusan le kell választani, legyen az bármi csekély áramkör is. Hiszen ha tönkre megy, és rövidre zárja a párhuzamos port kimeneteit, vagy külső tápegység feszültsége jut rá, akkor az az egész alaplapunk életébe is kerülhet.
Csatlakozás és Kábelezés
A 18-25 pontokat mindig kösd össze. Ez a test, ami elvileg a portnál össze van kötve, azonban tapasztalatok alapján ez nem mindig van így. Lehetőleg úgynevezett hosszabbító kábelt használj az összekötéshez, és ne nyomtatókábelt. Néhány gyári nyomtatókábelben nincs minden vezeték bekötve (kellemetlen tapasztalat), így meglepetések érhetnek.
Hogyan vezérelhetünk nyomtatóportokat Visual Basicben?
A csatlakozó bekötése egy 25 pontos anya "D" csatlakozó (vagyis lyukai vannak). Nem szabad összekeverni a 25 pontos apa "D" csatlakozóval, ami általában ott van a közelében, mert az a soros interfész (RS232).
Egyszerű Vezérlés LED-ekkel
Az első legegyszerűbb vezérlés, ha LED-eket kötünk a kimenetekre. Minden LED elé kell egy előtét ellenállás. Erre a célra 8 db, kb. 180-470 Ohm-os, 0,25W-os ellenállásra lesz szükségünk. A LED-eket az adat kimenetre kötjük. Ezek a csatlakozón a 2-9-es lábak. Ez nyolc bit, tehát összesen 256 féle értéket tudunk kiküldeni. Az, hogy egy bizonyos számrendszerben hány helyiértékkel, hányféle értéket tudunk megjeleníteni (a 0-t is!), a következőképpen számítható: m=2n. Ahol n a bitek száma, m a mantissza. És eddig tudunk számolni: m-1.
Galvanikus Leválasztás
A leválasztásra azért van szükség, hogy még véletlenül se terheljük túl a párhuzamos portot. Erre többféle megoldás is létezik. Építhetünk például minden bithez külön erősítőfokozatot. Ekkor teljesítmény leválasztásról beszélünk.
A galvanikus leválasztás azt jelenti, hogy a jelet valamilyen nem elektromos jellé alakítjuk, ezt érzékeljük és vissza alakítjuk elektromos jellé. Ezt transzformátorral, vagy optocsatolóval végezhetjük. Ez utóbbi olcsóbb és egyszerűbb megoldás, ezért csak ennek az ismertetésére térek ki.
Optocsatolók alkalmazása
Az optocsatoló, mint neve is mutatja fénnyé alakítja a jelet, majd azt vissza elektronikus jellé. Általában egy LED-et és egy fototranzisztort tartalmaz (van olyan is amelyikben fototirisztor van, ezekkel közvetlenül lehet vezérelni nagyfeszültségű eszközöket). Az egyszerű DIL tokozásúak a legelterjedtebbek. Általában 4 vagy 6 lábuk van. Az ilyenekben csak 1 LED és 1 fototranzisztor van. Ilyen típusok például: CNY17, 4N25, TCDT1103G.
A fototranzisztor bázisa is ki van vezetve. Ez arra jó, hogy méréssel tudjuk ellenőrizni, hogy jó-e, vagy, hogy a vezérelt áramkör is bele tudjon szólni a saját bemeneteibe. Ezzel az áramkörrel már vezérelhetünk is valamit 12V-tal max. 1A-ig. Lehetnek ezek izzók, motorok, relék további áramkörök stb. A tranzisztor ugyan 1,5A Ice-t bír ki, de ehhez már nagyon kellene hűteni, ezért 1A fölött már érdemesebb picit nagyobb teljesítményű tranzisztort használni. 1A alatt is ajánlatos rá egy hűtőzászló.
A leválasztás használata a bemeneteknél is fontos. Egy lehetséges megoldás például, ha egy optocsatolót teszünk a portra úgy, hogy a LED-et vezérli a mi áramkörünk és a tranzisztor a számítógépet. Adatbevitelnél fontos megjegyezni, hogy az állapotregiszter nem igazi regiszter, mert nem tárolja a bemenetén kapott értékeket. Erről nekünk kell gondoskodni, ha az alkalmazás megkívánja. Tehetünk például D tárolókat a LED-ek elé.
Tápellátás külső áramkörökhöz
A fenti ábrán látható, hogy a 12-es lábhoz másképp kell bekötni az optocsatolót. Ez azért van, mert ez egy poláros bemenet, tehát +5V-ra kell kötni. A +5V-ot a számítógépről kell levenni. Ezt egyrészt tehetjük a Game Port 1-es kivezetéséről, másrészt a tápegység valamelyik csatlakozójáról. Ezen mindig a piros vezeték a +5V.
A Párhuzamos Port Programozása
Ám az áramkör önmagában még kevés. Valahogy rá is kell venni a gépünket, hogy adatokat küldjön a portra. Legegyszerűbb módja, ha írunk rá egy saját programot. A párhuzamos port kimenetének a címe általában $378 (adatregiszter). Ide kell egy 8 bites (byte típusú) adatot kiküldeni. Ahol az [adat] a kiküldendő értéket jelenti, decimálisan, 0..255-ig, a [port címe] ahová küldjük. Néhány gyári nyomtatókábelben nincs minden vezeték bekötve (kellemetlen tapasztalat), így meglepetések érhetnek. Sajnos más problémák is adódnak a nyomtatóporttal. Például az 5 bemenetből gyakorlatilag csak 4-et tudunk hasznosítani, ugyanis az 5.-re +5V-ot kellene vezetni, ami kicsit macerás.
Fontos regiszterek és címeik (általános esetben):
Megoldások Ford Fiesta töltési gondokra
- Adatregiszter: 0x378
- Állapotregiszter: 0x379
- Vezérlőregiszter: 0x37A
Programozás DOS Alatt
Először egy a gépen már úgy is meglévő programot használunk. Tehát indítsd el a debug nevű programot. Ehhez DOS alatt (vagy Win3x-Win9x alatt egy DOS ablakba) a debug parancsot. Érdemes az adatportra írással kezdeni. Ha nem sikerül elsőre (és figyeltél a szóközökre), akkor sem kell elkeseredni, egyszerűen nem azon a címen van a port. Ez a program a nyomtatóport adatbitjeit kapcsolgatja. Az egyszerűség kedvéért minden lehetséges címre kiküldi az adatot.
Parallel port programming part 2_5
Programozás Magasabb Szintű Nyelveken
Előljáróban csupán annyit, hogy Turbo Pascalban lesznek a forráskódok, de a kommentekből kiderül, hogy az adott kód mit tesz, így egyszerűen átírható a neked megfelelő programnyelvre. Az alábbi assembly rutin ezt teszi: mov al,adat mov dx,$378 out dx,ax. Beültethető többfajta nyelvű programba is (Turbo Pascal, Turbo és Borland C, Delphi, Visual C, vagy akár egy teljesen assembly programba is).
Ez az egyszerű pascal program futófényként működteti a LED-eket. Kis átalakítással sokféle érdekes effektet ki lehet belőle hozni. A feketével írt részeket egyszerűen bemásolhatod a compilerbe, nem fog gondot okozni (az persze előfordulhat, hogy lehagytam egy vesszőt, vagy valamit).
writeln('Fut a progi. Ez csak egy oda-vissza futó fénypont az adatbiteken.... port[$378]:=b; {Egyszerűen minden lehetséges címre kiírjuk. Procedure Wait(Time : Word); { akadozós rutin egyes gépeken. writeln('Nézd a LED-eket!
Windows Alatti Speciális Megfontolások
Az összes program direkt írással dolgozik, így Win XP, 2000, NT alatt egy patch kell (IO.dll), hogy erre lehetőséged legyen, vagy a portra írás rutinját átírod. Én az első megoldást (patch) javaslom, ugyanis így a megírt programot nem kell újraírni. Természetesen az összes progit teszteltem. A programozásnál figyelembe kell még azt is venni, hogy Windows alatt a programok késhetnek, ugyanis csak 1-1 időszeletet kapnak az operációs rendszertől. Tehát például a léptetőmotornál ez rángatást okozhat (a léptetőmotor már az adott pozícióba fordult, de várnia kell az operációs rendszer miatt).
CNC Vezérlés Párhuzamos Porton Keresztül: A H2 Vezérlő
A H2 Vezérlő egy integrált kialakítású, egykártyás CNC Vezérlő, a család legkisebb tagja. Gépek építésére, lehetősége is! Bővítő portot, valamint egy kapcsolóüzemű tápegységet is tartalmaz. Szoftverek (pl. Mach3) segítségével működteti a CNC mechanikát. A H2 CNC Vezérlő 5db bemenetet tartalmaz, melyek sorkapcson érhetőek el. A Vezérlő bemenetére (Input port) max. végállás érzékelő, stb. köthető. Ezek a bemenetek védettek, és belső 1kOhm-os felhúzó ellenállást tartalmaznak. A Signal csatlakozó egy 2 bites, TTL kimeneti bővítőport (Expansion port). Schmitt-triggerezett és invertált a PC felől nézve. Felhasználható például fordulatszám szabályozására (PWM-es), vagy akár relés kimeneti bővítésre!
Tápellátás és Motorok
A Vezérlő egyetlen tápfeszültséget igényel, a motortápét. A megengedett feszültségtartománya DC 12-35V. A Vezérlő károsodását okozhatja! Fontos, hogy a tápegység minimum 10000uF-os kondenzátorral előállított DC (egyen) feszültség legyen. Szükségessé válhat! Érdemes jó minőségű, árnyékoltat használni (max. 2m). A tápegység és a Vezérlő közé, egy 10A-es, lomha olvadóbetét közbeiktatása is javasolt!
Az összes 2 fázisú motortípus használható. Alacsony alapfeszültségű, bipoláris motorok alkalmazása ajánlott! Az unipoláris motorok teljesítménye lényegesen kisebb. A motorok bekötésénél a sorkapcsokba kell kötni. Kezdet a kezdettel, vég a véggel legyen összekötve! A színjelölését megtalálja a motor adatlapjában. Az összesodrásuk erősen javasolt! 4 vezetékes (univerzális) motorokat részesítsük előnybe!
A H2 Vezérlő jellemzői:
- Fázisonkénti max. áram: 3.5A
- Maximális lépésfrekvencia: 100kHz
- Tengelyek száma: 5db
- Relés kimenetek: 1db (egysarkú, max. 10A)
Motoráram Beállítása és Hűtés
A beállítandó áramerősség megegyezik a ráírtakkal. A tekercsáram kb. 70%-át kell bejumperelni. A motor adatlapja a mérvadó. Alacsony sebességeknél kb. az alapfeszültsége 2×-ese a gyári adatnak. Javasolt a jumpereket 3.5A-es pozícióba kell elhelyezni a rezonancia mentesebb futás eléréséhez.
A tengely árampihentetését is meg lehet határozni. Az alaphelyzetben vissza szabályzásra kerülnek (0.7A-re). A motor pihentetés jumpere (Soft. 0.7A) LED jelzi. Világítása esetén teljes gerjesztéssel mennek a motorok. Ez a vezérlő jobb hűtését is segíti. Ha a vissza szabályzás nem érvényesül, meghatározott motorgerjesztés valósul meg (nincs pihentetés).
Szoftveres Konfiguráció (Mach3 példa)
A H2 Vezérlő mindegyik funkcióját a használt CNC vezérlő program felügyeli és látja el funkciókkal. A funkciókat az LPT lábszáma alapján azonosítja. Figyelem! A sebesség sok lehet (rángatni fog)! Mikro-stepből is kisebb érték lesz használható! A beállítása nagyon fontos! Nélküle a vezérlő bizonytalanul üzemelhet! Notebook-ok esetén eltérhet az alapbeállítástól. A 2. LPT port használatánál! Figyelem! Mindent így kell kitölteni!
Az Estop kötött, de a többit rugalmasan kell kezelni (a Mach3 konfigurációból)! Az Output #1 a relét vezérli, beállítása így megfelelő! A Signal csatlakozón 2db TTL kimenet található. PC felöl invertálva jelennek meg. A relé használatához szükséges adatok. Marómotor felpörgésének és leállásának ideje is (késleltetése). Ezek is "kötelező" beállítások! A többi mező a CNC gép paramétereitől függ (gép beállítás függő), valamint a gép max. sebességét és gyorsulását is! Tovább finomítható (cserébe több CPU terhelésért).
tags: #printer #port #vezerles #programozas