PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenübertragen per Audiobuchse?



amrosik
10.11.2014, 20:18
Guten Tag, ich wollte mal nachfragen ob jemand eine realistische Bewertung zum folgenden abgeben kann:

Einfaches Beispiel: man möchte z.B. 100 LEDs einzeln direkt über den PC ein- und auschalten können... oder vielleicht 100 Linearaktoren? (der eine oder andere weiß worauf ich hinaus will)

Eine Software mischt 100 vielfache einer Grundfrequenz in der Soundkarte, und gibt diese über die Audiobuchse aus. Das Gesamtsignal geht dann in eine analoge Filterbank (Schwachstelle?), und regt 100 verschiedene Filter an,
die einzeln für jedes dieser Einzelsignale designt sind. Je nach dem ob das Signal für LED Nr. 42 dabei ist oder nicht, spricht Filter Nr. 42 an, und schaltet über eine Transistorschaltung den LED an.

Kein Fourieranalyse per zwischengeschaltetem DSP odersowas nötig weil analog, und somit auch keine große Schaltverzögerung.

Ich kenne mich mit analogen Filtern überhaupt nicht aus, wahrscheinlich wird dort genau deshalb das größte Problem liegen:),
aber man kann sich ja die Frequenzanteile am PC optimal zusammensuchen, sodass sie perfekt auf die Filterbank abgestimmt sind.

Es wird wohl eine kleine Verzögerung geben, denn die Filter müssen ja auch erstmal warm werden sozusagen, bzw. sich einschwingen.

Wäre geil wenn sowas funktioniert, aber um mal auf dem Boden der Tatsachen zu bleiben: Gibt es bessere Wege, direkt über den PC viele einzelne Aktoren unabhängig zu schalten?

- - - Aktualisiert - - -

Ich frag mich grade, was mich dazu getrieben hat, den Thread im Softwareforum zu öffnen, wobei doch die Fragestellung eher hardwarelastig ist

askazo
10.11.2014, 21:04
Theoretisch würde das gehen. Man muss sich halt 100 verschiedene Bandpässe zurechtbasteln, wobei die Bandbreite der jeweiligen Filter möglichst eng sein sollte und die einzelnen Frequenzen so weit auseinander liegen sollten, dass eine vernünftige Signaltrennung mit den Filtern möglich ist.

Praktisch würde man für sowas aber eher eine serielle Schnittstelle (USB) nehmen...

Gruß,
askazo

PICture
10.11.2014, 21:20
Hallo!

... z.B. mit kaskadierten Schieberegister. ;)

oberallgeier
11.11.2014, 09:19
... direkt über den PC ein- und auschalten ... und gibt diese über die Audiobuchse aus ...Hoffentlich trägt das jetzt ein bißchen zur Erhellung bei. Vor Jahren (eher Jahrzehnten) hatte ich als Datenspeicher an meinem CP/M-Rechner nen Kassettenrekorder. Eingang war die Audiobuchse. An dem Treiber hatte ich selbst noch rumgepopelt, aber was da alles läuft habe ich seit dieser informationstechnologischen Urzeit vergessen. Klar - es waren so grundlegende Dinge wie die Modemtechnologie. Immerhin weiß ich mit Bestimmtheit, dass die Aufzeichnung der Daten einwandfrei funktionierte - ansonsten hatten wir diese Geschichte als spanabhebende Datenverarbeitung bezeichnet - die Bänder der Kassetten waren halt ziemlich schnell hinüber.

Andree-HB
11.11.2014, 12:25
als spanabhebende Datenverarbeitung bezeichnet

you make my day ! :-)

Peter(TOO)
11.11.2014, 13:51
Hallo,

you make my day ! :-)
Du scheinst die 14" Wechsel-Festplatten (60er/70er Jahre) nicht mehr zu kennen, da waren Headcrashs an der Tagesordnung.
Das wurde auch schon als Spanabhebende Datenverarbeitung bezeichnet.

witkatz
11.11.2014, 14:17
... Eine Software mischt 100 vielfache einer Grundfrequenz ... und regt 100 verschiedene Filter an ... Ich frag mich grade, was mich dazu getrieben hat, den Thread im Softwareforum zu öffnen
Im Softwareforum bist du schon deshalb richtig, weil man das Frequenzmultiplexverfahren (http://de.wikipedia.org/wiki/Frequenzmultiplexverfahren) meistens mit Signalprozessoren realisiert, also mit Software. Es ist wohl das grundlegende Prinzip von ADSL.

Peter(TOO)
11.11.2014, 17:07
Hols der Geier,

Hoffentlich trägt das jetzt ein bißchen zur Erhellung bei. Vor Jahren (eher Jahrzehnten) hatte ich als Datenspeicher an meinem CP/M-Rechner nen Kassettenrekorder. Eingang war die Audiobuchse. An dem Treiber hatte ich selbst noch rumgepopelt, aber was da alles läuft habe ich seit dieser informationstechnologischen Urzeit vergessen. Klar - es waren so grundlegende Dinge wie die Modemtechnologie. Immerhin weiß ich mit Bestimmtheit, dass die Aufzeichnung der Daten einwandfrei funktionierte - ansonsten hatten wir diese Geschichte als spanabhebende Datenverarbeitung bezeichnet - die Bänder der Kassetten waren halt ziemlich schnell hinüber.

Vermutlich KCS
http://de.wikipedia.org/wiki/Kansas_City_Standard

War ein sehr verbreiteter Standard.

MfG Peter(TOO)

- - - Aktualisiert - - -

Hallo,

Eine Software mischt 100 vielfache einer Grundfrequenz in der Soundkarte, und gibt diese über die Audiobuchse aus. Das Gesamtsignal geht dann in eine analoge Filterbank (Schwachstelle?), und regt 100 verschiedene Filter an,
die einzeln für jedes dieser Einzelsignale designt sind. Je nach dem ob das Signal für LED Nr. 42 dabei ist oder nicht, spricht Filter Nr. 42 an, und schaltet über eine Transistorschaltung den LED an.

Es wird wohl eine kleine Verzögerung geben, denn die Filter müssen ja auch erstmal warm werden sozusagen, bzw. sich einschwingen.

Im Prinzip ist das Stand der Technik von vor 40 Jahren.

Allerdings wird das mit den 100 Kanälen auf 20kHz Bandbreit eher nichts.

Filter haben eine Bandbreite, d.h. sie sprechen nicht nur auf die gewünschte Frequenz an, sondern auf einen Frequenzbereich.

Daraus ergibt sich dann der Kanalraster. Du musst die zweite Frequenz so legen, dass sich die Filterbereiche nicht überlappen.
Damit bekommst du aber nur eine endliche Anzahl Kanäle auf einer festgelegten Bandbreite unter.

Ein weiteres Problem ist, dass einfache Schwingkreise auch auf ganzzahlige vielfache ihrer Grundfrequenz ansprechen.
Dann bekommst du nochmals weniger Kanäle unter (Wäre sicher noch eine nette Aufgabe, ein Programm zu schreiben, welches die optimalen Frequenzen und Kanalzahlen berechnet).

Die Ansprechzeiten sind recht unterschiedlich. Wenn der Schwingkreis 5 Perioden zum Einschwingen benötigt, hast du bei 10Hz ein andere Ansprechzeit als bei 10kHz.

Es gibt natürlich noch andere Filter als Schwingkreise, welche sehr schmalbandig sind, aber eben auch wesentlich aufwändigere Hardware benötigen. Zudem sind die meistens wellig und haben dadurch noch Seitenbänder.

Der Aufwand mit einem DSP wird da sehr schnell mit der Kanalzahl einfacher!
Dann kann man aber auch einen µC verwenden und die Daten seriell übertragen. Die verschiedenen Verfahren, dies als Töne zu übertragen, kann man bei der Modemtechnik nachschlagen.

Ich kann mich nicht erinnern 100 Kanäle, nach dem Tonverfahren wie du es dir vorstellst, im Audiobereich je gesehen zu haben. Das waren, wenn es hoch kommt, 10-20.

Das Tonwahlverfahren beim Telefon benutzt 8 Frequenzen, welche eine 4x4 Matrix bilden. Immer zwei Töne zusammen bilden ein Zeichen:
http://de.wikipedia.org/wiki/Mehrfrequenzwahlverfahren#Technik
Die krummen Frequenzen ergeben sich aus der Forderung, keine ganzzahligen Vielfache zu haben.

MfG Peter(TOO)

Technipion
12.11.2014, 19:02
Hallo amrosik,
geht es dir um eine kommerzielle Anwendung oder geht's nur um den Lerneffekt?

Wenn du bloß eine kleine Spielerei basteln willst, hat PICture mit dem Schieberegister gar nicht so Unrecht. :D
Das Audiokabel hat ja vermutlich Stereo, also könntest du einen der Ausgänge als Taktgeber nutzen und den anderen als Datenleitung. Bloß die Schaltzeiten wären damit nicht gerade die schnellsten... Um die Konfiguration der Ausgänge zu ändern, müsstest du die JK-MS-FlipFlops clearen und 100 neue Bits einschieben.
Es wäre auf jeden Fall mal einen Versuch wert :)
Gruß Technipion

PICture
12.11.2014, 19:30
Wenn du bloß eine kleine Spielerei basteln willst, ...

... dann könnte man anstatt Schieberegister einfache Zähler benutzen und per nur eine Leitung entsprechende Anzahl Impulsen schicken um gewünschten Zustand der Ausgänge zu haben. Das habe ich vor zig jahren als Profi im Geräten verwendet um Leitungszahl stark zu reduzieren. Ich denke, dass es in jedem Fall einfacher und schneller als 100 analogen Filter wäre. ;)

amrosik
12.11.2014, 20:32
Vielen Dank für die bisherigen Replies.
Also es ist ja von der Anwendung her nicht als wirkliche Informationsübertragung gedacht, sondern nur zum reinen Schalten. Ich stell mir das so vor(auch wenn es bisher nur eine Fantasie),
dass man am PC eine Koreographie komponiert, ähnlich wie mit einem Notenprogramm, und diese Koreographie in Bewegungsbefehle konvertiert, und diese dann als Audiodatei abspeichert.
Die Koreographie lässt sich dann vom tragbaren Mp3 Player oder änhliches ausführen.

dann könnte man anstatt Schieberegister einfache Zähler benutzen und per nur eine Leitung entsprechende Anzahl Impulsen schicken um gewünschten Zustand der Ausgänge zu haben.
Ist auf diese Weise simultanität möglich?

Um wie von euch vorgeschlagen 100 getrennte Schaltkanäle zu umgehen, reichen dann genaugenommen sogar 6 Kanäle, um 6bit zu erzeugen, denn 64 Schaltwege reichen auch aus für mein Vorhaben:-({|=.
Richtig? Falsch. Denn 6 bit sind zu wenig, wenn wir Simultanität wollen. Also die 64 Schaltwege müssen uabhängig beschritten werden können = 64 bit, auch wenn manche Bit-Stellungen nur sehr selten oder garnicht auftreten.
Aber man könnte zumindest das Stereo verwenden, um die Filterbank selbst in 2 Teile zu trennen. Dann hat man 2x32bit. Auf diese Weise ließen sich die Frequenzabstände wenigstens verdoppeln. Oder das schafft zumindest Freiraum für eine geschickte Wahl der Frequenzen.

Zum Thema Schaltzeit: Wenn sich das Einschwingen eines Filters von einem anderen unterscheidet, dann schlägt sich das doch nur in verschiedenen Schaltverzögerungen nieder. Das wird dann dazu führen, dass manche Bits früher als andere gesetzt werden, und dadurch es zwischenzeitlich zu einem falschen Bewegungsbefehl kommt.
In diesem Fall sollte es doch kein Problem sein, softwareseitig einfach den Schaltbefehl früher oder später zu geben, damit alle synchron sind. Da wären halt einpaar kleine Messungen erforderlich... oder einfach nur rumprobieren.

Um die generelle Schaltverzögerung komplett auszulöschen, könnte man doch zusätzlich alle Schaltimpulse softwareseitig früher geben. D.h bei der Konvertierung der Komposition des Notenprogramms in die Koreographie bzw. dem Bewegungsplan wird einfach generell jede Änderung eines Bitmusters einpaar Millisekunden früher ausgeführt.

Peter(TOO)
13.11.2014, 00:52
Hallo,

Um die generelle Schaltverzögerung komplett auszulöschen, könnte man doch zusätzlich alle Schaltimpulse softwareseitig früher geben. D.h bei der Konvertierung der Komposition des Notenprogramms in die Koreographie bzw. dem Bewegungsplan wird einfach generell jede Änderung eines Bitmusters einpaar Millisekunden früher ausgeführt.

So ganz funktioniert das dann nicht, du hast da immer eine gewissen Jitter.

Als Beispielrechnung:
Das Filter schaltet irgendwann zwischen 4 und 8 Perioden des angelegten Signals mal durch. Das ist rein Zufällig.

Bei 1 kHz liegt die Zeit also zwischen 4 und 8 ms.
Bei 10kHz zwischen 0.4 und 0.8 ms.
und bei 100Hz zwischen 40 und 80 ms.

(Dies ist ein weiter Grund, wieso man so etwas heute lieber mit einem DSP macht.)

MfG Peter(TOO)

amrosik
16.11.2014, 18:36
OK, ja das war fast vorhersehbar.

Es ist nun so, dass ich für meine Anwendung eine (Nutz-)Datenrate von mindestens 32kbit/s benötige, um eine zeitliche Auflösung von 1ms zu erreichen. Grund (korrigiert mich wenn ich falsch liege):

32-bit kommen deshalb zustande, da ich durch unsere vorherige Diskussion versucht habe, die Datenredundanz zu reduzieren. Es wären erst 64-bit nötig, um 64 Schalter unabhängig zu schalten. Dies ist aber nicht unbedingt notwendig.
Meine Anwendung besteht aus 4 Reihen mit jeweils durchschnittlich 16 Schaltern. Innerhalb jeder Reihe müssen 2 Schalter unabhängig voneinander geschaltet werden können (wir haben sozusagen 2 Cursor pro Reihe).
Um sich ein Bild zu machen, stellt euch einfach eine Instrumentsaite vor. Für diese braucht man einen Finger der den Ton hält, und einen der den nächsten präpariert.
Bei 16 möglichen Schaltern pro Reihe (Saite) macht das (etwa) 4 bit pro Cursor. D.h. 8 bit pro Reihe, also 4*8 = 32 bit Information.
Desweiteren sollte ein 32-Bit-Muster innerhalb von 1 ms refresht werden. Somit benötigt man eine Nutzdatenrate von 32kbit/s.
Da müssten dann noch Prüfbits und weiß-nicht-was dazu...

...Und wenn ich mich nicht irre, krieg ich mit dem PC höchstens eine Samplerate von 44kHz hin.
Angenommen wir vergessen die Multiplex-Methode, und machen das seriell per Audiobuchse, dann benötigen wir (wie von euch vorgeschlagen wurde) im einen Kanal eine Rechteckfunktion von sagen wir mal 40kHz, die Nutzdaten und Header-Zeugs enthält. Ich kann mir nicht vorstellen dass diese Rechteckfunktion bei 44kHz Samplerate noch schön aussieht oder überhaupt produziert werden kann. Mit Audacity sind z.b. nur etwa 20kHz möglich.

Wenn die Datenrate für serielle Übertragung auf diese Weise durch die Samplerate begrenzt ist, dann fällt seriell (per Audio) raus.
Und jetzt eine Frage:
Falls die Datenrate für serielle Übertragung von Informationen durch die Samplerate begrenzt ist, lässt sich diese Aussage auch auf die Multiplexmethode verallgemeinern? , sodass man sagen kann: Bei diese Samplerate ist keine höhere Informationsübertragung als X kbit/s möglich, auf welche Weise sie auch immer stattfindet (seriell, parallel, schwarze Magie...)?
Weil dann wäre die Analoge-Filtermethode sowieso raus, zumindest wenn es um 40kbit/s geht.


In diesem Fall gilt Plan B:

Sich mit 4ms zeitlicher Auflösung zufrieden geben. Also 8kbit/s. Wieviel Header benötigt man, um 8kbit/s Nutzdaten sicher zu übertragen? Bleibt man da unter 20kbit/s? Und ist es überhaupt möglich mit Audiobuchse seriell 20kbit/s zu übertragen?
Ist in diesem Fall seriell trotzdem besser als parallel, auch wenn man digitale Filter benutzt? Wo liegt deren Latenzzeit?