Forum: Mikrocontroller und Digitale Elektronik [Help] externe Schaltung via USB steuern


von John N. (jonnyd)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Umgebung:

- Zwei PCs ( PC1 und PC2)
- USB-Switch mit externem Schalter zum wechseln der Geräte
- USB-to-RS232 Adapter + NPN + Relais


Anforderung:

- Betätigen des Schalters vom USB-Switch mittels Software über USB.
- Die jeweilige USB-Steuerung wird mit am USB-Switch umgeschalten.


Status:

Die derzeit verwendete Schaltung besteht aus einem USB-to-RS232 Adapters 
der über die DTR Leitung einen NPN-Transistor ansteuert welcher dann das 
Relais schaltet und dieses Betätigt dann den externen Schalter des 
USB-Switches.


Problem:

Diese Lösung funktioniert im Grunde auch gut, unter Linux. Unter Windows 
7 x64 wird beim Zuschalten des Adapters während der Erkennung des 
Gerätes die DTR-Leitung getriggert wodurch das Relais erstmals schaltet 
und alles wieder zum ersten System zurückschaltet. Unter Linux passiert 
das wie gesagt nicht.


Nun die Frage lässt sich dieses Verhalten im Windows erklären / 
abstellen?


-----

Plan B:

Zwei Adapter die beide das gleiche Relais schalten um die initiale 
Ansteuerung beim Erkennen zu unterbinden. => nicht bevorzugt.
Evtl. hat ja aber jemand eine Idee wie ich einen einfachen Adapter bauen 
kann der lediglich diese Funktion erfüllen muss.
Da 15€+ für einen USB-to-RS232 einfach zu teuer sind um ein Relais zu 
schalten, zumal ich zwei davon bräuchte (siehe Problem).


Plan C:

Jemand hat eine einfachere Idee wie man diese Anforderung lösen könnte.



Vielen Dank, John.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

John N. schrieb:
> Nun die Frage lässt sich dieses Verhalten im Windows erklären
Anderer Treiber, anderer Programmierer...

> abstellen?
Mehr Intelligenz: der PC sendet ein RS232-Kommando, ein uC wertet es aus 
und schaltet das Relais.

> Unter Windows 7 x64 wird beim Zuschalten des Adapters während der
> Erkennung des Gerätes die DTR-Leitung getriggert
Wann ist das genau? Beim Systemstart?
Noch beim Booten oder später, wenn Windows an den Treibern herumwerkelt?

> besteht aus einem USB-to-RS232 Adapters
Dem "einen"?
Oder anders: welcher Hersteller (FTDI, Prolific...)?

von John N. (jonnyd)


Lesenswert?

Hallo Lothar,

>> Unter Windows 7 x64 wird beim Zuschalten des Adapters während der
>> Erkennung des Gerätes die DTR-Leitung getriggert
> Wann ist das genau? Beim Systemstart?
> Noch beim Booten oder später, wenn Windows an den Treibern herumwerkelt?

Das System läuft bereits und das Phänomen tritt beim Erkennen des 
Gerätes auf. Sowie ich den Adapter anstecke, wird die DTR kurz 
geschalten und es fliesen 6,xx Volt.

>> besteht aus einem USB-to-RS232 Adapters
> Dem "einen"?
> Oder anders: welcher Hersteller (FTDI, Prolific...)?

Habe es mit einem PL2303 sowie mit einem FT232 versucht. Beide zeigen 
das selbe Verhalten.

von Joachim B. (jar)


Lesenswert?

John N. schrieb:
> Das System läuft bereits und das Phänomen tritt beim Erkennen des
> Gerätes auf. Sowie ich den Adapter anstecke, wird die DTR kurz
> geschalten und es fliesen 6,xx Volt.

kann man nicht auf RTS ausweichen?

von John N. (jonnyd)


Lesenswert?

Joachim B. schrieb:
> John N. schrieb:
>> Das System läuft bereits und das Phänomen tritt beim Erkennen des
>> Gerätes auf. Sowie ich den Adapter anstecke, wird die DTR kurz
>> geschalten und es fliesen 6,xx Volt.
>
> kann man nicht auf RTS ausweichen?

Habe es eben auf RTS versucht, mit dem selben Ergebnis.
Nachvollziehbar ist dies einfach, indem man folgendes tut:

- Messleitung an GND und RTS(9-pol SUB-D Pin7) od. DTR(9-pol SUB-D Pin4)
- USB-to-RS232 Adapter im Device-Manager deaktivieren

-> Beim erneuten Aktivieren des Adapters im Device-Manager (was einem 
erstmaligem Einstecken entspricht) sieht man die Spannung am jeweilig 
gewähltem Pin von -6Volt auf +6Volt und zurück springen

von Joachim B. (jar)


Lesenswert?

John N. schrieb:
> Habe es eben auf RTS versucht, mit dem selben Ergebnis.
> Nachvollziehbar ist dies einfach, indem man folgendes tut:
>
> - Messleitung an GND und RTS(9-pol SUB-D Pin7) od. DTR(9-pol SUB-D Pin4)
> - USB-to-RS232 Adapter im Device-Manager deaktivieren
>
> -> Beim erneuten Aktivieren des Adapters im Device-Manager (was einem
> erstmaligem Einstecken entspricht) sieht man die Spannung am jeweilig
> gewähltem Pin von -6Volt auf +6Volt und zurück springen

ja OK ABER

Das kurze Toggeln kann ich ja austricksen mit einem Resetcontroller oder 
retrigerbaren Monoflop, erst wenn der Zustand statisch wird und bleibt 
wird umgeschaltet.

Ich hoffe das geht so, es ist zu warm hier, Gehirn schmilzt schon.

Mal überlegen, nix dran, ein PC soll an sein?
Es wird umgeschaltet der andere soll angehen, aber da beim Stecken oder 
hochfahren getoggelt wird muss das ignoriert werden, d.h. erst wenn sich 
der Zustand dauerhaft über 1s möglicherweise ändert kann umgeschaltet 
werden.

Oder wie hier schon gesagt wurde, kleiner Tiny der auf serielles 
Kommando umschaltet.

Der braucht u.U. so wenig Saft das er aus der RS232 gespeist werden 
kann, kleine Diodenmatrix an alle Leitungen diese nach + und - aufteilen 
und einen kleinen 7805 TO92 zur Versorgung des Tinys

von John N. (jonnyd)


Lesenswert?

Joachim B. schrieb:

> Oder wie hier schon gesagt wurde, kleiner Tiny der auf serielles
> Kommando umschaltet.
>
> Der braucht u.U. so wenig Saft das er aus der RS232 gespeist werden
> kann, kleine Diodenmatrix an alle Leitungen diese nach + und - aufteilen
> und einen kleinen 7805 TO92 zur Versorgung des Tinys

Tiny? hier bereits erwähnt?

Ich bin wie gesagt für alle Vorschläge offen. Das Ziel ist hier der 
Fokus - Schalten via USB und das so einfach wie möglich.

von Stefan F. (Gast)


Lesenswert?

Probier mal einen Kondensator (z.B. 10µF) parallel zu D2.

von Stefan F. (Gast)


Lesenswert?

Falls das mit dem Kondensator nicht klappt:
Kauf Dir irgendein Mikrocontroller Modul mit USB-UART Chip (zum Beispiel 
ein Arduino Nano) und lade da die serielle Version meiner I/O Firmware 
drauf (http://stefanfrings.de/avr_io/index.html).

Zum Schalten des Relais musst du dann Befehle an den virtuellen 
seriellen port senden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

John N. schrieb:
> Sowie ich den Adapter anstecke, wird die DTR kurz geschalten und es
> fliesen 6,xx Volt.
Na gut, die Volt fließen nicht, sie liegen an. Aber halb so schlimm: 
nimm ein RC-Glied, dann machen kurze Impulse nichts aus...

John N. schrieb:
> sieht man die Spannung am jeweilig gewähltem Pin von -6Volt auf +6Volt
> und zurück springen
Wie lange wird der "falsche" Zustand eingenommen?

Stefan U. schrieb:
> Probier mal einen Kondensator (z.B. 10µF) parallel zu D2.
Ich würde aber auch noch einen 100kOhm Widerstand von B nach E schalten. 
Zudem scheinen mir die 100k Basiswiderstand recht hochohmig. Ich hätte 
da bestenfalls 10k angesetzt.

von John N. (jonnyd)


Lesenswert?

Stefan U. schrieb:
> Probier mal einen Kondensator (z.B. 10µF) parallel zu D2.

DAS hat mein Problem gelöst! DANKE!


Danke auch an alle Anderen für deren Vorschläge, es wird sicher nicht 
die letzte Version sein und ich werde weitere bauen ;)

@Lothar Miller - richtig anliegen nicht fliessen! (zu warm, zu wenig 
Schlaf)

von Joachim B. (jar)


Lesenswert?

John N. schrieb:
> Tiny? hier bereits erwähnt?
>
> Ich bin wie gesagt für alle Vorschläge offen. Das Ziel ist hier der
> Fokus - Schalten via USB und das so einfach wie möglich.

ja vom Mod:
Beitrag "Re: [Help] externe Schaltung via USB steuern"

Lothar M. schrieb:
> Mehr Intelligenz: der PC sendet ein RS232-Kommando, ein uC wertet es aus
> und schaltet das Relais.

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.