Forum: PC-Programmierung Sensorzustandsänderung über RS-232 senden


von Gurke (cqcumber)


Lesenswert?

Hallo,

ich benötige für ein Projekt eine Gerätschaft, die ein gegebenes Signal 
eines antivalenten kapazitiven Sensors via RS-232 an einen PC sendet. Am 
besten sollte das ganze Interruptähnlich sein, d.h. wenn der Sensor auf 
+24V schaltet soll an den PC ein Signal gesendet werden(umgekehrt genau 
so). Optimal wäre wenn das Modul auf 4 Sensoren lauschen könnte und je 
nach Auslösen ein Byte mit der entsprechenden Anschlussnummer des 
Sensors senden könnte.

Frage 1: Wie heißt so etwas?
Frage 2: Wo kann ich es kaufen?

Danke!

von MitLeser (Gast)


Lesenswert?

wenn der Sensor nur "HI" oder "LO" ausgibt, einfach kleiner AVR + MAX232 
+ etwas Software -> fertig!

von Tom K. (ez81)


Lesenswert?

Am wenigsten Aufwand wäre eine fertige Baugruppe mit USB und digitalen 
IOs a la IOWarrior, allerdings kann der soweit ich weiß nur abgefragt 
werden.

von Granatenvoll (Gast)


Lesenswert?


von Blackbird (Gast)


Lesenswert?

Wenn an den Schnittstellen eines PC Signale anliegen, ist noch lange 
nicht gegeben, dass der PC eine Reaktion zeigt. Auch wenn er 
eingeschaltet ist.
Was läuft denn so auf dem PC, was sich um die (interrupt-ähnlich 
generierten) Signale kümmert? Und über welche Schnittstelle solls denn 
rein kommen?

Blackbird

von Blackbird (Gast)


Angehängte Dateien:

Lesenswert?

Oder simple und einfach?

Blackbird

von Gurke (cqcumber)


Lesenswert?

Hallo,

danke erstmal für die Zahlreichen Antworten!

Im allgemeinen erstmal: Auch wenn ich mit der µC-Programmierung recht 
gut auskenne, möchte ich diesmal darauf verzichten. Außerdem brauchte 
ich keine große Auflösung des Signals sondern nur einen boolschen Wert. 
Entweder durch Abfrage: HI/LO, oder fast besser als Interrupt: HI!

Auf dem PC soll ein Java Programm laufen. Ein Thread sollte laut plan 
auf den RS-232 (alternativ auch USB) horchen und einen anderen 
benachrichtigen, wenn das Signal kommt.

Ich habe das ganze bereits mit µC gesteuerten Pumpen ausprobiert und es 
funktioniert soweit gut. Ich kann über RS-232 die Pumpen steuern und auf 
Antwort warten. (Ich benutze RXTX)

EDIT: PS: Der IO-Warrior gefällt mir soweit ganz gut, jedoch ist die 
Lieferung als Bausatz ein wenig abschreckend. Meine Löt-Kenntnisse sind 
eher bescheiden.

von Karl H. (kbuchegg)


Lesenswert?

Gero S. schrieb:

> Auf dem PC soll ein Java Programm laufen. Ein Thread sollte laut plan
> auf den RS-232 (alternativ auch USB) horchen und einen anderen
> benachrichtigen, wenn das Signal kommt.

und genau da fangen deine Probleme an.

Einzelne Pins von der RS232 zweckentfremden, das war mal. Ein 
gestandenes Betriebssystem darf so etwas nicht zulassen.

Also brauchst du irgendeine Schaltung, an die du deinen Sensor(en) 
anschliessen kannst, und die dir dafür eine echte RS232 zur Verfügung 
stellt, an die du den PC mittels RS232-Kabel (gegebenenfalls mit einem 
RS232-USB Umsetzer) anschliesst.
Und dafür gibt es nun mal nichts sehr viel, was noch einfacher als ein 
kleiner µC ist.

von Andreas B. (andreasb)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Gero S. schrieb:
>
>> Auf dem PC soll ein Java Programm laufen. Ein Thread sollte laut plan
>> auf den RS-232 (alternativ auch USB) horchen und einen anderen
>> benachrichtigen, wenn das Signal kommt.
>
> und genau da fangen deine Probleme an.
>
> Einzelne Pins von der RS232 zweckentfremden, das war mal. Ein
> gestandenes Betriebssystem darf so etwas nicht zulassen.

Es geht zumindest unter Linux mit C noch (glaube CTS kann man abfragen)


Vorschlag: V-USB, Keyboard Beispiel, läuft Betriebsystemunabhängig, und 
du hast einen Interrupt. Einfach eine Tastenkombination senden. Bauen 
kannst du das mit einem ATMega8...

(OK, ich weiss, willst du nicht.)

mfg Andreas

von Blackbird (Gast)


Lesenswert?

Geht auch unter Windows - siehe oben. (Datum: 11.04.2013 10:33)

Besser ist aber die "echte" RS232-Nutzung nur mit TxD und RxD.


Blackbird

von Reinhard Kern (Gast)


Lesenswert?

Blackbird schrieb:
> Besser ist aber die "echte" RS232-Nutzung nur mit TxD und RxD.

Wieso? Alle COM-Ports haben einen Satz Statusleitungen (mindestens 
RTS/CTS), die Eingänge davon können abgefragt werden. Dass es sich dabei 
nicht um TTL, sondern +-12V handelt, ist für Peripherieschaltungen eher 
ein Vorteil wegen der höheren Störsicherheit.

Damit spart man sich die Umsetzung auf ein serielles Signal, dafür gabs 
mal extra ICs, die sind aber ausgestorben.

Gruss Reinhard

von Karl H. (kbuchegg)


Lesenswert?

Reinhard Kern schrieb:
> Blackbird schrieb:
>> Besser ist aber die "echte" RS232-Nutzung nur mit TxD und RxD.
>
> Wieso?

Ich für meinen Teil würds auch umsetzen. Schon alleine deswegen, weil 
ich dann keine Probleme mit USB Umsetzern habe, wenn der nächste Rechner 
keine echte RS232 mehr hat. Zumal ja die Sensoren höchst wahrscheinlich 
sowieso irgendeine Form von vorgelagerter Elektronik zur Auswertung 
benötigen. Da spielt dann der Tiny+MAX dann auch schon keine Rolle mehr.

von Reinhard Kern (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Da spielt dann der Tiny+MAX dann auch schon keine Rolle mehr.

Hallo,

darüber könnten wir uns leicht einigen, aber er fürchtet die Prozesserei 
ja wie ein Vampir die Sonne. Ich selbst würde auch einen 8poligen µC 
nehmen, kleiner gehts nicht.

Gruss Reinhard

von Frank (Gast)


Lesenswert?

Die schnellste, einfachste und sicher auch preiswerte Lösung wäre z.B. 
das Benutzen eines Arduino Nano - da gibts zwar kein (altertümliches) 
RS232 mehr - zumindest nich tin V24-Form, dafür einen zeitgemäßen 
USB-Anschluss.

http://arduino.cc/en/uploads/Guide/ArduinoNanoUSBCable.jpg

von Blackbird (Gast)


Lesenswert?

Das geht noch einfacher: FTDI232 oder den Typ für 2xRS232.
Die +24V-Sensorausgänge kann man ja leicht auf +5V oder +3,3V teilen.


Blackbird

von Gurke (cqcumber)


Lesenswert?

Hallo,

also ich gebe ja zu, dass es mit einem µC schön wäre! Nur fehlt mir die 
Zeit, da das Projekt ja nicht nur die Erfassung der Sensordaten 
beinhaltet sondern auch noch Steuerungsaufgaben erledigen soll. Und 
diese möchten samt einer GUI noch geschrieben werden. Eine weitere 
Lösung auf die mich Blackbird gebracht hat ist das ganze mit einem 
AD-Wandler und timed polling zu realisieren und die Sensorspannung zu 
teilen um unter die messbaren 2.5V zu gelangen. Da gibt es einen von 
Taskit: Taskit RS232-ADC16 (Conrad 70.81€)
Das ist für meine zwecke eigentlich übertrieben, da ich keine genauen 
Messwerte brauche, allerdings spare ich mir so hoffentlich ein wenig 
Zeit und kosten, die ich an anderer Stelle sicher gut gebrauchen kann.
Hat jemand von euch Erfahrung mit diesem Teil? Die Suche gab nix her. Es 
liegt eine C-Library von Taskit vor, jedoch kann man wenn ich das 
richtig verstanden habe den integrierten µC mit ASCII-Befehlen steuern, 
was mir ja über Java-RXTX gelingt.

Ich danke euch allen für die vielen Ideen und Tipps! Falls keiner sich 
mit dem Taskit auskennt würde ich diesen Thread für geschlossen 
erklären.

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.