Relé kontakt detektálása számítógéppel

 ( fefe | 2010. május 5., szerda - 22:33 )

Üdv,

Van egy tűzjelző/tűzoltó berendezés, saját irányító panellel, gombokkal, sziréna, vilogás stb. de önmagában zárt rendszer, semmihez nem kapcsolódik. Tud viszont kifelé relé kontaktust adni, azaz vagy nyit vagy zár x db érintkezőt attól függően, hogy milyen problémát észlel vagy milyen riasztási esemény van.

Szeretném számítógéppel kinyerni a relék nyitott/zárt állapotát és ehhez valamilyen riasztást rendelni.

Aki csinált már ilyet, milyen hardverrel illesztettétek a számítógéphez a cuccot?

Egyelőre ezt találtam: http://www.sensorsoft.com/ss6402jspecs.html
Találkozott már vele valaki, esetleg más ajánlás?

Egy kollégám javasolta, hogy kössük a kontaktot rá egy PC bekapcsoló gombjára, ha összezár a relé, a gép leáll Nagios meg majd kiabál, hogy valami baj van. Ennél azért kifinomultabb megoldásra gondoltam :)

Fefe

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ne bonyolítsd túl. A PC párhuzamos portja tökéletes használható erre a célra (mint említetted relé zár/nyit).
Vegyél egy 25 pin-es D-SUB dugót, 10-15 -ös lábakat használhatod bemenetként. 10-től 15-ig ugyanazt kell csinálnod, valahogy így kell kinéznie:

R1 R2
15. <----~~~-------~~~----* 5V
     |
     \ k
     |
     * Föld (Ground, 25-ös láb)

R1 -es ellenállás kb 330 ohm
R2 -es 3K ohm
A "k" a kapcsolót jelöli, a földelést veheted a 25-ös lábról.
Az 5V nem minden gépen van kivezetve a párhuzamos portra, ezt lehet hogy egy molex csatiról, esetleg PS/2-USB portról kell vadászni.

Innentől nagyon egyszerűen, csak 1 bitet kell kilvasni az adott IO portról
Szerk.: Sajnos a code blockot még mindig nem sikerült életre bírni, így szétcsúszik a "rajz", de ha érdekel, akkor rajzolok egy normálisat belőle

Nem kell 5V, ha a kimenetek kozul egyet 1-be raksz es arra kotod.

/sza2

Csak akkor át kell billenteni az egyik kimenetet, ezt így ki is felejtettem mert a bemenetre koncentráltam;)

Köszi ez jónak tűnik, ahogy nézem programból kiolvasni sem túl bonyolult. A rajz kicsit elcsúszot valóban, jól tippelem, hogy ez egy egyszerű feszültségosztó?

Viszont printer portom nincs, usb/paralel kábel gondolom ugyanúgy jó lehet. Van olyna típus, amiről tudjátok, hogy linux alatt gond nélkül megy?

Viszont printer portom nincs, usb/paralel kábel gondolom ugyanúgy jó lehet. Van olyna típus, amiről tudjátok, hogy linux alatt gond nélkül megy?

Nem, azzal nem megy. A fenti megoldáshoz hardveres printer port kell (alaplapra integrált, vagy PCI/PCI-E/PCMCIA kártya)

Ha nincs HW-es párhuzamos portod, akkor a fentebb javasolt kicsi mikrovezérlő lesz a megoldás, ekkor soros porton (oda már jó az USB-soros átalakító), vagy USB-n kapod a jelet. Persze meg kell írni hozzá a programot, ami figyeli az illető portot...

Ez: http://www.stahlke.org/dan/usb-temperature/ nagyon jó kiindulásnak, gyakorlatilag egy USB CDC device-t kell csinálni (V-USB-vel, régi nevén AVR-USB), majd a linkelt Ruby library-vel libusb segítségével ki tudod olvasni a bemenet értékét.

szerk:

jól tippelem, hogy ez egy egyszerű feszültségosztó?

Nem.

Az R1 az egy soros áramkorlátozó ellenállás, el is hagyható akár, rövidzárlat esetén viszont megvédi a portot, bármilyen 100-300 Ohm körüli ellenállás jó oda, az R2 pedig felhúzó ellenállás, az pedig azért kell, hogy a kapcsoló (relé kontaktus) működtetésekor ne keletkezzen rövidzárlat. Ide néhány kOhm nagyságrendű ellenállás kell, 1k-tól 10k-ig szintén bármi megfelelő.

A rajz valóban nem az igazi, inkább leírom: R1 egyik lába a port bemeneten, a másik lába a relé kontaktuson, relé másik lába a GND-re. R1-nek a relé kontakt felőli lábára kötöd R2 egyik lábát, a másikat meg a +5V-ra (vagy egy 5V-ra felhúzott kimenetre, ha nincs külső tápod).

üdv,
Petya

Az egy felhuzóellenállás pl. 10k. Ami lehet akár a printerport 2. lábával összekötve, az egy kimenet. Azt éred el a báziscímen. A bemeneteket pedig a báziscím+1 címen.
http://members.cox.net/jkemege/pinout.gif

Ha soros portod van akkor elgondolkoznék rajta hogy lehet azt használni. Talán úgy, hogy az Rx-Tx közzé tenném a kapcsolót. És küldenék adatot, majd olvasnám, ha jön adat akkor zárva van.

Hardverileg a legegyszerubb a printer portra kotni a madzagokat, ott van par lab ami mindenkepp bemenet (pl. a busy). A kimeneteket (legalabb egyet) 1-be kell rakni. Egyik lab a kimenetre, masik a bemenetre (celszeru a bemenetet egy ellenallassal (~1k) lehuzni) es mar kesz is szoftverbol lehet detektalni. Anyagigeny: 1 db25 csati, 1db ellenallas, zsinor. Nem celszeru messzire drotozni, szerintem max 1 meter.

Kovetkezo lepcso: mikrokontroller, RS-232. ezzel akar tobb 10 meter is megoldhato, anyagigenye is komolyabb, de meg mindig kb ezresen belul marad (mondjuk proba nyak-ra).

De szerintem legjobban akkor jarnal, ha a sajat RS-232-jet hasznalnad, mert ugy latom az is van rajta, akkor elvoleg csak egy kabel kell.

/sza2

Na igen, a távolság még lehet hogy gond lesz, mert az irányítópanel a falra van szerelve és kb 4-5m kábel kell a legközelebbi gépig. Meglátjuk.

A linken egy olyan kügyü van, ami RS232-t ad és saját protokolon fütyüli el, ha valaki összezárta két érintkezőjét. A hardver illetsztest megoldja, de programozni meg valószínűleg bonyolultabb lenne és még táp is kell neki. Így néz ki:
http://www.sensorsoft.com/images/sr6170jx.jpg
http://www.sensorsoft.com/images/termstrip.jpg

A párhuzamos portos megoldás egyszerűbbnek tűnik.

egy kontaktus érzékelésére szerintem jobb a soros port, mert ott ha modemvezérlő jelre kötöd, akár interruptot is kaphatsz, nem úgy, mint a printer adatbitjein.

a legegyszerűbb:

ha van a gépben hangkártya, akkor a GAME porton keresztül lekérdezheted két joystick összesen 4 tűzgombjának állapotát is és máris négy riasztási állapotot különböztethetsz meg.
egyelőre nekem win98 alatt működik, egy Delphi programba illesztett pár soros assembly
kódrészlet olvassa ki a tűzgombok állapotát. (egy DOS megszakítással, tehát
XP-n már nem megy)
van olyan relékontakt, amit 30m távolságból figyel.
anyagszükséglet: 1db 15 pólusú Canon D csatlakozó. (egy rossz joystickról vágtam le)
meg persze pár méter vezeték.

+1
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "