Forum: Mikrocontroller und Digitale Elektronik Daten über Audiokabel versenden


von trakuna (Gast)


Lesenswert?

Hallo zusammen,

für ein kleines vorweihnachtliches Projekt suche ich gerade nach einer 
Möglichkeit, Daten über ein Audiokabel zu senden. Wichtig ist hierbei, 
dass die Daten tatsächlich als Audiosignal kodiert sein müssen, da sie 
von einem Audioplugin einer DAW generiert werden. Der Rückweg vom AVR 
zur DAW geschieht dann ebenfalls auf diese Weise.

Meine bisherigen Überlegungen haben mich auf das Verfahren der 
"Frequenzumabtastung" gebracht, wie es auch bei den alten analogen 
Modems verwendet wurde.

Problem hierbei ist, dass ich nicht weiß, wie ich mit einem 
ATmega8@16MHz solch ein Signal zuverlässig abtasten soll bzw. wie ich es 
schnell genug generiere. Hat da jemand eventuell Erfahrungen oder Ideen?

Viele Grüße und einen schönen Restnikolausabend
trakuna

von Frank K. (fchk)


Lesenswert?

Um welche Datenmengen geht es denn? Wenn es nur wenige Bytes sind, ist 
DTMF eine Option. Dafür gibts fertige Chips:

http://www.hestore.hu/files/mt8880.pdf

Wenn Du Dich entschließen könntest, Deinen Atmega8 gegen einen dsPIC33F 
(gibts auch im 28 SDIP) einzutauschen, geht das auch in Software:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en536955

Dann kannst Du aber auch ein Softmodem bei Dir einbauen. Microchip hat 
auch dafür fertige Bibliotheken:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023590

Mit 40 MHz, 16 Bit und einer extra 56 Bit DSP-Einheit bekommst Du da 
halt deutlich mehr Leistung fürs gleiche Geld.

fchk

von Erwin (Gast)


Lesenswert?

Was hat die "Deutsche Abfallwirtschaft" mit
vorweihnachtlichen Projekten zu tun?

Spaß beiseite:
Wenn es nur um ein-zwei Bytes mit genügend langsamer
Übertragung (sagen wir mal 300 Bd) geht, kann so ein
AVR-Komparator-Eingang in Zusammenarbeit
mit einem Timer die Sache erledigen.

von Christof Rieger (Gast)


Lesenswert?

Mit dem comperator des AVR kann man bestimmt gut Nulldurchgänge zählen 
und auch die Zeit zw. Zwei nulldurchgänge bestimmen. Ein Code mit 4 
Frequenzen bis 20 kHz sollte der AVR mühelos auswerten können. Ebenso 
sollte er einen solchen Code erzeugen können. Ggf. Einfach ein Filter 
hinter einem Ausgang schalten und auf die Leitung geben.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?


von kopfkratzer (Gast)


Lesenswert?

kopfkratz
Welche Frequenz und welche Modulation ?
Frage nach Datenmenge wurde schon genannt.
Ich würde FM Modulation bevorzugen und z.B. via PWM das Signal 
generieren und da ich nicht weiß was DAW bedeutet kann ich nur raten und 
Dir den ADC als Eingangsquelle nennen.

von Erwin (Gast)


Lesenswert?

Da können wir jetzt noch viele Vorschläge machen.

Wenn der TO nicht sagt, wieviel Daten er in welcher
Zeit austauschen möchte, ist das vergebeliche Mühe...

von trakuna (Gast)


Lesenswert?

Vielen Dank für eure Antworten.
Die Datenrate kann ziemlich gering sein, round about 50 Bytes/Sek. 
sollten reichen.

Ich habe mir das SoundRX-Projekt angesehen und würde zumindest die 
Komparatorschaltung mit dem LM358 nutzen. Eine entsprechende Software, 
die ich dann nach erstem Überfliegen nur noch in kleinen Details 
anpassen müsste, gibt es hier:
http://arms22.googlecode.com/files/SoftModem-005.zip

Die Frequenzen wären bei dem Projekt 4900 Hz (LOW) bzw. 7350 Hz (HIGH). 
Baudrate liegt bei 1225 Baud.

Oh, für das Projekt soll ein Arduino Leonardo benutzt werden, das wäre 
evtl. noch erwähnenswert. Wenn alles läuft, route ich eine eigenständige 
Platine dafür, aber zum prototypen muss das erstmal reichen...

von -gb- (Gast)


Lesenswert?

So ein Tipp aus der Ecke: Steinberg's Wavelab kann aus einer Folge ein 
DTMF Signal als WAVE generieren. Hilft gfs.

von Erwin (Gast)


Lesenswert?

> Die Frequenzen wären bei dem Projekt 4900 Hz (LOW) bzw.
> 7350 Hz (HIGH).
> Baudrate liegt bei 1225 Baud.

Ein LOW-Bit  = 4 * 204 µs - Perioden
Ein HIGH-Bit = 6 * 136 µs - Perioden

Das ist mit einem Mega8 machbar:

Audiosignal über ein C an einen Analog-Comparator-Eingang,
beide Analog-Comparator-Eingänge über Widerstände mit der
halben Betriebsspannung verbinden.

Analog-Comparator-Interrupt auf z.B. negative Flanke.

Im Interrupt einen Zähler auslesen und den Zähler wieder
auf Null setzen.

Aus der Abfolge der Zählerstände lässt sich der serielle
Signalverlauf wieder zusammensetzen.

von c-hater (Gast)


Lesenswert?

trakuna schrieb:


> für ein kleines vorweihnachtliches Projekt suche ich gerade nach einer
> Möglichkeit, Daten über ein Audiokabel zu senden. Wichtig ist hierbei,
> dass die Daten tatsächlich als Audiosignal kodiert sein müssen

Nun ja, wenn das Audiokabel genug Bandbreite bietet, um auch den nahen 
Ultraschallbereich noch zu übertragen, ist das eigentlich kein großes 
Problem.

Da nimmt man z.B. ca. 17kHz und 19kHz als Träger für die Daten. Die 
tastet man im Wechsel, also z.B. 0-Bit->17Khz, 1-Bit->19kHz.

Auf Senderseite kostet das nur einen Timer im Fast-PWM-Mode mit Top=ICR 
oder OCRxA und eine ISR für die Zykluszeit, die jeweils den Timer-Top 
aktualisiert. Und ein wenig primitive Hardware zu Addition des 
Datensignals mit dem Audiosignal.

Beim Empfänger hat man die Wahl, ob man die Dekodierung in Software 
erledigt oder Hardware dafür bemüht.

Decodierung in Software geht mit einer Goertzelbank mit zwei Kanälen. 
Durch das Prinzip der Übertragung mit zwei Trägern kann man (bei klug 
gewählten exakten Trägerfrequenzen) nicht nur ziemlich zweifelsfrei 
feststellen, ob überhaupt ein Datensignal anliegt, sondern dieses auch 
noch einfachst decodieren.
Allerdings stellt der Filter schon eine relativ hohe Rechenzeitbelastung 
dar. Allerdings noch sehr weit weg von wirklich kritischen Werten. Und 
sie liegt vor allem auch weit unter den Anforderungen einer 
zuverlässigen DTMF-Übertragung, denn dort muß man eine viel geringere 
Bandbreite für die Filter erzielen und braucht außerdem mindestens 8, 
besser 16 Kanäle in der Görtzelbank.

Angenehmer Nebeneffekt: Im Unterschied zu DTMF-Gedüdel ist der 
Ultraschallkram für erwachsene Menschen nicht hörbar. Allenfalls 
Mischprodukte mit dem Audiosignal könnten hörbar werden. Das kriegt man 
dann dadurch in den Griff, daß man das Datensignal im Pegel so weit 
absenkt, wie bei der geforderten Datenrate und Übertragungssicherheit 
irgend möglich.

von Wayne M. (vibra)


Lesenswert?

Wurde früher als Aufzeichnungsformat bei Homecomputern(VC20  Atari  
usw.)benutzt,da reichten dann auch 1Mhz Taktfrequenz.
Dazu fällt mir dann noch Hypertape ein - Biphasencodierung.
mfg

von Stefan F. (Gast)


Lesenswert?

Schau mal in die technischen Unterlagen der Commodore 64 Datasette. 
Dieser Rechner konnte Programme auf einen Kassettenrekorder speichern 
und wieder laden. Und das mit nur 1 Mhz Taktfrequenz.

von -gb- (Gast)


Lesenswert?

ja, die Datasette sollte für 50 Bps ausreichen ;-)

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.