www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MFSK mit AVR?


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.

Früher gabs ja mal AFSK. Ganz früher bei Modems fürs Telefonnetz, bei 
Packet Radio "ein paar Jährchen" länger. Ich glaub, AFSK-PR gibts sogar 
heute noch.
Ein Chip dafr war der TCM3105.

Ich möchte jetzt ein AFSK Modem mit einem AVR bauen. Zunächst das 
"standard" AFSK mit 1200 bit/s im Audiofrequenzbereich.

Später möchte ich das auf MFSK ausbauen und 16 Töne um 100 KHz und eine 
höhere Baudrate verwenden.
2400 Baud x 4 Bit/Schritt = 9,6 kbit/s.

Welche Möglichkeiten habe ich, mit einem AVR 16 verschiedene 
Töne/Frequenzen zu detektieren?
Für eine FFT dürfte ein kleiner AVR ATMega wohl zu langsam sein?

Welche Möglichkeiten hätte ich?`

Ich möchte ein TFA Fernwirksystem (Cenlec B Band) bauen.

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit, die mir noch bekannt ist, ist die gemessenen Werte in 
mehrere Ringpuffer zu schreiben. Dabei werden Werte auf die bestehenden 
aufaddiert (Wertebereich muss angemessen groß und die Arithmetik mit 
Sättigung ausgeführt werden).

Der Trick sind die Längen der Ringpuffer, für jede gesuchte Frequenz 
gibt es einen Puffer der genau so lange wie eine Vollwelle bei der 
Samplerate dauert.

Wenn die Frequenz genau zum Puffer passt, hast du eine stehende Welle 
und damit durch die Addition viele betragsmäßig große Werte im Puffer. 
Erkennen kann man das etwa durch Summe der Quadrate aller Werte im 
Puffer.


Ich habe nur mal darüber gelesen, nicht selber implementiert, also gibt 
es bestimmt Verbesserungsmöglichkeiten gegenüber dem, was ich hier 
geschrieben habe. Und ob ein AVR das bei 16 Frequenzen packt, hab ich 
mir jetzt nicht überlegt.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum 100 kHz?

Autor: Christian Berger (casandro) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der klassische Weg ist da mit einem PLL.

Sprich der erste Schritt ist eine sogenannte DDS. Die funktioniert so:
Du hat einen Zähler z den Du bei jedem Schritt um f erhöhst und der 
irgendwann mal überläuft. Du bildest dann sin(z) und hat ein Signal mit 
einer Frequenz welche proportional zu f ist. Die Frequenz kannst Du dann 
wechseln und bekommt immer ein Signal ohne Sprünge.
Für den Modulator filterst Du Dein ASK-Signal und nimmst den momentanen 
Ausgang des Filters als Frequenz.

Beim Demodulator machst Du dann folgendes, Du baust damit eine PLL:
Wie oben baust Du einen Zähler z den Du bei jedem Taktschritt um f 
erhöhst. Wenn Dein Eingang i ist, so bildest Du für jedes Sample 
i*sin(z) sowie i*cos(z)
Beide Werte filterst Du dann tief und regelst damit f so, dass der 
Winkel in den der Vektor (i*sin(z),i*cos(z)) zeigt im Winkel konstant 
bleibt.
Jetzt gibt Dir f die Momentanfrequenz.

Ja, das ist alles nicht ganz trivial, aber FSK und FM sind halt etwas 
kompliziert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.