8 Sensoren mit PC verbinden?

(Dieter Wiedmann) 14.01.06 in /de/sci/electronics:

Da haben wir uns wohl missverstanden.

Ich dachte an einen 0815 "USB->ParrallelDrucker"-Adapter. Nicht an einen generellen "USB->Parallel" chip.

Das macht ja nix. der könnte ja auch eine virtuelle Hardware bereitststellen.

Rainer

Reply to
Rainer Zocholl
Loading thread data ...

Hallo,

Johannes Permoser schrieb:

Ja, wird aber nicht allzu genau werden, genaues Timing ist nicht die Paradedisziplin von USB und Windows. Vielleicht noch einmal einen Blick auf ELV #6846948 werfen. Da ist das Timing besser erfassbar, allerdings nicht kontinuierlich.

mfg Björn Schrader

Reply to
Bjoern Schrader

Wäre das Timing am Druckerport besser?

Reply to
Johannes Permoser

Hallo Johannes, ich gehe mal davon aus, dass deine drucksensoren ein analoges signal generieren - also sowas in der form: 1 Volt entspricht wenig druck, 3 volt viel druck. um solche signale einfach mit einem pc auszuwerten solltest du den guten alten game-port bemühen. jeder game-port hat anschlüsse für 2 joysticks mit jeweils 2 achsen - macht also pro game-port 4 analoge eingänge. da du 8 benötigst (und es einfach sein soll) würde ich einfach einen pc mit 2 game-ports ausstatten (günstige soundkarten haben sowas).

dann musst du nur noch die spannung deiner drucksensoren an den eingangspegel des joystick-ports anpassen (maximal 5 volt) - sollte die spannung über 5 volt sein musst du also pro kanal 2 wiederstaende als spannungsteiler vorsehen.

du kommst also locker mit 8 wiederstaenden aus. auf dem pc kannst du die werte einfach ueber die entsprechenden port-register der game-ports einlesen (zumindest bis windows 98 laesst sich sowas mit einem zugriff auf die jeweilige adresse in einer zeile erledigen).

sollten deine drucksensoren lediglich ein druckabhängiger wiederstand sein, hast du es noch einfacher: 5 volt (kommen aus dem game-port) auf den drucksensor, die andere seite an einen wiederstand der den strom begrenzt (1 kOhm sollten reichen - vielleicht liest du dich hier nochmal schlau), das andere ende des wiederstandes auf masse. zwischen wiederstand und drucksensor liegt jetzt eine druckabhängige spannung, die du auf die o.g. eingänge des game-ports legst.

sollte der drucksensor lediglich ein binaeres signal liefern (z.b. high=druck, low=kein druck) kannst du die 8 sensoren (ggfls. ebenfalls mit einem spannungsteiler) kannst du diese auf den parallel-port legen.

wenn du noch fragen hast: in die ng posten.

gruß normen

"Johannes Permoser" schrieb im Newsbeitrag news:dqangs$p2u$ snipped-for-privacy@svr7.m-online.net...

Reply to
Altiparmak

Johannes Permoser schrieb:

Schon, aber die Krücke Betriebssystem bleibt, für >100Hz ist Windows kaum geeignet.

Mit Einschränkungen (immer nur ein Schalter wechselt seinen Zustand) könnte man aber über die Soundkarte eine ganz ordentliche Auflösung realisieren, Programme, die die Soundkarte als einfaches Speicheroszilloskop nutzen, gibts einige.

Gruß Dieter

Reply to
Dieter Wiedmann

"Johannes Permoser"

gedacht ich nehm den Com-Port mit einem 9-pol. D-Sub

überhaupt angeschlossen ist.

geht. (http://www.c-plusplus

oder aus) serialisiert und sie dann über weniger

werden, so die riesen Ahnung von Elektronik hab ich

A) 8Signale + V- + V+ -> 2Multiplexer mit 8 Eingängen -> Soundkarte vom PC. B) Mit V+ und V- ein Synchonisationssignal basteln. Bei Stereo kannst du dann z.B. 4 Sensoren auf einen Multiplexer leiten. Als Synchronisationssignal dann z.B. so: Links: V+,S1,V-,S2,V-,S3,V-,S4 Rechts: V+,S5,V-,S6,V-,S7,V-,S8 C) Dann die Peaks herausnehmen und einige Samples im Umkreis für einen Mittelwert mitnehmen. D) Mit Hilfe von Fourier und Laplacetransformation über Testcases statistische Rücktransformungsalgorithmen entwickeln, welche die Verzerrungen wieder Glattbügeln. Alterniativ geht das auch mit einer Diskriminanzanalyse was wahrscheinlich einfacher ist.

Alles andere ist Meiner Meinung nach für die Klasse12 zu viel. Vorteil dieser Methode: Wenn kein PC da ist reicht ein MP3-Player als Recorder.

Reply to
Makus Gr0n0tte

Links: V+,V-,V-,V-,V-,V-,V-,V- Rechts: S1,S2,S3,S4,S5,S6,S7,S8

Sinnvoller um die Synchronisation zu vereinfachen, allerdings bekommt man so nur differenzen, aber da ich grad gelesen habe dass du eh nur digitale Schalter auslesen willst reicht das ja völlig und macht das ganze noch viel simpler.

Reply to
Makus Gr0n0tte

Wenn ich das also richtig verstanden habe, wird das Ganze dann in den Line-in der Soundkarte gesteckt. Eigentlich nicht schlecht, da jeder PC so etwas haben sollte. Könntest du die Geräte, die ich dafür brauche noch mal genau aufschreiben (evtl. auch mit Bezugsquellen) und die Arbeitsschritte nochmal genau erklären.

Welche Abtastrate kann ich mit dieser Methode erreichen? Wie schwer ist das zum Zusammenbauen? Wie schwer ist die Weiterverarbeitung dieses Signals am PC?

MfG, Johannes Permoser

Reply to
Johannes Permoser

Hi Johannes,

"Johannes Permoser" schrieb...

Wie wär das?

- billigen USB- Joystick besorgen, !!!Wichtig: schon jetzt mit Deiner Software testen ("aha- es zuckt")!!!

- Joystick schlachten,

- dessen Anschlüsse für Drehregler und Tasten als Sensoren mißbrauchen:-))

Die Harsware ist quasi fertig und -falls es vernünftige Software gibt- auch leicht abzufragen. Mir schwebt da Quickbasic vor, aber ich bin _kein_ Programmierer!

Wenn Du statt eines Drehwiderstands z.B. einige Widerstände in Reihe nimmst kannst Du bei Kurzschluß der Anzapfungen bestimmte Werte bekommen, die Du per Software auswertest.

So gibst Du kaum Geld aus und wenn's nicht so klappt kannst Du immer noch andere, teurere Sachen testen. Alles in ein schickes Gehäuse und fertig bist Du.

HTH,

Hans

Reply to
Hans Alborg

Auch keine schlechte Idee. mal schaun ob ich was finde.

Danke für den Tip, Johannes Permoser

Reply to
Johannes Permoser

"Johannes Permoser"

der Soundkarte gesteckt. Eigentlich nicht schlecht,

brauche noch mal genau aufschreiben (evtl. auch mit

Zähler 4060, C mit 12pF, einmal R mit 10k, einmal Rregelbar mit 0 bis 250kOhm

2 mal Multiplexer 4051 ca 2 mal 200uF koppelkondensatoren und einen 9V Block und auf Galvanische Trennung kannst du vermutlich verzichten.

Deine Signale müssen natürlich einen passenden Pegel für die Soundkarte haben. Vss=1,2V IMHO

Schaltplan kann ich mailen.

das ist ein Kompromiss zwischen Genauigkeit und "Abtastrate". Bei meiner Übertragung von 3 verschiedenen analogen Signalen komme ich auf bis zu 4kHz ohne größere Abweichung. Das sind bei 8 Kanälen dann halt 500 Hz.

Löten kannst du ja.

Das hängt von deinen Programmierfähigkeiten ab ;-) aber ich denke wenn das wirklich nur Digitale signale sind ist das sehr einfach.

lg,

Markus

BTW: Bei diesem Aufbau musst du unter Umständen für deine Schalter eine künstliche Masse für den Multiplexer erzeugen. oder evtl einfach Masse des MUX an einen Pol des Schalters. Je nachdem welche Sicherheitsrichtlinien das einhalten soll.

Reply to
Makus Gr0n0tte

Wenn das wirklich nur digitale signale sind fällt mir noch eine andere Lösung für die Soundkartenvariante ein.

Bei einem digitalen Schaltvorgang hast du ja die Flanke eines Rechtecks an einer Seite.

Du könntest für alle 8 Kanäle Bandpässe entwerfen, welche 8 unterschiedliche Frequenzgänge haben. Dadurch kann man dann hinterher auf jegliche Synchronisation verzichten, da anhand der Fourierkoeffizienten der Kanal bestimmt werden kann. Anhand der Vorzeichen sollte man dann auf ein oder aus schließen können. Das geht selbst dann noch wenn mehrere Kanäle dann gleichzeitig schalten, weil die Vorzeichen bei unterschiedlichen Frequenzen dann immer noch aussagekräftig sein müssten.

lg,

Markus

Reply to
Makus Gr0n0tte

Äh, ja. In die luftschau ^^ (ich versteh nix)

Was ist denn ein Bandpass?

Auch hier wieder die Standardfragen: Wie sieht's mit der Genauigkeit und der max. möglichen Abtastrate aus?

Danke, für die Antwort, Johannes Permoser

Reply to
Johannes Permoser

Das wird ja immer origineller. Was sprach noch mal gegen den Parallelport?

Lutz

--
Temperatur und mehr mit dem PC messen - auch im Netzwerk: http://www.messpc.de
jetzt neu: Ethernetbox für direkten Anschluss der Sensoren im Netzwerk
 Click to see the full signature
Reply to
Lutz Schulze

"Lutz Schulze"

;)

Is doch langweilig ^^

Reply to
Makus Gr0n0tte

Naja, wenn du (im Idealfall) einen Schalter öffnest/schließt, hast du ja eine sofortige Spannungsänderung von z.B. 0V auf deine Versorgungsspannung (oder umgekehrt). Dieser Sprung der Spannung wird als Flanke bezeichnet. Und von 0 auf xV und später wieder zurück auf 0 hat dann die Form eines Rechteckes. Wenn man nun so einen Sprung im Frequenzbereich betrachtet, hat dieser Komponenten diverser Frequenzen. (Jedes Signal lässt sich aus der Überlagerung von Sinusschwingungen unterschiedlicher Frequenz und Amplitude erzeugen)

Ein Filter. Dieser Filter lässt nun nur Frequenzen in einem bestimmten Bereich (der abhängig vom Aufbau des Filters ist), durch. Er schneidet also alles oberhalb und unterhalb seiner Grenzfrequenzen ab und lässt nur den Bereich zwichendrin passieren.

Andreas.

Reply to
Andreas

Noch ne Fragen ( @Johannes):

Können die "Schalter" in beliebiger Reihenfolge und auch mehrere gleichzeitig ausgelöst werden, oder immer nur sequentiell (und in der gleichen Reihenfolge)? (Da du irgendwo mal was von Beschleunigungsversuche geschrieben hast, musste ich an eine Strecke mit mehreren Lichtschranken denken,... diese würde dann ja immer nur eine nach der anderen ausgelöst. Damit wäre eine Unterscheidung ja nicht zwingend erforderlich, da man weiß, dass der n-te Impuls auch zur n-ten Lichtschranke gehört.)

So ganz verstehe ich das noch nicht - oder, .. naja, ich überlege mal,.. ja, hat glaube ich geholfen:

Die Multiplexer sollen für ein zeitliches Multiplexing zwischen V+, V- und den Signalen der einzelnen Schalter sorgen. Der Multiplexer (vereinfacht auf einen Kanal) wird über den Zähler getriggert. Die konstanten Spannungen sollten ungleich V+ bzw V- sein, so dass eine Unterscheidung möglich ist. Die Referenzspannungen dienen dazu, um später wieder den Stream zu demultiplexen, also die einzelnen Schalterstellungen aus diesem herausschneiden zu können.

Aber muss man nicht noch irgendwie aufpassen, dass man keinen zu großen Gleichanteil hineinbekommt. Wenn die Signale immer / über längere Zeit das gleiche Vorzeichen haben und oft ungelich 0V sind, müsste sich der Koppelkondensator (in der Soundkarte) doch ziemlich schnell aufgeladen haben.

Naja, auch noch ne Variante: Die Spannung jedes Tasters wird moduliert, jeder bekommt also eine andere Frequenz. Damit lassen sich die Taster dann unterscheiden. Wenn man was in der Ecke von 10KHz nimmt, sollte es doch möglich sein, da ne ordentliche zeitliche Auflösung hinzubekommen.

Im Prinzip ist es ja ähnlich zu deiner Bandpass-Variante, nur dass man die einzelnen Frequenzen extra erzeugt und nicht aus der einen Flanke herausfiltert (sofern man denn gleich nen ordentlichen Sinus erzeugt und nicht auch mit einem Rechteck anfängt,...). Hätte aber irgendwie Bedenken, dass das mit der einen Flanke wirklich so gut funktioniert (rein subjektives Gefühl).

Aber die Unterscheidung über die Frequenz zu machen, erscheint mir doch etwas unnötig und aufwändig (da würde ich ja dann doch lieber nen Mikrokontroller nehmen...), daher mal folgende Variante:

- Alle Schalter schalten beim Schließen eine Spannung mit wechselndem Vorzeichen und einer ausreichend hohen Frequenz auf den Eingang. Am Einfachsten also ein Rechtecksignal.

- Das Multiplexing wird nicht über Zeit oder Frequenz realisiert, sondern über die Spannung.

(drei Schalter) R1(a,b) ist ein Poti F-Gen der Frequenzgenerator

GND o-----+-----|F-Gen|---+ | | R1a +----+ | | | Line In o---- + R |

Reply to
Andreas

.. oder Gamepad..

auch

Reicht ja, wenn ein Treiber dabei ist.. In der Windows-API gibt es dann z.B. joyGetPosEx, um die Tasten und sofern vorhanden auch Achsenstellungen abzufragen. Sollte mit allen installierten Gamedevices funktionieren. (Es gibt auch noch ne Variante mit Messages, da ist die zeitliche Auflösung aber sicher deutlich schlechter.) Alternativ gibt es in DirectX, genauergesagt DirectInput entsprechende Funktionen. (Kannst du irgend eine Programmiersprache?)

Das Problem / Einschränkung ist dabei aber immer noch die Zeitliche Auflösung. Du kannst nur abfragen, ob eben gerade eine Taste gedrückt ist oder nicht, es gibt aber keinen Zeitstempel, dem du den genauen Zeitpunkt des Ereignisses entnehmen kannst. Du hast in Win nun aber keine Garantien, dass dein Programm auch wirklich alle n ms Rechenzeit bekommt, und damit die Abfrage regelmäßig durchführen kann. Prinzipiell kannst du mit timeSetEvent hinbekommen, dass deine Funktion jede ms aufgerufen wird, und mit QueryPerformanceCounter kannst du die aktuelle Zeit auch sehr genau bestimmen. Es wird aber immer wieder vorkommen, dass das angegebene Zeitintervall (beliebieg) über oder unterschritten wird. Wenn deine Schalter-Impulse sehr kurz sind, könnte auch sicher der eine oder andere mal verloren gehen. (Ob und welche Schwankungen durch die USB Schnittstelle noch auftreten, weiß ich nicht.)

Andreas.

Reply to
Andreas

Yo, mancher Joystick liegt noch irgendwo rum :-)

Joke: ein großes Gehäuse nehmen und noch einen Stein reinstecken, macht eine bessere Note ;-)

Hans

Reply to
Hans Alborg

(Johannes Permoser) 14.01.06 in /de/sci/electronics:

Ich glaube das ist jetzt wirklich "in", oder? Man streicht das weg auf das man sich bezieht, das einem Leser nutzen würde und lässt "irgendwas" stehen, Hauptsache man hat was weggestrichen...?

Rainer

Reply to
Rainer Zocholl

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.