• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Relais steuern über Pararellport

Hallo Zusammen

Ich würde gerne ein Relais über den Pararellport steuern. Da das Relais sehr wenig Strom benötigt (3-12V, 5mA) , kann ich wohl das Relais direkt an den Pararellport anschlissen. Nun habe ich das Problem, dass ich ein Script o.ä. suche, dass, wenn es gestartet wird, ein paar Sekunden Strom auf ein Pin des Pararellports durchlässt. Hat jemand schon so was gemacht? Wie kann ich das machen?
(Das Script sollte dann durch eine Erweiterung von Thunderbird automatisch gestartet werden, wenn ein neues Mail eintrifft, und das Relais schaltet dann ein Drehlicht)


gruss

abraham
 
mit script wird das nicht getan sein... Relaisansteuerungen mit anderen Sprachen sollten zu Hauf im Netz zu finden sein.
 
befasse dich mit den grundlagen der elektrotechnik bevor du hier die interfaces deines mainboards himmelst

da ich ein netter mensch bin:

Die Datenausgänge (Pins 2 - 9) bitte NICHT direkt mit Masse verbinden, die Schnittstelle kann dadurch beschädigt werden.

Damit sind wir auch schon bei den Unterschieden zwischen Daten- und Steuerausgängen: Die Steuerausgänge sind hochohmig und können deshalb keine hohen Ströme liefern.

Selbst für Geringstverbraucher reichen die entnehmbaren Ströme (ca. 0,5 mA) nicht aus.

Die Datenausgänge können dagegen ca. 2 mA liefern, bevor die Spannung auf Werte unter 2,5 V zusammenbricht. Die

Datenausgänge können damit eine Low-Current-LED zum Leuchten bringen (Vorwiderstand ca. 2,2 kOhm).

bei den Steuerausgängen ist selbst das Illusion. Was können die Steuerausgänge überhaupt? Na, steuern; z.B. die Eingänge von A/D Wandlern oder sonstigen Digitalschaltungen.

Infos kommen von:

http://www.franksteinberg.de/progss.htm

edit:
für sachen mit dierektverbrauchern benutzt man die serielle schnittstelle die zumindest 20-25mA bringt und bei der auch mehr spannungsabfall zulässig ist bevor du in den verbotenen bereich kommst, aber eigentlich sollten alle steuerungsaufgaben optisch getrennt erfolgen, das ist einfach sicherer wenn man ein sau teures mainboard hat, oder den gestank von geplatzten elkos nicht mag.

für deine anwendung gibt es relaiskarten im handel bei denen entsprechende vorkehrungen bzw. signalverstärkungsmaßnahmen schon eingebaut sind eine einfache relaiskarte für den seriellen port lässt sich aber mit wenig aufwand selbst bauen, eine anleitung findest du ebenfalls unter oben angegebenem link

nochwas...für sehr kurze schaltzyklen sind relais denkbar ungeeignet, das können transitoren besser.

zur software: du kannst alles was du softwareseitig benötigst mit einer programmiersprache deiner wahl umsetzen sofern sie:

systembefehle erlaubt bzw. den hardwarezugriff auf die ports intern regelt

boolsche verknüpfungen berechnen kann, wichtig AND,OR und XOR
 
Schön.
Ich hab nun noch ein paar Infos gefunden, wie z.b. das da

Und dann habe ich noch ein Programm gefunden (leider für Win). mit dem man die Ausgänge des Pararellports direkt ansteuern kann.
Das Relais konnte ich so ohne Probleme schalten :D

Das ganze muss ich nun noch auf Linux zum laufen bringen, aber das werde ich auch noch irgendwie fertig bringen...
 
Hi,
zweiter Grund, warum man ein Relais NICHT direkt an die Datenpins des LPTs hängen sollte sind die Spannungen, die beim Abbauen des Magnetfelds in der Spule des Relais auftauchen! Diese sind nach der lenzschen Regel immer entgegengesetzt zum Magnetfeld - sie fließen in deinem Fall also ENTGEGEN der Polung der Schnittstelle. Die wird das vielleicht dreimal mitmachen und dann ist Zapfenstreich.

Das ganze lässt sich natürlich leicht über eine Freilaufdiode verhindern - am besten also das ganze über ne Transe steuern:
Code:
12V     o--------------+----+
                        )   ^
                Relais  )  /_\ Diode
                        )   |
        Widerstand  ----+---+
             ___   /
DataLine o--|___|-|   Transistor
                   \
GND      o---------+
So sollte das in etwa aussehen - dann kann deiner Schnittstelle nix passieren.

Die Programmierung der Schnittstelle in C ist eigentlich recht einfach:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <asm/io.h>

int main()
{
  int i;
  ioperm( 0x378, 1, 1 ); // Dem Programm auf den Port 378hex den Zugriff erlauben

  outb( 0, 0x378 );  //Den Port auf LOW schalten
  sleep( 1 );
  for( i = 0; i <= 255; i++ )  // Alle Möglichen Schaltzustände der Schnittstelle ausprobieren
    outb( i, 0x378 );

  sleep( 1 );
  outb( 0, 0x378 );

  ioperm( 0x378, 1, 0 ); // Den Port wieder schließen
}
Siehe auch man outb, man ioperm!

Achja - fast hätt ichs vergessen: Das ganze ist die etwas unsaubere Methode! Dieses Programm kannst du nur als root ausführen. Für alles was darüber ginge müsstest du einen eigenen kleinen Treiber schreiben - ist auch nicht soo schwer, aber is hier vielleicht n bisserl zu umfangreich!
 
Ich möchte mich gerne hier einklinken, da ich Kompetenz erkenne.

Als Anfänger mit Linux 10.0 versuche ich, mit diversen gefundenen Beispielen unter C die serielle Schnittstelle anzusprechen. Leider erhalte ich immer die Meldung, dass /dev/ttyS0 nicht geöffnet werden kann.

Muss ich zuvor in Linux eine Berechtigung für die Nutzung der seriellen Schnittstelle einrichten und was ist dabei ggf. zu tun ?

Für eine Hilfestellung bin ich sehr dankbar !

Gruß
Norbert
 
Oben