PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : über RS232 Relais 1 sek anziehen lassen



spacepen
17.02.06, 07:33
Schon wieder ich ;-)
diesmal umgekehrt (zu meiner letzten RS232 Frage,diesmal PC im Büro ;-) )

mit welchem Befehl kann ich auf die RS232 einen etwa 1 sek. langen Spannungspuls legen mit dem ich ein sagen wir 5 volt dil relais oder wenn der strom net reicht halt über nen transistor anschliese ?
wieso:
mein blöder monitor geht nach stromausfall immer in standby. jetzt schalt ich jeden abend das büro stromlos ( damit nix passiert)
nächster morgen strom an ..
jetzt läuft die linux maschine hoch ( nach strom ein) doch der monitor bleibt auf bereitschaft. jedesmal muss ich den power on taster am monitor drücken. wenn ich nun , wenn der PC "oben" ist ein script ins autostart einlege namens "monitorein" oder so , dann wäöre alles "paletti"
meine frage nun : was muss ich in das script reinschreiben damit für 1-2 sekunden ein pin der RS232 auf high geht , welcher Pin ist das dann?
monitor hat logo keine fernebedienung, lirc geht also nicht ...

Azrae1
17.02.06, 10:26
Warum so kompliziert.
Wenn du den PC einschaltest das relai einschalten, und mit einer
ausschaltverzögerung wieder abschalten.
das sind dann ein ic und ein transistor. und ein bisschen kleinkram.
google mal nach ausschaltverzögerung, da findest du sicher was

mfg Azrael

E S
17.02.06, 21:31
Hi,

einfach ein Relais für 6V, einen kondensator 47µF und ein poti 1k benutzen. Kondensator und Relais hängst Du in Reihe zu 5V vom Netzteil, USB oder Gameport. Geht der PC an, lädt sich der Kondensator über das Relais auf und das zieht kurz an. Parallel zum Kondensator setzt Du das Poti, der Kondensator kann sich dann darüber wieder entladen, wenn der Strom weg ist.

Das Relais braucht natürlich noch eine Freilaufdiode (Ring an +), damit die Induktionsspannung keinen Schaden anrichten kann. Dauert das entladen des Kondensators zu lange, also bei kurzzeitigem abschalten des PCs, so dreht man den Wert des Potis herunter. Nur aufpassen, dass der Wert nicht zu klein wird und das Relais nicht mehr abfallen kann. Mit dem Poti kann man auch einegschränkt die Anziehdauer des Relais verlängern.

Gruß
Elmar

spacepen
18.02.06, 10:26
das ist mir auch schon eingefallen,
vielleicht habe ich auch nur einen hang zum komplizierten ;-)
war mir zu "banal" , sorry.

aber vielleicht habt ihr recht... so wär`S gelöst , fertisch ;-)

ich
hatte nur recht viel zeit mit lirc verbracht weil ich dachte wenn ich einen
"befehl" raussenden kann für eine IR Diode (klappt auf geringe Ditanz sogar ohne Transistor etc.) so müsste ich auch einen für ein relais raussenden können. halt so der "interne ehrgeiz", könnte damit dann z.b. in arb. pausen meine bildschirm ausschalten etc. ..

E S
18.02.06, 10:56
Hi,

das geht natürlich auch. Die RS232 schafft bis zu 20mA und hat einen Pegel von -12V oder +12V. Also brauchst Du eine Transistorstufe, eine Stromversorgung und dann mußt Du nur noch die Leitungen schalten. Du kannst Due CTS Leitung schalten oder die DSR Leitung. Die TxD Leitung schaltest Du über die "Alarm Condition" dauerhaft um. Das ist einfach ein Bit in der UART. Also im Ruhefall -12V, in der Alarmcondition +12V.

Gruß
Elmar

spacepen
18.02.06, 11:12
bitte sei so nett und sag mir wie .
also : löten kann ich und transistor und co kann ich auch
(habe mal radio und fernsehtechniker gelernt, ...so was vergisst man nicht)

aber .. wie sag ich es der schnittstelle ?
kleines "bash programm" ..?
muss ich die schnittstelle "freimachen " und treiber laden so wie bei lirc:

set serial /dev/ttyS0 uart none
demod -a
modprobe lirc_serial
lircd

muss ich da eingeben ...

um dann den befehl zu senden ?? ?

benötig ich da ein kleines "c" programm ? -> kewine ahnung wie man so was macht ... sorry , aber da habe ich eben 2 linke hände , obwohl ich in linux inzwischen schon halbwegs (!) fit bin

E S
18.02.06, 11:27
Hi,

In C musst Du die Register der Schnittstelle per Hand, also mit dem putc() / getc() Befehl auf Hardwareebene manipulieren. Das darf man aber nur mit root rechten. In der Uart befindet sich ein Bit, dass die "alarm condition" auslöst, also die TxD Leitung umschaltet. Entweder Ruhezustand (Logisch 1 = -12V) oder eben Alarm (Logisch 0 = +12V) auslöst.

Dann gibt es noch die RTS (Request to send) Leitung und die DTR (Data Terminal Ready). Beide sind für Hardwarehandshake gedacht.

Die DTR Leitung zeigt an, dass der PC gesprächsbereit ist. Die sollte sich ändern, wenn man die RS232 ein- und ausschaltet. Häng da ein Multimeter dran und versuch mal mit normalen Bashbefehlen die Schnittstelle zu aktivieren oder abzuschalten.
Wenn d as nicht hilft probierst Du die RTS Leitung. Die signalisiert der Gegenstelle, dass man gerade Zeit hat Daten zu verarbeiten bzw. dass man gerade keine Zeit hat Daten zu empfangen. Auch hier kannst Du mal mit Befehlen spielen und versuchen gezielt einen Besetztsignal ein- und auszuschalten.

Ansonnsten muß man tatsächlich direkt in der UART rumpopeln, hier im Forum im selben Themenbereich gibt es ein Tutorial dazu.
Und durch Google gefunden habe ich das hier: http://www.lammertbies.nl/comm/info/serial-uart.html
Da steht alles drin, was man über die UART wissen kann.

Gruß
Elmar

Henni
18.02.06, 17:16
Blöde Frage - wieso so kompliziert? Wäre es nicht einfacher, das ganze via Druckerport zu erledigen? -> das ist dafür ausgelegt, dass ein Pin für langere Zeit auf 0 oder 1 (also mit den entsprechenden Pegeln) gesetzt wird.

derguteweka
19.02.06, 13:33
Moin,


benötig ich da ein kleines "c" programm ? -> kewine ahnung wie man so was macht ... sorry , aber da habe ich eben 2 linke hände , obwohl ich in linux inzwischen schon halbwegs (!) fit bin

Ja, so kann man das machen, ich hab' hier:
http://www.linuxforen.de/forums/showthread.php?t=193255
mal sowas ziemlich abschreibfertig gepostet. Brauchst halt ggf. 'ne etwas aufwaendigere Schaltung, um ein Relais statt ner LED anzusteuern, aber da kann sich ja der Radio+Fernsehtechniker in dir schnell was ausdenken :)

Gruss
WK

spacepen
19.02.06, 14:28
also, zum einen habe ich mir jetzt geholfen ,indem ich das program
anleitung in http://www.linuxfocus.org/Deutsch/January2001/article186.shtml
einfach ohne schalter und ohne blink LED verwende.
das schöne ist, daß ich weiss was ich tun muss .. steht im README:
make
make install
nen link von dev/led auf schnittstelle setzen
dann logo net in die autostart , sondern von hand , und das ist dort sehr schön beschrieben :
bash programm mit befehl:
sudo setserial -ag /dev/ttyS0
sudo sled /dev/led
## somit ist -led von pin 4 auf 5 an -> da kommt mein relais hin
sleep 1
sudo killall sled
## somit ist die LED ( das Relais) wieder abgefallen .
http://www.mercateo.com/p/102-504572(2d)BP/REED_RELAIS.html

relais z.b. etwa 2€ mit 500 Ohm spulen widerstand somit 20 mA bei 10 Volt die anliegen, pack ich ne zener diode mit 4,7V davor , (5,3 Volt "rest" ) -> wären es nur mehr 10 mA sollte reichen ohne jegliche elektronik (halt ne freilaufdiode noch ran)
soweit so gut . problem gelöst
-----------------
klappt prima, herzlichen danke .

jetzt aber an derguteweka eine Frage, damit ich das "endgültig auch kapiere"
was mache ich mit so einem listing wie in deinem link?
( ich weiss es wirkllich nicht!)

mittels ctrl v und ctrl c eine datei anlegen, die schleife zum blinken rausnehmen ist ja auch noch klar ,
diese speichern als sagen wir relais.txt ... ???

und jetzt wird es spekulativ ...
könntest du mir bitte verraten wie daraus ein programm wird ?
wie kann ich dieses dann aufrufen ? wo gebe ich die ttyS0 an?

ein make , make install geht doch nicht,
vielleicht ist meine frage dusselig aber ein reines "groblösen" ist zwar nett ( ich habs ja nun gelöst) befriedigt aber nicht wirklich ...
grüße
stefan

geronet
19.02.06, 14:36
Nicht als relais.txt speichern sondern als relais.c, dann in dem Verzeichnis:

gcc -o relais relais.c

Und schon sollte es eine Datei namens relais geben die du so aufrufen kannst:

./relais

Grüsse, Stefan

spacepen
19.02.06, 14:45
super
habe ich kapiert
danke !!
probier ich sofort aus.

somit könnte ich 2 datein schreiben..eine
relais an mit

ioctl(fd,TIOCSBRK);

und eine mit relais aus :


ioctl(fd,TIOCCBRK);

... :-)
gigantisch einfach .. .

prima

borgelite
17.07.06, 17:58
hi das klingt jetzt vieleicht nen bischen blöd.Aber kann mir mal jemand erklären wo da genau 12V rauskommen sollen wenn ich messe habe ich überall nur 5v.
Oder muss man da nochwas freischalten.

E S
17.07.06, 21:56
Hi,

der Druckerport kann nur 0V/5V ausgeben und ist auch nicht sonderlich belastbar. Mehr wie ein paar mA kann man dem sowiso nicht anzun. Daher mußt Du mit dem Druckerport einen Transistor ansteuern, der dann das Relais eiin und ausschaltet.

Du brauchst also eine Spannungsquelle, z.B. Steckernetzteil 12V.

Masse des Steckernetzteils verbindest Du mit Masse vom PC.
Plus des Steckernetzteils lötest Du auf eine Seite der Relaisspule.
Jetzt zum Transistor. Den Kollektor lötest Du an den anderen Spulenanschluß des Relais, den Emitter nach Masse. Leitet der Transistor, so zieht das Relais an, der strom fließt vom Steckernetzteil durch das relais.
Die Basis des Transistors lötest Du über einen 330 Ohm Widerstand an den Druckerport. Ist der Pin des Druckerports auf +5V, so fließt ein geringer strom in die Basis des Transistors und lässt ihn leiten (Kollektor->Emitter Strecke ist niederohmig, Relais kriegt Strom).

Wichtig ist eine Freilaufdiode (z.B. 1N4001) parallel zur Relaisspule, sonnst haut Dir die Selbstinduktion (wie Zündspule am Auto) den Druckerport kaputt. Diese schließt die "Zündspannung" einfach kurz. Einfach parallel zur Relaisspule löten, den Ring an den Plusanschluß vom netzteil. NICHT VERGESSEN!

Als Transistor nimmst Du einen Feld-Wald-und-Wiesentransistor wie den BC337.

Gruß
Elmar

spacepen
18.07.06, 07:21
kann ich voll und ganz bestätigen. wäre/ist die korrekte lösung !!

bei Seriell , was ich nehme ( parallel "spinnt" beim hochfahren und schaltet wild . gibt es zwar auch ne lösung mit logik bsaustein der die synchron wild schaltenden ausgänge "bändigt"...) liegen zwar 12 Volt an, bei der kleinsten last bricht das jedoch zusammen.
dennoch , ich habe 5 volt mini relais von conrad, die bei 3,3 volt anziehen gefunden die gehen (mit freilaufdiode!) OHNE Transistor gerade so eben (ca. 4,5 Volt "zusammengebrochene Spannung verfügbar)...
daß ich die Ser schnittstelle damit etwas "ärgere" is klar, nachdem ich das jedoch nur für 1 Sekunde mache leb ich einfach mit dem "risiko" der überlast. seit monaten geht das "wie ne eins" ;-)
grüße
stefan

borgelite
18.07.06, 16:15
kann vieleicht mal jemmand sowas wie nen ersatzschaltbild zeichnen.?
Wäre echt super.
Thx erstmal für die super antworten.

borgelite
27.07.06, 15:29
ok ich habe mir das jetzt mal so aufzeichnen lassen.Kann mir jemmand sagen ob das so richtig ist.Oder ob man das besser machen könte.


+12V
|
----
| | |----------------
diode D [/] relai---/
| | |-----------------
----
+5V 500Ohm |
--------[__]-----------K Transistor
|
0V-------------------------------------------0V

E S
27.07.06, 20:48
.-------------
|
|
|
|
|
.-----o
| | | |
- _|_ o /o
Diode ^ |_/_|- /
| | /
'-----o o
| |
___ |/
----------------|___|--------------| BC337 o. BC338 o. BC550
|>
330 Ohm |
|
-------------------------------------o--------------
|
---
(created by AACircuit v1.28 beta 10/06/04 www.tech-chat.de)

E S
27.07.06, 20:54
Hi,

also links der Port, rechts die Versorgungsspannung. Versorgungsspannung passend zum Relais. Auch 6V Relais laufen an 5V, zwar schalten die nicht so schnell und man kann die auch nicht mehr maximal belasten, aber funktioniert für die meisten Fällen.

Gruß
Elmar

borgelite
28.07.06, 08:32
ja super vielen dank erstmal für die mühe!
Das mit dem reail past schon will ja auch nur 12v schalten.
Für nen Türkontakt.Allerdings steht auf meinen Transistor C546B (W5n) kann man das auch nehmen.Und mein 500 Ohm wiederstand ist wohl auch zu gross.

bla!zilla
29.07.06, 23:22
Gaaanz dumme Frage. Wie wäre es mit einem neuen Monitor?

derguteweka
30.07.06, 06:55
Moin,


Gaaanz dumme Frage. Wie wäre es mit einem neuen Monitor?
Es geht doch momentan hoechstens um borgelites neue Tuer und nicht um spacepens neuen Monitor :D :D

@borgelite: Ja, deine Bauteile kannste auch nehmen, die Schaltung ist so unkritisch, da kannste fast alle Bauteile nehmen. Der Nachteil an der Sache ist bloss, dass du noch eine Extra-Stromversorgung brauchst. Wenn du dein Relais immer bloss recht kurz (< 2-5 Sec.) anziehen lassen willst und danach immer recht lange Ruhe (ca. 10x so lange) ist, dann koenntest du auch ohne externe Stromversorgung auskommen, brauchst aber 'n paar Bauteile mehr, insbesondere einen (oder mehrere) dicke Elkos.

Gruss
WK

borgelite
30.07.06, 09:04
Super Danke das mit der externen strom quelle past schon.Habe noch nen 12v netzteil.Und an der Com schnittstelle kann da nichts passieren?Da liegen doch mal -5v und +5v an jenachdem wie man schaltet .

p.s meine letzte frage :)
thx

derguteweka
30.07.06, 09:18
Moin,


Und an der Com schnittstelle kann da nichts passieren?Da liegen doch mal -5v und +5v an jenachdem wie man schaltet.

Wie - nix passieren? Lebensgefaehliche Verbrennungen durch Lichtboegen wohl nicht, dein Motherboard kannste dir natuerlich schon abschiessen, wenn du dich enstprechend anstellst :)
Was du mal noch in die Schaltung, die ES gepostet hat, einbauen kannst, ist eine weitere Diode (z.b. 1N4148 oder fast jede andere) , parallel zur Basis-Emitterstrecke des Transistors und so gepolt, das sie leitet, wenn die Eingangsspannung negativ wird. Hab' schon Schaltungen gehabt, wo ohne diese Diode dann auch schon Strom im Kollektorkreis geflossen ist.

Gruss
WK

E S
30.07.06, 09:47
Hi,

RS232 läuft mit +/- 12V (entweder oder, wobei -12V='1' und +12V ='0')
RS232C (selten, z.B. billige Laptops) benutzen 0V/5V

Eine ordentliche RS232 ist aus historischen Gründen Strombegrenzt, da muss man sich schon anstrengen um die Kaputt zu machen. Nicht zuletzt haben Endgeräte (Modem, Drucker) die Leitungen gekreuzt um die mit einem einfachen Verlängerungskabel anzuschließen, aber leider nicht alle. Da passiert es in der Praxis oft, dass man Sende auf Sende legt, also +12V gegen -12V, und mir ist in 15 Jahren RS232 Nutzung noch nie was abgeraucht.

Eigentlich sollte nichts passieren wenn der Transistor Minus an die Basis kriegt. Um sicher zu gehen eine Diode IN REIHE zur Basis legen. Parallel zum Emitter schließt dann nur über den Basiswiderstand kurz und das muss nicht sein.

Zur Dimensionierung:
Ein Transistor ist ein Verstärker. Der multipliziert den Basisstrom mit seinem verstärkungsfaktor und diesen kann man maximal am Kollektor entnehmen. Braucht das Relais weniger, so ist der Transistor vollständig geöffnet und lässt den Strom praktisch ungehindert fliessen. Und das wollen wir beim Relais ja!
Den verstärkunsfaktor eines Transistors bekommt man über das Datenblatt heraus oder man steckt in in den Transistortest eines Multimeterers, das Multimeter zeigt dann den Verstärkungsfaktor am Display an.
Der BC337/BC338/BC550 hat MIINDESTENS einen Verstärkungsfaktor von 100 (100-300 je nach Typ). Nehmen wir mal das schlechteste an, nämlich 100.
Die Basis liegt sozusagen auf 0,7V fest (Knickspannung einer Siliziumdiode, ein Transistor besteht gedanklich aus zwei Dioden).

Wenn man also den Druckerport nimmt, dann hat man (Udruckerport-Ube = 5V - 0,7V =4,3V, die über den Basiswiderstand fliessen.
I=U/R = 4,7V/500Ohm = 9,4mA
Da der Transistor (Miss Deinen mal aus) mindestens 100 fach verstärkt würde er seinen Ausgangsstrom auf 940 mA begrenzen. Da das Relais diesen Strom niemals ziehen wird, ist der Transistor für das Relais entweder voll offen oder voll gesperrt (Port auf '0').
Wichtig ist nur, dass der Basisstrom nicht zu groß wird für den port bzw. den Transistor. Bis 20mA vertragen fast alle Transistoren, und auch die Ports kann man bis 20mA "quälen".

Noch mal für die RS232:
Wir haben eine zusätliche Diode vor der Basis, die nochmals 0,7V "klaut", also:
Ur = Uport - Ube - Udiode = 12V -0,7V - 0,7V = 10,6V
Am Basisvorwiderstand fallen also 10,6V ab:
Ib = Ur / Rb = 10,6V / 500 Ohm = 21,2mA

Für eine echte RS232 also ein bischen viel, also besser 1k um den Strom in etwa zu halbieren. Kannst zwei Widerstände in Reihe schalten.

Gruß
Elmar