Guten Abend,
ich such schon einige Tage nach einer Moeglichkeit meinen HTS Switch vom
Pc aus via USB anzusteuern. Ich benoetige hierfuer eine 5V Versorgung
und einen Input >3,5V. Da normale USB Datenuebertragung mit 3V zu
niedrig fuer den Schmitt Trigger im Switch ausfaellt, richtet es ein
einfacher USB-TTL Wandler nicht. Das Ansteuerungssignal sollte
mindestens 5V haben.
Ich benoetige ausserdem noch die Moeglichkeit ein TTL Signal zu
empfangen und natuerlich Ground.
Hat jemand eine Idee wie ich den Switch ueber USB ansteuern kann?
Blanker schrieb:> Ich benoetige ausserdem noch die Moeglichkeit ein TTL Signal zu> empfangen und natuerlich Ground.
Hast Du Dir mal einen IOWarrior angeschaut? Bei USB kann man die
(Daten-)Signale nicht direkt ansteuern, man braucht immer einen aktiven
Chip.
Wenn Du nur einen +5V Ausgang brauchst: Bei einigen USB Hubs kann man
die Ausgangsspannung an den Ports ein- und ausschalten. Geht AFAIK aber
nur
unter Linux und auch nicht bei billigem Chinakrams.
Hm? schrieb:> Ich sehe da kein Problem. 5V sind bei USB frei Haus mitgeliefert.
Die Datenkabel liefern doch 3V, da ich aber 5V Supply und 5V als
Steuerinput brauche, reicht es eben nicht aus.
Ist es nicht möglich mittels Pyvisa (oder ähnlichem) über den
Datenausgang gesteuerte Signale zu bekommen?
ich verstehe das Problem auch noch nicht ganz.
Was spricht gegen:
USB-Port-PC => USB-TTL-Modul(5V TTL) => 5V-Versorgung/5V-Pegel bei TX/RX
=> Schmitt-Trigger/Sonstiges
Blanker schrieb:> Ist es nicht möglich mittels Pyvisa (oder ähnlichem) über den> Datenausgang gesteuerte Signale zu bekommen?
Nein. Die USB Signale kann man nicht direkt steuern. Da kann man nur
serielle Datenpakete drüber schicken, und auch das kann nur der
Betriebssystemkern direkt.
Wenn du über USB etwas steuern willst brauchst du immer einen IC der
das USB Protokoll spricht.
FTDI hat sowas, NI hat Geräte die das (und viel mehr) können, oder du
baust das selbst mit einem Mikrocontroller (kompliziert) .
Dr. Sommer schrieb:> Wenn du über USB etwas steuern willst brauchst du immer einen IC der> das USB Protokoll spricht.
Aber: Der Chip kann auch im HUB sein. (Wenn's nur um den Ausgang geht)
HUBs die "Per Port Power Switching" nicht nur per Descriptor ankündigen,
sondern sogar echt implementieren, sind aber rar.
Geiz ist Geil, der Cent für die Schalttansistoren musste weg..
Vor langer Zeit gabs z.B. einen 5€-Hub bei Reichelt, der das konnte.
Damit waren dann so USB-Gadgets ohne Eigenintelligenz (Kaffewärmer,
Ventilatoren, LEDs usw.) direkt per Software schaltbar.
Leider wurde der ohne Ankündigung oder Änderung der Bestellnummer durch
ein schrottiges Nachfolgemodell ersetzt.
Dr. Sommer schrieb:> Nein. Die USB Signale kann man nicht direkt steuern. Da kann man nur> serielle Datenpakete drüber schicken, und auch das kann nur der> Betriebssystemkern direkt.
Oh das ist gut zu wissen. Mit dem FTDI TTL-232R sollte es dann aber
moeglich sein den ueber PYVisa anzusteuern?
Andreas I. schrieb:> USB-Port-PC => USB-TTL-Modul(5V TTL) => 5V-Versorgung/5V-Pegel bei TX/RX> => Schmitt-Trigger/Sonstiges
Das war meine Vorstellung wie es funktionieren soll. Ich habe aber
einfach kein Modul gefunden das am Ende auch 5V Signale ausgibt (nicht
nur am Supply). Wie oben bereits von rudolph geschrieben sollte das aber
mit dem RT232R funtkionieren.
Blanker schrieb:> Oh das ist gut zu wissen. Mit dem FTDI TTL-232R sollte es dann aber> moeglich sein den ueber PYVisa anzusteuern?
Das ist dann ein Serial Port. Den solltest du eher über ein API für
Serial Ports ansteuern. Weiß Grad nicht wie so was bei Python heißt.
Du würdest dann wahrscheinlich die Flusskontrolle Leitungen schalten
(CTS und so) statt den eigentlichen RX/TX Leitungen. Die geben aber
glaube ich nur 3.3V aus, aber dafür gibt's ja Pegelwandler.
ich meine FTDI hat auch ICs die so was besser können (einzelne Leitugen
schalten), das wäre schlauer als einen Serial Adapter zu
zweckentfremden. Weiß aber grad nicht wie das heißt
Kann mir jemand eine Empfehlung fuer einen Konverter geben? Ich habe mir
die Datasheets zu den verschiedenen Konvertern durchgelesen, finde mich
da aber nicht so zu recht. Ich benoetige einfach eine 5V
Spannungsversorgung, Ground, ~5V Output Signal (via PYVisa o.ä.
steuerbar) und die TTL Signale vom Switch sollten auch ankommen.
Wuerde der FTDI Chip TTL-232R-5V-PCB
(http://de.rs-online.com/web/p/products/0429278/) funktionieren? Wenn
ja, wie stelle ich hier ein das ich 5V Output Signale erhalte? Das ist
mir nicht ganz ersichtlich.
Alternativ Vorschlag: Nimm einen Arduino (einen von den alten mit AVR).
Der kann über den integrierten Serial Adapter mit dem PC kommunizieren
und viele Pins schalten (mit 5V). Ggf. brauchst du dann den PC gar nicht
mehr weil der evtl. schon die Logik durchführen kann die du brauchst...
Warum brauchst du überhaupt die 5V? Alle bisher vorgeschlagenen Lösungen
können keine Lasten außer einer LED schalten, und die meisten 5V
kompatiblen Eingänge können auch 3,3V.
Blanker schrieb:> Wuerde der FTDI Chip TTL-232R-5V-PCB> (http://de.rs-online.com/web/p/products/0429278/) funktionieren? Wenn> ja, wie stelle ich hier ein das ich 5V Output Signale erhalte? Das ist> mir nicht ganz ersichtlich.
Je nachdem welchen du kaufst haben die 5V oder nicht. Das Teil bringt
aber nicht viel weil da die Flusskontroll-Leitungen nicht rausgeführt
sind, und du da nur serielle Daten drüber schicken kannst, aber nicht
einzelne Pins schalten.
> Kann mir jemand eine Empfehlung fuer einen Konverter geben?
Der I/O Warrior wurde Dir bereits empfohlen. Wenn du etwas selber bauen
willst, dann nimm meine Firmware auf einem Arduino Nano Modul:
http://stefanfrings.de/serial_io/index.html
Danke erstmal fuer eure schnellen Antworten! Ich benoetige auf jeden
Fall die Moeglichkeit die Ausgabe ueber Python zu steuern, ich erklaere
auch gerne warum.
Dr. Sommer schrieb:> Ggf. brauchst du dann den PC gar nicht> mehr weil der evtl. schon die Logik durchführen kann die du brauchst...> Warum brauchst du überhaupt die 5V?
/Offtopic
Der Switch dient als Blanking Einheit fuer einen Protonenbeschleuniger.
D.h. wir lenken den Protonenstrahl mit eienr Kondensatorplatte ab,
welche ueber den Switch geladen wird. Da wir mit dem Protonenstrahl
Muster schreiben wollen, muss das Blanking System am Ende voll
automatisch angesteuert werden. Wir wollen also unser Muster "eingeben",
sodass die Probe automatisch bestrahlt wird. Das Verstellen der Probe
funktioniert bereits automatisch und genauso soll auch das Blanking
System funktionieren um Ueberbelichtung zu vermeiden. Daher benoetige
ich eine Ausgabe um den Switch zu bestimmten Zeiten an- bzw.
auszuschalten.
Mir ist mittlerweile noch ein weiteres Problem eingefallen. Da die
Blanking Einheit circa 6m vom Rechner entfernt steht wird ueber diese
Distanz Spannung abfallen, weshalb 5V wahrscheinlich nicht als Ausgabe
ausreichen. Besser waere also eine Ausgabe von 10V um den Schmitt
Trigger noch zu aktivieren (schaltet ab ca. 3,4V).
Ich gucke mir jetzt mal den I/O Warrior an...
Das Hauptproblem bei einem Teilchenbeschleuniger ist also die Erzeugung
eines 5V-Signals? Uff.
Ist die Ansteuerung vielleicht zeitkritisch? Weil über USB und Python
wirst du vielleicht auf 100ms Genauigkeit kommen. Wenn du genaues Timing
brauchst, geht das z.B. mit Arduino besser.
Wenn es unbedingt Python sein muss, wäre vielleicht auch ein
Raspberry-PI eine Möglichkeit. Da kannst du direkt aus Python heraus die
GPIO-Pins ansteuern. Mit Pegelwandlern kommst du auf 5V oder 10V oder
was auch immer du brauchst.
Wenn Du es lieber bequem hast und der Preis zweitrangig ist: Es gibt
fertige USB/5V-TTL-"Adapterkabel" mit FT232 im Stecker.
Davon kannst Du dann wahlweise die Handshake-Leitungen missbrauchen oder
den FT232 im Bit-Bang-Modus betreiben.
Gibt es unter anderem von FTDI selbst oder z.B. bei Reichelt als DELOCK
83116.
Dr. Sommer schrieb:> Das Hauptproblem bei einem Teilchenbeschleuniger ist also die Erzeugung> eines 5V-Signals? Uff.
Naja nicht so ganz. Das ist halt mein Problem an dem ich sitze, momentan
wird das ganze per Hand gesteuert...
Zeitkritisch ist es nicht wirklich,es sollte schon um die 100ms liegen.
Das Problem ist eher die Zeit bis es fertig sein soll. Daher habe ich
auch nicht mehr wirklich die Zeit noch mit Rapsberry oder Arduino zu
arbeiten.
Wie genau meinst du eigentlich das:
Dr. Sommer schrieb:> Je nachdem welchen du kaufst haben die 5V oder nicht. Das Teil bringt> aber nicht viel weil da die Flusskontroll-Leitungen nicht rausgeführt> sind, und du da nur serielle Daten drüber schicken kannst, aber nicht> einzelne Pins schalten.
Heisst das es ist mir nicht moeglich mit dem TTL-232R-5V zu bestimmten
Zeiten eine Spannung zu erzeugen?
Blanker schrieb:> Heisst das es ist mir nicht moeglich mit dem TTL-232R-5V zu bestimmten> Zeiten eine Spannung zu erzeugen?
Mit einem Adapter, der nur RX/TX rausgeführt hat, kannst du nur serielle
Datenpakete raussenden. Du kannst die Pegel nicht direkt setzen.
"Hmmm" hat hier schon geschrieben mit welchen Adaptern es geht:
Hmmm schrieb:> Davon kannst Du dann wahlweise die Handshake-Leitungen missbrauchen oder> den FT232 im Bit-Bang-Modus betreiben.>> Gibt es unter anderem von FTDI selbst oder z.B. bei Reichelt als DELOCK> 83116.
Das ganze ist natürlich eine ziemliche Frickellösung. Für ordentlich
wäre sowas wie der IOWarrior wesentlich besser.
Blanker schrieb:> Daher habe ich> auch nicht mehr wirklich die Zeit noch mit Rapsberry oder Arduino zu> arbeiten.
Wie kompliziert ist denn das Signal was generiert werden soll? Wenn das
simpel ist kann man da ja ggf. helfen das fix fertig zu machen...
Das Signal das generiert werden soll haengt von der Probe ab. Wenn wir
zum Beispiel drei Striche bestrahlen wollen muss das Signal dann
schalten, wenn die Probe weiterbewegt wird um Belichtung zwischen den
Strichen zu vermeiden. Das ist dann auch nicht mehr meine Aufgabe. Ich
muss es nur hinbekommen, dass der Switch vom PC aus angesteuert werden
kann.
Blanker schrieb:> Wenn wir> zum Beispiel drei Striche bestrahlen wollen muss das Signal dann> schalten, wenn die Probe weiterbewegt wird um Belichtung zwischen den> Strichen zu vermeiden.
Achso, also in Abhängigkeit mit einer weiteren bereits implementierten
Steuerung für die Bewegung?
Warum kannst du dann nicht das Blanking genau so steuern wie bereits die
Bewegung gesteuert wird?
Dr. Sommer schrieb:> Achso, also in Abhängigkeit mit einer weiteren bereits implementierten> Steuerung für die Bewegung?> Warum kannst du dann nicht das Blanking genau so steuern wie bereits die> Bewegung gesteuert wird?
Genau. Das ist eine gute Frage, auf die Idee bin ich bisher nicht
gekommen. Ich werde es mir einmal anschauen, denke aber das es noch
wesentlich komplizierter wird.
Blanker schrieb:> Genau. Das ist eine gute Frage, auf die Idee bin ich bisher nicht> gekommen. Ich werde es mir einmal anschauen, denke aber das es noch> wesentlich komplizierter wird.
Wäre irgendwie etwas komisch, wenn jeder Aktor über sein eigenes
Interface vom PC gesteuert wird... Es gibt hunderte Produkte die die
Entwicklung solch einer Steuerung vereinfachen, wie SPS, NI RIO boards,
NI Interface Boards, und eben Arduinos & Co...
> Ich benoetige auf jeden Fall die Moeglichkeit die Ausgabe ueber Python> zu steuern
Meine I/O Firmware erfüllt diese Anforderung. Python kann wie fast jede
andere Programmiersprache (virtuelle) serielle Ports ansteuern.
> Daher habe ich> auch nicht mehr wirklich die Zeit noch mit Rapsberry oder Arduino zu> arbeiten.
In diesem Fall schlage ich vor, daß du irgendein fertiges I/O Modul
kaufst. Diese werden für die Industrie ihn alle erdenklichen Varianten
zum kauf angeboten.
Also die Kopplung mit der Probe wird nicht funktionieren, zum einen ist
dort kein Pin mehr frei und zum anderen soll das Blanking auch
unabhaengig davon funktionieren.
Ich werde mir daher wohl, wie Hmmm schrieb:
Hmmm schrieb:> Wenn Du es lieber bequem hast und der Preis zweitrangig ist: Es gibt> fertige USB/5V-TTL-"Adapterkabel" mit FT232 im Stecker.>> Davon kannst Du dann wahlweise die Handshake-Leitungen missbrauchen oder> den FT232 im Bit-Bang-Modus betreiben.>> Gibt es unter anderem von FTDI selbst oder z.B. bei Reichelt als DELOCK> 83116.
einen FT232 bestellen. Dann werde ich das Signal verstaerken und hoffen
dass das klappt. Ich werde dann erstmal ein 2Hz Signal versuchen zu
generieren um die Funktionalitaet zu ueberpruefen.