Forum: Mikrocontroller und Digitale Elektronik MFSK mit AVR?


von Max (Gast)


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.

von Andreas B. (Gast)


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.

von Martin (Gast)


Lesenswert?

Warum 100 kHz?

von Christian B. (casandro)


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.

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.