Ein/Aus-Schalter über Serielle Schnittstelle

Gast #23318
Lesenswert?

Hallo zusammen

Leider habe ich von Elektronik keine grosse Ahnung und hoffe, Ihr könnt 
mir bei meinem Problem weiterhelfen.

Ich möchte anhand der seriellen Schnittstelle (RS232) einen 
Ein-/Aus-Schalter erstellen und den Status des Eingangssignals mittels 
einem C-Programm abfragen. Ich habe mir dabei gedacht, dass ich den 
Ausgang von Pin 4 als Spannung für den Eingang auf Pin 1 missbrauche und 
dazwischen einfach einen Schalter klemme (siehe Anhang). Eine LED soll 
anzeigen, wenn der Taster gedrückt wird.

Im Netz konnte ich bis jetzt nichts Vernünftiges finden - ist denn die 
Sache so trivial, dass nirgends wo ein Artikel über so was steht???

Die Schaltung habe ich aufgebaut, das C-Programm ist auch bereits 
geschrieben - die LED leuchtet auch auf wenn das Programm ausgeführt und 
der Schalter gedrückt wird - nur ich kann die Spannung auf dem Eingang 
nicht ablesen.

Geht das überhaupt, oder muss ich ein A/D-Wandler oder Max232 oder so 
etwas dafür anschaffen. Es sollte doch nur ein Schalter werden :-(

Bitttttteeee um Hilfe....

Dankeschöönnn...

P.S. Das C-Programm läuft unter RedHat Linux.
Angehängte Dateien:
Gast #23319
Lesenswert?

es ist schon trivial, allerdings sind doch ein paar Kleinigkeiten zu 
beachten.
Frei verwendbar sind 2 Ausgänge (RTS und DTR) sowie 4 Eingänge 
(CTS,DSR,DCD und RI). Diese Bits sind über die Statusregister der UART 
erreichbar, wie die unter Linux angesprochen werden - keine Ahnung.
Und dann gibts da noch die physikalischen Schnittstellenparameter, ein 
1-Pegel ist mit -3..15V, ein 0-Pegel mit+3..15V definiert. Wie sich ein 
offener Eingang oder ein mit Masse verbundener hält, kann bei jedem PC 
anders sein, kommt auf die verbauten Treiberchips an.
Und um die Sache nun auf den Punkt zu bringen: die Leitung TxD führt, 
wenn keine Daten gesendet werden, 1-Pegel. Diesen Ausgang über einen 
Widerstand 10k mit z.B. CTS verbinden, per Software den Ausgang RTS auf 
+ setzen und den Schalter dann zwischen RTS und CTS verschalten.
Gast #23320
Lesenswert?

Ich bin mir nicht ganz sicher, ob ich die Schaltung nun richtig 
zusammengesetzt habe, denn sie funktioniert immer nocht nicht... was 
aber auch heissen kann, dass ich mit der software probleme habe (oder 
mit meinem uralten 133er compi).

also, nur zum Sichergehen:

                |-----------|
TXD  o----------| 10 kOhm   |------------|
                |-----------|            |
                                         |
CTS  o-----------------------------------o
                                         |
                 /                       |
RTS  o----------/    --------------------|

Ich erhalte von RTS überhaupt kein Signal (+/-). auch wenn
ich RTS auf + setze ist keine Spannung am Ausgang. Deshalb
habe ich den Ausgang von DTR anstatt von RTS genommen...
Am DTR ist eine Spannung vorhanden.
Gast #23322
Lesenswert?

ja, sieht richtig aus.
An TxD und CTS solltest du ca. -10V messen, an RTS +10V. Und wenn der 
Schalter geschlossen wird, sollten an CTS min. +5V liegen. Wenn das so 
funktioniert, ist der Rest SOftwaresache.
Gast #23323
Lesenswert?

Hey "Crazy Horse", DU bist der Beste!

Die Schaltung funktioniert wirklich... ich habe mein Kabel ausgetauscht 
- so wie's aussieht war da der Wurm drin...

Vielen Dank, ich war nämlich schon bald am verzweifeln...

...für diejenigen, die auch unter Linux einen Schalter über die serielle 
Schnittstelle auslesen möchten, ist in der Anlage mein Source-Code, den 
ich für die obige Schaltung erstellt habe.

Nach dem Kompilieren mit "gcc -o switch switch.c" kann das Programm mit 
"switch /dev/ttyS* (zb. ttyS0 für COM1)" ausgeführt werden. Evtl. ist 
die Ausführung als Daemon noch sinnvoll.

Nochmals Vielen Dank.
Angehängte Dateien:
#2821120
Lesenswert?

jawi schrieb:
> Hallo Crazy Horse,
>
> habe gerade deinen Beitrag gelesen. Habe eine ähnliche Schaltung
> aufgebaut.
> Warum verbindest du über eine Widerstand TxD mit CTS? Ich hab nicht.

Weil es keine so gute Idee ist, mit dem Schalter den TxD Pin mit RTS 
kurzzuschliessen, wenn beide unterschiedliches Potential haben.

An Txd hat man -10V, an RTS ca. +10V. Schliesst man den Schalter, 
arbeiten 2 Ausgänge gegeneinander und das ist meistens keine so gute 
Idee. Hat man den Widerstand, dann kann an ihm die Differenz abfallen.

CTS ist der Eingang, an dem detektiert wird, welche Spannung an dem 
einen Ende des Widerstands anliegt. Ist der Schalter offen, so sind das 
-10V. Ist der Schalter geschlossen so sind das theoretisch +10V, die 
Spannung wird aber wohl ein wenig einbrechen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren