Forum: Mikrocontroller und Digitale Elektronik 5v trigger signal von com port


von Filthy L. (Firma: lfk) (filthylucre)


Lesenswert?

Hallo,

ich arbeite an einem Projekt, bei dem ich mit Hilfe von einer Software 
(Thermalkamerasoftware) bei bestimmten Bediengugen (falls die Temperatur 
des Körpers höher als kritische Temperatur ist, was durch meine Software 
definiert ist) einen 5v Triggersignal schicken möchte um ein Gerät 
(Erhitzung) auszuschalten. Also falls die Temperatur > Tkritisch ist, 
löst sich die Alarmfunktion aus. Nur jetz kommt die Frage! :)

Zum Auschalten meines Gerätes brauche ich einen 5V Signal von der RS232 
Schnittstelle. Soviel ich weiss, muss ich erstmal meinen Rs232signal in 
TTL- Logik umwandeln, was mit Hilfe von Max232 möglich ist. Ich habe im 
Internet eine Max232Platte gefunden, die aber externe Stromquelle 
braucht (http://www.tigal.at/product/1245).

Ist das denn überhaupt möglich? Und wie?

An welche Pins der seriellen Schnittstelle soll ich mit meinem Code die 
Daten schicken, damit ich die weiter in 5v umwandeln könnte?

von Cyblord -. (cyblord)


Lesenswert?

Du kannst einfach die RTS Leitung nehmen. Die geht von ca. -10 bis +10 
Volt. Bei RTS=ON hat sie -10 V. Du kannst die ans Gate eines FETs führen 
(z.B. BS170). Drain über 22k an 5V. Source an Masse. Dann bekommt du 
deinen 5V Pegel bei RTS=ON und sonst 0V.

Alternativ, nimm einen MAX232, der macht dir auch Logik-Pegel aus dem 
COM-Port Pegeln. Ist aber Oversize für deine Anwendung.

gruß cyblord

von Stefan (Gast)


Lesenswert?

Da der serielle Port des PC weder eine Stromversorgungs-Leitung noch 5V 
Pegel hat, brauchst Du einen Wandler mit eigener Stromversorgung.

Im einfachsten Fall kann man das auch mit Transistoren machen, was ich 
bevorzugen würde, wenn wirklich nur ein Ausgang auf 5V herabgesetzt 
werden soll.

Alternativ könntest Du auch einen Optokoppler verwenden. Dessen 
Leuchtdiode schließst Du mit Vorwiderstand an eine Steuerleitung der 
seriellen Schnittstelle an (z.B. DTR). Den Ausgangs-Transistor des 
Optokopplers verbindest Du mit dem Eingang der digitalen Schaltung. 
Eventuell ist dazu noch ein Pull-Up Widerstadn nötig, das hängt von den 
Eigenschaften des Einganges ab.

von Cyblord -. (cyblord)


Lesenswert?

Ne er kann auch das zweite Handshake-Signal (DTS??) nehmen und es auf 
OFF bringen (=+10V), dahinter nen Festspannungsregler 5V, z.B. LP2950. 
So bekommt er seine 5V ohne externe Spannung. Wirklich Strom kann man 
aber natürlich darüber nicht ziehen. Für einen 5V Logikpegel reichts 
aber allemal.

gruß cyblord

von Filthy L. (Firma: lfk) (filthylucre)


Lesenswert?

Erstmal danke für die schnelle Antwort!

Cyblord, macht es überhaupt Sinn eine solche MAX232Platte, die ich 
gefunden habe, zu verwenden? Ich kenne mich nicht gut mit Elektrotechnik 
aus, und Oversize ist für mich kein Problem, wenn es einfacher ist! 
Besonders, wenn es viel mehr zu MAX232 als zu FET gibt :)

Kann ich die Platte verwenden, die ich oben erwähnt hatte (oder etwas 
ähnliches)?

Stefan, danke für die Idee mit dem Optokoppler! Gibts wahrscheilich ein 
Schaltschema dazu irgendwo?

von Cyblord -. (cyblord)


Lesenswert?

Filthy Lucre schrieb:
> Cyblord, macht es überhaupt Sinn eine solche MAX232Platte, die ich
> gefunden habe, zu verwenden? Ich kenne mich nicht gut mit Elektrotechnik
> aus, und Oversize ist für mich kein Problem, wenn es einfacher ist!
> Besonders, wenn es viel mehr zu MAX232 als zu FET gibt :)

Ja nimm die fertige Platine. Die geht. Auf dem Bild sieht man dass die 
Handshakeleitungen (RTS, CTS) rausgeführt sind. Damit bekommst du dein 
Logik-Pegel. Nur du brauchst halt eine externe 5V Spannung irgendwoher.
Gut und günstig bekommt man sowas aus einem Handy-Ladegerät.

gruß cyblord

von Filthy L. (Firma: lfk) (filthylucre)


Lesenswert?

cyblord, also mit dem Code RTS Leitung anschalten, mit der Plattine 
verbinden, externe Stormquelle finden, das Engerät mit dem Output 5v auf 
der Plattine verbinden. Danke! :)

von Filthy L. (Firma: lfk) (filthylucre)


Angehängte Dateien:

Lesenswert?

Sorry für eine dumme Frage, aber bevor ich die Platine bestelle, wollte 
ich genau wissen, wie es damit geht.

Man verbindet also den Femaleconnector DB9 mit der seriellen 
Schnittstelle des Rechners. Die externe Stromquelle wird, nehme ich mal 
an, mit dem 5V Pin verbunden. Durch meine Software wird bei der 
Auslösung der Alarmfunktion die RTS Leitung zu ON gesetzt, sodass ich am 
Ende einen Ausgangssignal von 5 v bekomme. An welchem Pin? Oder habe ich 
was falsch verstanden?

Danke im Voraus!

von Cyblord -. (cyblord)


Lesenswert?

Ja das ist so richtig. Das müsste am Pin RTS sein. Kommt drauf an wie 
rum die Platine beschriftet ist. Ansonsten am CTS Pin. Kannst ja 
probieren. Und GND/Masse muss natürlich auch verbunden werden. Sonst 
stimmt alles. Jetzt bestell und probiers aus.

Was kommt eigentlich danach? Was machst du mit einem Logik-Pegel? Wo 
geht der hin?

Und mach das 2,2MB Monster da oben weg. Machs kleiner. Machs als Bild. 
Tu was.

von Filthy L. (Firma: lfk) (filthylucre)


Lesenswert?

Danke, cyblord!

von Uwe (Gast)


Lesenswert?

Ne einzelne Z-Diode reicht auch. RTS TXD und DTR sind alle auf ca. 20mA 
begrenz und dauerhaft kurzschlußfest. Über die Z-Diode stellt sich dann 
die entsprechende Spannung ein. Vorteil besteht nur aus einem Bauteil. 
Man sollte jedoch noch als Schaltunbgverbesserung nen vorwiderstand von 
1K Ohm vor die Z-Diode packen. Die negative Spannung wird auf ca. -0.7V 
begrenzt.

von Dietrich L. (dietrichl)


Lesenswert?

Filthy Lucre schrieb:
> Sorry für eine dumme Frage, aber bevor ich die Platine bestelle, wollte
> ich genau wissen, wie es damit geht.

Weil darüber noch nicht näher gesprochen wurde: neben der Hardware 
brauchst Du natürlich auch eine Möglichkeit, das Steuersignal, das Du 
verwenden willst (RTS oder DTR), per Software zu beeinflussen.

Gruß Dietrich

von bluppdidupp (Gast)


Lesenswert?

Man könnte auch nen FT232 Breakout-Board nehmen, da hat man direkt 
5V-Pegel (je nach Board) ;D

von Filthy (Gast)


Lesenswert?

Dietrich,

dafür ändere ich meine Software so, dass die RTS Leitung bei der 
Auslösung der Alarmfunktion angeschaltet wird und dann wieder 
ausgeschaltet. Ich habe schon ein Program gemacht, das bei der Auslösung 
ein Bit an die serielle Schnittstelle sendet. Damals wusste ich aber 
nicht, dass ich einfach die RTS Leitung an/ausschalten soll. Ich glaube 
das ist eben das, was du gemeint hast.

Gruß

von Dietrich L. (dietrichl)


Lesenswert?

Filthy schrieb:
> Ich glaube das ist eben das, was du gemeint hast.

Ja. Daten senden hilft bei dieser Lösung eben nicht.

Gruß Dietrich

von Michael A. (Gast)


Lesenswert?

Filthy Lucre schrieb:
> Zum Auschalten meines Gerätes brauche ich einen 5V Signal von der RS232
> Schnittstelle.

Hast du schon geguckt, ob dein PC überhaupt noch eine serielle 
Schnittstelle hat. Die Dinger stehen schon seit einiger Zeit auf der 
Roten Liste.

von Filthy (Gast)


Lesenswert?

Ja, habe ich eins! :) Das Problem waere aber mit PCIcard loesbar :)

von Filthy (Gast)


Lesenswert?

Hallo,

Ich habe noch eine kurze Frage zu meinem Problem.

Wie das schon mal oben erwähnt wurde, muss ich meine RTS Leitung irgend 
wie einschalten. Wie macht man das am einfachsten? Geht es auch mit c++? 
Gibts auch Tutorials dazu?

Danke im Voraus!

von Achim M. (minifloat)


Lesenswert?

Wenn du aus der seriellen ein paar Zeichen raus schubst, wackelt doch 
auch der TX-Pin.

Filthy schrieb:
> Geht es auch mit c++?
> Gibts auch Tutorials dazu?

Ich nehme jetzt mal an, dein Betriebssystem ist POSIX-compliant:
http://www.easysw.com/~mike/serial/serial.html

mfg mf

von Filthy (Gast)


Lesenswert?

Hallo Mini Float,

Danke für so einen guten Link, damit mache ich jetzt weiter. Habe aber 
noch eine kurze, aber grundlegende Frage:

Ich habe gerade eine Leuchtdiode mit gnd und rts verbunden und die hat 
geleuchtet, d.h. es gibt eine negative Spannung zwischen den beiden Pins 
auch ohne Datenübertragung. Wenn ich aber + und - gewechselt habe, 
leuchtet meine Diode nicht mehr. Logischerweise muss dann eine Postivive 
Spannung vorliegen, wenn ich die Daten an meine Ser. Schnittstelle 
sende? Habe ich das richtig verstanden?

Danke!

von Filthy (Gast)


Lesenswert?

Ich habe es so verstanden, dass wenn man den ComPort öffnet, wird schon 
automatisch die RTSLeitung eingeschaltet, d.h. es muss eine positive 
Spannung vorliegen, also muss die Led nicht mehr leuchten, was bei mir 
leider nicht der Fall ist :(

von Achim M. (minifloat)


Lesenswert?

Filthy schrieb:
> Ich habe es so verstanden, dass wenn man den ComPort öffnet, wird schon
> automatisch die RTSLeitung eingeschaltet, d.h. es muss eine positive
> Spannung vorliegen, also muss die Led nicht mehr leuchten, was bei mir
> leider nicht der Fall ist

Ist auch nicht so. Die Flusssteuerung musst du immer mit deiner 
Applikation übernehmen.

Die billigste Lösung wird vermutlich wirklich die TX-Leitung sein. Die 
bleibt auf Ruhepegel, bis man was sendet. Eine dort angehängte LED 
müsste dann alo flackern. Da muss man einfach nur was in das 
entsprechende Device in dev rein schreiben...
mfg mf

von Filthy (Gast)


Lesenswert?

Jupp, habe ich ausprobiert! Danke!

Die Led flackert, wenn Daten übertragen werden. Jetzt kommt die Frage, 
wie hoch ist denn die Spannung am Ausgang und ob ich mit meiner Platine 
(Max232) am Ausgang eine Spannung von 5v bei TxD habe.

von Achim M. (minifloat)


Lesenswert?

Filthy schrieb:
> Jetzt kommt die Frage,
> wie hoch ist denn die Spannung am Ausgang

1. Com-Port:
Ruhepegel:
 -12V bis -3V, manche Notebooks und USB-seriell-Adapter spucken 0V aus
 entspricht einer logischen 1
"Signal"-Pegel:
 +3V bis +12V
 entspricht einer logischen 0

2. Max232:
Ruhepegel ist die logische 1, also 5V
"Signal"pegel ist logisch 0, also 0V

Die absolut billigste Methode wäre einfach, ein 0x00 mit geringer 
Geschwindigkeit zu senden. Dann bekommt man am Comport ein +12V-Impuls 
raus. Den kann man mit nem Widerstand und einer Z-Diode begrenzen.
Notfalls tun es auch zwei grüne LEDn in Reihe, die dann die Spannung auf 
ca. 4,5V begrenzen. Zum Abfangen des Negativen Ruhepegels muss zu den 
LEDn noch eine normale Diode antiparallel.
1
          ___ 3k3
2
TXD o----|___|-----*--------------o Trigger
3
                  _|_
4
                   /  Z-Diode
5
                  /_\ 5.1V
6
                   |
7
GND o--------------*--------------o GND
8
9
          ___ 3k3
10
TXD o----|___|-----*-----*--------o Trigger
11
                   |    _|_
12
                  _|_   _V_ LED1
13
               D1 /_\   _|_
14
                   |    _V_ LED2
15
                   |     |
16
GND o--------------*-----*--------o GND
mfg mf

von Filthy (Gast)


Lesenswert?

Mini Float, danke erst mal fuer Erklaerungen und das Schema, wobei ich 
aber gar keinen Umwandler sehe. Ich habe dazu dennnoch eine Frage:

Wenn die Spannung keine Rolle spielt und ich moechte einfach durch einen 
solchen Signal mein Geraet ausschalten, auch mit einem 12V-Signal, geht 
es auch ohne einen rs232-to-Ttl Umwandler?

von Filthy (Gast)


Lesenswert?

Also direkt Txd mit dem Geraet verbinden.

von Filthy (Gast)


Lesenswert?

Up! :)

von Frank (Gast)


Lesenswert?

Also ich würde da "was Solides" machen:

- ein Arduino Nano (komp.) kostet 15 Euro
- hat einen USB-Anschluss
- kann auch ext. Geräte/Schaltungen mitversorgen
- hat an die 10+ Pins, als Ein- oder Ausgang zu nutzen
- ist plattform-unabhängig zu verwenden (Mac, PC, Linux)
- keine obsolete Bastelei an der Hardware des Rechners ...

von Filthy (Gast)


Lesenswert?

Das Problem ist aber, dass ich schon in meine Software die 
Comportsteuerung eingebaut habe. Und das gibt schon einen Signal aus, 
mit dem ich jetzt weiter arbeiten möchte.

Ich bin gar kein Elektrotechniker, aber ich setze voraus, dass wenn eine 
Diode durch Datenübertragung flackert (also 1 sekunde, kann man aber 
länger haben durch Änderung von Baudrate), dann gibts eine Möglichkeit 
die Spannung auch weiter geben und dadurch das erwünschte Ergebniss 
triggern.

von Filthy (Gast)


Lesenswert?

Also, kann ich mit dem Signal, den ich jetzt habe, also +12V, ein 
einfaches Gerät ausschalten, oder brauche ich unbedingt einen Umwandler?

von Achim M. (minifloat)


Lesenswert?

Die von mir als hässliche ASCII-Schaltpläne geposteten Lösungen gehen 
direkt an den COM-Port. Die Platine brauchst du dann nicht.

Ein 0x00 macht bei 300bps einen Impuls von genau 30ms. Reicht das?
Vielleicht kannst du auch einen "break" senden. Da weiß ich aber nicht, 
wie lang der ist. Sonst eben die Statusleitungen hernehmen.

mfg mf

von Filthy (Gast)


Lesenswert?

Danke Mini Float,

das ist eben das, wass ich wissen wollte!

Danke noch mal!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.